diff --git a/.gitignore b/.gitignore index 86148ec..d6037ed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .import/ -build/ \ No newline at end of file +build/ +ngio.ini +scoreboard_host.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml.disabled similarity index 100% rename from .gitlab-ci.yml rename to .gitlab-ci.yml.disabled diff --git a/.import/.gdignore b/.import/.gdignore deleted file mode 100644 index 8b13789..0000000 --- a/.import/.gdignore +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.import/16color_uv_map.png-df63502cb1f1e075959c28e0cfc8f23e.md5 b/.import/16color_uv_map.png-df63502cb1f1e075959c28e0cfc8f23e.md5 deleted file mode 100644 index fe9cd78..0000000 --- a/.import/16color_uv_map.png-df63502cb1f1e075959c28e0cfc8f23e.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="594555e2c22caa9c1b92e03613253660" -dest_md5="e35df6dc7b881ee34e3fe4ae7fd3ee6e" - diff --git a/.import/16color_uv_map.png-df63502cb1f1e075959c28e0cfc8f23e.stex b/.import/16color_uv_map.png-df63502cb1f1e075959c28e0cfc8f23e.stex deleted file mode 100644 index 2b41a4a..0000000 Binary files a/.import/16color_uv_map.png-df63502cb1f1e075959c28e0cfc8f23e.stex and /dev/null differ diff --git a/.import/2ndpuberty..png-fcb093b956485853b52b89a083af493a.md5 b/.import/2ndpuberty..png-fcb093b956485853b52b89a083af493a.md5 deleted file mode 100644 index c79a876..0000000 --- a/.import/2ndpuberty..png-fcb093b956485853b52b89a083af493a.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="7b4e98ed7fdbd47d496d1542223b3061" -dest_md5="ddc3228c927c9a31507b6b89ee41301a" - diff --git a/.import/2ndpuberty..png-fcb093b956485853b52b89a083af493a.stex b/.import/2ndpuberty..png-fcb093b956485853b52b89a083af493a.stex deleted file mode 100644 index 9ed69db..0000000 Binary files a/.import/2ndpuberty..png-fcb093b956485853b52b89a083af493a.stex and /dev/null differ diff --git a/.import/a_bmilc.ogg-cb786a4aec8fbf031b4e9635d452a4a8.md5 b/.import/a_bmilc.ogg-cb786a4aec8fbf031b4e9635d452a4a8.md5 deleted file mode 100644 index 055875c..0000000 --- a/.import/a_bmilc.ogg-cb786a4aec8fbf031b4e9635d452a4a8.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="aae4d9080cda2af11aae2b25993aac03" -dest_md5="2412ee1c23b047e2192d7cc8f095add3" - diff --git a/.import/a_bmilc.ogg-cb786a4aec8fbf031b4e9635d452a4a8.oggstr b/.import/a_bmilc.ogg-cb786a4aec8fbf031b4e9635d452a4a8.oggstr deleted file mode 100644 index d2625ad..0000000 Binary files a/.import/a_bmilc.ogg-cb786a4aec8fbf031b4e9635d452a4a8.oggstr and /dev/null differ diff --git a/.import/a_bree.wav-6a217455eb3593edcc27ac957b5c6218.md5 b/.import/a_bree.wav-6a217455eb3593edcc27ac957b5c6218.md5 deleted file mode 100644 index 1a7f8fa..0000000 --- a/.import/a_bree.wav-6a217455eb3593edcc27ac957b5c6218.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="f054210203aa705ec9b4b5b4e53b13f0" -dest_md5="2306656825af0907fd3c08c11a03f630" - diff --git a/.import/a_bree.wav-6a217455eb3593edcc27ac957b5c6218.sample b/.import/a_bree.wav-6a217455eb3593edcc27ac957b5c6218.sample deleted file mode 100644 index d81d5e0..0000000 Binary files a/.import/a_bree.wav-6a217455eb3593edcc27ac957b5c6218.sample and /dev/null differ diff --git a/.import/a_climb.ogg-478222e5725714de088f1c4b609997c5.md5 b/.import/a_climb.ogg-478222e5725714de088f1c4b609997c5.md5 deleted file mode 100644 index 40dbc7a..0000000 --- a/.import/a_climb.ogg-478222e5725714de088f1c4b609997c5.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="c779d6ac7cad1bad668c4dcb61365e3f" -dest_md5="8d95d1281197e9da0a9f59a0b213469e" - diff --git a/.import/a_climb.ogg-478222e5725714de088f1c4b609997c5.oggstr b/.import/a_climb.ogg-478222e5725714de088f1c4b609997c5.oggstr deleted file mode 100644 index 042f548..0000000 Binary files a/.import/a_climb.ogg-478222e5725714de088f1c4b609997c5.oggstr and /dev/null differ diff --git a/.import/a_egg_collect.ogg-7a1c2c7d5367f0237f278d4b2cb750fc.md5 b/.import/a_egg_collect.ogg-7a1c2c7d5367f0237f278d4b2cb750fc.md5 deleted file mode 100644 index 15f4b97..0000000 --- a/.import/a_egg_collect.ogg-7a1c2c7d5367f0237f278d4b2cb750fc.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="cefcc262207f6a82b9fe087e6c00c834" -dest_md5="9602c94358d82f97c04cdccd20c0fcbc" - diff --git a/.import/a_egg_collect.ogg-7a1c2c7d5367f0237f278d4b2cb750fc.oggstr b/.import/a_egg_collect.ogg-7a1c2c7d5367f0237f278d4b2cb750fc.oggstr deleted file mode 100644 index 755d19c..0000000 Binary files a/.import/a_egg_collect.ogg-7a1c2c7d5367f0237f278d4b2cb750fc.oggstr and /dev/null differ diff --git a/.import/a_egg_shoot.ogg-a189d93f991049e0cd06f6e0d7340395.md5 b/.import/a_egg_shoot.ogg-a189d93f991049e0cd06f6e0d7340395.md5 deleted file mode 100644 index 724b85d..0000000 --- a/.import/a_egg_shoot.ogg-a189d93f991049e0cd06f6e0d7340395.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="445ece771f313ea59f896c5971a9de9e" -dest_md5="a6e4165a03954c5d6c14282809b1cfdc" - diff --git a/.import/a_egg_shoot.ogg-a189d93f991049e0cd06f6e0d7340395.oggstr b/.import/a_egg_shoot.ogg-a189d93f991049e0cd06f6e0d7340395.oggstr deleted file mode 100644 index 9a54197..0000000 Binary files a/.import/a_egg_shoot.ogg-a189d93f991049e0cd06f6e0d7340395.oggstr and /dev/null differ diff --git a/.import/a_hurt.ogg-a562e9409cf963b74445d6ea13ce9354.md5 b/.import/a_hurt.ogg-a562e9409cf963b74445d6ea13ce9354.md5 deleted file mode 100644 index 2477438..0000000 --- a/.import/a_hurt.ogg-a562e9409cf963b74445d6ea13ce9354.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="0837cb6ec551daab4fa5f117ec3033f4" -dest_md5="42ebf02c3d91547961debd02d9710063" - diff --git a/.import/a_hurt.ogg-a562e9409cf963b74445d6ea13ce9354.oggstr b/.import/a_hurt.ogg-a562e9409cf963b74445d6ea13ce9354.oggstr deleted file mode 100644 index 94fdc0e..0000000 Binary files a/.import/a_hurt.ogg-a562e9409cf963b74445d6ea13ce9354.oggstr and /dev/null differ diff --git a/.import/a_jinjo.ogg-4b16bf4d913dc9acb601fc4cd65887c1.md5 b/.import/a_jinjo.ogg-4b16bf4d913dc9acb601fc4cd65887c1.md5 deleted file mode 100644 index e3806fd..0000000 --- a/.import/a_jinjo.ogg-4b16bf4d913dc9acb601fc4cd65887c1.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="0400e19a2fa485f9c0d8b833a79e396b" -dest_md5="408862312b7ffba0f4e428ab61158f59" - diff --git a/.import/a_jinjo.ogg-4b16bf4d913dc9acb601fc4cd65887c1.oggstr b/.import/a_jinjo.ogg-4b16bf4d913dc9acb601fc4cd65887c1.oggstr deleted file mode 100644 index 7d69cc2..0000000 Binary files a/.import/a_jinjo.ogg-4b16bf4d913dc9acb601fc4cd65887c1.oggstr and /dev/null differ diff --git a/.import/arrow.png-11415057882cccf873402d42cfed3df7.md5 b/.import/arrow.png-11415057882cccf873402d42cfed3df7.md5 deleted file mode 100644 index a76c926..0000000 --- a/.import/arrow.png-11415057882cccf873402d42cfed3df7.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="589e927fe81ba35082a1f5602752fc65" -dest_md5="9ae7ca9045ade117b152945398b6fc11" - diff --git a/.import/arrow.png-11415057882cccf873402d42cfed3df7.stex b/.import/arrow.png-11415057882cccf873402d42cfed3df7.stex deleted file mode 100644 index 372cb19..0000000 Binary files a/.import/arrow.png-11415057882cccf873402d42cfed3df7.stex and /dev/null differ diff --git a/.import/barrier.png-fbbb67e21c4c49b8e2ff2b05beaf4f67.md5 b/.import/barrier.png-fbbb67e21c4c49b8e2ff2b05beaf4f67.md5 deleted file mode 100644 index fe534ca..0000000 --- a/.import/barrier.png-fbbb67e21c4c49b8e2ff2b05beaf4f67.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="b423e4409c04e8f40536057bdb6ebacb" -dest_md5="62a265ebfd47231e608953dd0d270de7" - diff --git a/.import/barrier.png-fbbb67e21c4c49b8e2ff2b05beaf4f67.stex b/.import/barrier.png-fbbb67e21c4c49b8e2ff2b05beaf4f67.stex deleted file mode 100644 index 15b4e11..0000000 Binary files a/.import/barrier.png-fbbb67e21c4c49b8e2ff2b05beaf4f67.stex and /dev/null differ diff --git a/.import/barrier_2px.png-471522c3a6235b97f30314aef2b04619.md5 b/.import/barrier_2px.png-471522c3a6235b97f30314aef2b04619.md5 deleted file mode 100644 index f8f302f..0000000 --- a/.import/barrier_2px.png-471522c3a6235b97f30314aef2b04619.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="ad86b83e2fd56ca2374f293cbcb17853" -dest_md5="a7728af58a624b5da2e618b0c71442f4" - diff --git a/.import/barrier_2px.png-471522c3a6235b97f30314aef2b04619.stex b/.import/barrier_2px.png-471522c3a6235b97f30314aef2b04619.stex deleted file mode 100644 index 01240ee..0000000 Binary files a/.import/barrier_2px.png-471522c3a6235b97f30314aef2b04619.stex and /dev/null differ diff --git a/.import/bat.png-736f06aa9f4565db6a04c3fc0d0ebab3.md5 b/.import/bat.png-736f06aa9f4565db6a04c3fc0d0ebab3.md5 deleted file mode 100644 index 090f510..0000000 --- a/.import/bat.png-736f06aa9f4565db6a04c3fc0d0ebab3.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="fa3285b3a224412bc02b4acaa1db6629" -dest_md5="bc83e400e402b2929634eca9658dbca3" - diff --git a/.import/bat.png-736f06aa9f4565db6a04c3fc0d0ebab3.stex b/.import/bat.png-736f06aa9f4565db6a04c3fc0d0ebab3.stex deleted file mode 100644 index 69f27fb..0000000 Binary files a/.import/bat.png-736f06aa9f4565db6a04c3fc0d0ebab3.stex and /dev/null differ diff --git a/.import/block.png-6c3011ecb25b7007af8a33748dd77d74.md5 b/.import/block.png-6c3011ecb25b7007af8a33748dd77d74.md5 deleted file mode 100644 index 74a2fda..0000000 --- a/.import/block.png-6c3011ecb25b7007af8a33748dd77d74.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="a3b3cf438c4ab4d9c656c86f5239d0dd" -dest_md5="48c09d999caeb12e4d5d8ea57cc76a72" - diff --git a/.import/block.png-6c3011ecb25b7007af8a33748dd77d74.stex b/.import/block.png-6c3011ecb25b7007af8a33748dd77d74.stex deleted file mode 100644 index 848f8a1..0000000 Binary files a/.import/block.png-6c3011ecb25b7007af8a33748dd77d74.stex and /dev/null differ diff --git a/.import/block_text.png-33d1b26072b03aec254213ead1bd7b44.md5 b/.import/block_text.png-33d1b26072b03aec254213ead1bd7b44.md5 deleted file mode 100644 index 74a2fda..0000000 --- a/.import/block_text.png-33d1b26072b03aec254213ead1bd7b44.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="a3b3cf438c4ab4d9c656c86f5239d0dd" -dest_md5="48c09d999caeb12e4d5d8ea57cc76a72" - diff --git a/.import/block_text.png-33d1b26072b03aec254213ead1bd7b44.stex b/.import/block_text.png-33d1b26072b03aec254213ead1bd7b44.stex deleted file mode 100644 index 848f8a1..0000000 Binary files a/.import/block_text.png-33d1b26072b03aec254213ead1bd7b44.stex and /dev/null differ diff --git a/.import/blue_sky.png-5fabec06a64b73d7d6811ca494f5ae58.md5 b/.import/blue_sky.png-5fabec06a64b73d7d6811ca494f5ae58.md5 deleted file mode 100644 index 57eb386..0000000 --- a/.import/blue_sky.png-5fabec06a64b73d7d6811ca494f5ae58.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="cfaa6a7e072c87c21abf404db7a7b458" -dest_md5="eb1b07fa62e8eaef545f4a11998740f3" - diff --git a/.import/blue_sky.png-5fabec06a64b73d7d6811ca494f5ae58.stex b/.import/blue_sky.png-5fabec06a64b73d7d6811ca494f5ae58.stex deleted file mode 100644 index 6f474e1..0000000 Binary files a/.import/blue_sky.png-5fabec06a64b73d7d6811ca494f5ae58.stex and /dev/null differ diff --git a/.import/cave.png-453d1492f7a12007a61b71cc1e5f2b93.md5 b/.import/cave.png-453d1492f7a12007a61b71cc1e5f2b93.md5 deleted file mode 100644 index 091d2af..0000000 --- a/.import/cave.png-453d1492f7a12007a61b71cc1e5f2b93.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="43e86f36af66b60a97c5bc72b3ccdde0" -dest_md5="64ae32fc889df051b035c0114ce55022" - diff --git a/.import/cave.png-453d1492f7a12007a61b71cc1e5f2b93.stex b/.import/cave.png-453d1492f7a12007a61b71cc1e5f2b93.stex deleted file mode 100644 index 15b19f6..0000000 Binary files a/.import/cave.png-453d1492f7a12007a61b71cc1e5f2b93.stex and /dev/null differ diff --git a/.import/cave.png-b16f6dab3533202eb4820e5dc612ba6f.md5 b/.import/cave.png-b16f6dab3533202eb4820e5dc612ba6f.md5 deleted file mode 100644 index 7737ada..0000000 --- a/.import/cave.png-b16f6dab3533202eb4820e5dc612ba6f.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="62dd9327155d5a04e8362c66e985126f" -dest_md5="a5f7a9c5e5276b0c84ae7dbb423ab864" - diff --git a/.import/cave.png-b16f6dab3533202eb4820e5dc612ba6f.stex b/.import/cave.png-b16f6dab3533202eb4820e5dc612ba6f.stex deleted file mode 100644 index 0a6dbad..0000000 Binary files a/.import/cave.png-b16f6dab3533202eb4820e5dc612ba6f.stex and /dev/null differ diff --git a/.import/coin.png-7383acb180f9a15659a35c039ad60022.md5 b/.import/coin.png-7383acb180f9a15659a35c039ad60022.md5 deleted file mode 100644 index 2581980..0000000 --- a/.import/coin.png-7383acb180f9a15659a35c039ad60022.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="41109662beddb955f3ab039efe629451" -dest_md5="829f0b1cc31df685cda8bac4820bc8b9" - diff --git a/.import/coin.png-7383acb180f9a15659a35c039ad60022.stex b/.import/coin.png-7383acb180f9a15659a35c039ad60022.stex deleted file mode 100644 index f61e385..0000000 Binary files a/.import/coin.png-7383acb180f9a15659a35c039ad60022.stex and /dev/null differ diff --git a/.import/exit.png-5434234d068c5cc7b377eff51dc629c9.md5 b/.import/exit.png-5434234d068c5cc7b377eff51dc629c9.md5 deleted file mode 100644 index 6d7599f..0000000 --- a/.import/exit.png-5434234d068c5cc7b377eff51dc629c9.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="53eae53c845ca81da656334b40f6ed43" -dest_md5="0a529cf5ba7482e509a961ed81c55abd" - diff --git a/.import/exit.png-5434234d068c5cc7b377eff51dc629c9.stex b/.import/exit.png-5434234d068c5cc7b377eff51dc629c9.stex deleted file mode 100644 index a1a033f..0000000 Binary files a/.import/exit.png-5434234d068c5cc7b377eff51dc629c9.stex and /dev/null differ diff --git a/.import/grass.png-4e90a4e3fdfeb91bdade83e0d1eb7d47.md5 b/.import/grass.png-4e90a4e3fdfeb91bdade83e0d1eb7d47.md5 deleted file mode 100644 index aa8754d..0000000 --- a/.import/grass.png-4e90a4e3fdfeb91bdade83e0d1eb7d47.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="4de648abb772dd3fb3dbe1f8e48f6efa" -dest_md5="eddab9bfc554f2cac9d4f7deee59d744" - diff --git a/.import/grass.png-4e90a4e3fdfeb91bdade83e0d1eb7d47.stex b/.import/grass.png-4e90a4e3fdfeb91bdade83e0d1eb7d47.stex deleted file mode 100644 index f877b74..0000000 Binary files a/.import/grass.png-4e90a4e3fdfeb91bdade83e0d1eb7d47.stex and /dev/null differ diff --git a/.import/hud.png-d633f5249ccc091a7e592fabc835a18c.md5 b/.import/hud.png-d633f5249ccc091a7e592fabc835a18c.md5 deleted file mode 100644 index b6988a3..0000000 --- a/.import/hud.png-d633f5249ccc091a7e592fabc835a18c.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="f63c0b618e4029ab7db46130a39050bc" -dest_md5="5ae15f7f93ebb7667d6cf1268987bb99" - diff --git a/.import/hud.png-d633f5249ccc091a7e592fabc835a18c.stex b/.import/hud.png-d633f5249ccc091a7e592fabc835a18c.stex deleted file mode 100644 index e39c5ca..0000000 Binary files a/.import/hud.png-d633f5249ccc091a7e592fabc835a18c.stex and /dev/null differ diff --git a/.import/hud_old.png-375dbe46e18dedab40b4fcb3c0bcf043.md5 b/.import/hud_old.png-375dbe46e18dedab40b4fcb3c0bcf043.md5 deleted file mode 100644 index 10feeaa..0000000 --- a/.import/hud_old.png-375dbe46e18dedab40b4fcb3c0bcf043.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="c8db8b1c88764e5a7f5a5a1f7fb47a41" -dest_md5="7620ce6045a282839caeaf946382dd77" - diff --git a/.import/hud_old.png-375dbe46e18dedab40b4fcb3c0bcf043.stex b/.import/hud_old.png-375dbe46e18dedab40b4fcb3c0bcf043.stex deleted file mode 100644 index 0e4502c..0000000 Binary files a/.import/hud_old.png-375dbe46e18dedab40b4fcb3c0bcf043.stex and /dev/null differ diff --git a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 deleted file mode 100644 index 13deb8b..0000000 --- a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="bb52594ca1df00f873ba285f25caa7fa" -dest_md5="1544aad5fd52648e6dbddf38d4219520" - diff --git a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex deleted file mode 100644 index bd57c06..0000000 Binary files a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex and /dev/null differ diff --git a/.import/jump.ogg-3d03825ba28b5d65e7ecc96d371fc49a.md5 b/.import/jump.ogg-3d03825ba28b5d65e7ecc96d371fc49a.md5 deleted file mode 100644 index 67b3fcf..0000000 --- a/.import/jump.ogg-3d03825ba28b5d65e7ecc96d371fc49a.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="2f722d590000bcd4105c435d63c56d62" -dest_md5="468e5c7dc047d4c3f4a5678e109654c7" - diff --git a/.import/jump.ogg-3d03825ba28b5d65e7ecc96d371fc49a.oggstr b/.import/jump.ogg-3d03825ba28b5d65e7ecc96d371fc49a.oggstr deleted file mode 100644 index f8258d4..0000000 Binary files a/.import/jump.ogg-3d03825ba28b5d65e7ecc96d371fc49a.oggstr and /dev/null differ diff --git a/.import/jump.png-1685d5a7192aa1095a0402ec08744a1b.md5 b/.import/jump.png-1685d5a7192aa1095a0402ec08744a1b.md5 deleted file mode 100644 index 1b1a7aa..0000000 --- a/.import/jump.png-1685d5a7192aa1095a0402ec08744a1b.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="1b85070293b719f90ff15fcdc27a9962" -dest_md5="d013488aed16c9f4964b962857331fa7" - diff --git a/.import/jump.png-1685d5a7192aa1095a0402ec08744a1b.stex b/.import/jump.png-1685d5a7192aa1095a0402ec08744a1b.stex deleted file mode 100644 index e8c80b2..0000000 Binary files a/.import/jump.png-1685d5a7192aa1095a0402ec08744a1b.stex and /dev/null differ diff --git a/.import/jump.png-695d33639e35e024c8003771673e09df.md5 b/.import/jump.png-695d33639e35e024c8003771673e09df.md5 deleted file mode 100644 index 56f59d1..0000000 --- a/.import/jump.png-695d33639e35e024c8003771673e09df.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="7ef8fdbdf0c335ff21028efb745976a0" -dest_md5="61d8df76b946c9d135b8855bf8074db7" - diff --git a/.import/jump.png-695d33639e35e024c8003771673e09df.stex b/.import/jump.png-695d33639e35e024c8003771673e09df.stex deleted file mode 100644 index 84ccc55..0000000 Binary files a/.import/jump.png-695d33639e35e024c8003771673e09df.stex and /dev/null differ diff --git a/.import/jump.png-f758f12e4e782ceb59529e4c0b409edb.md5 b/.import/jump.png-f758f12e4e782ceb59529e4c0b409edb.md5 deleted file mode 100644 index 56f59d1..0000000 --- a/.import/jump.png-f758f12e4e782ceb59529e4c0b409edb.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="7ef8fdbdf0c335ff21028efb745976a0" -dest_md5="61d8df76b946c9d135b8855bf8074db7" - diff --git a/.import/jump.png-f758f12e4e782ceb59529e4c0b409edb.stex b/.import/jump.png-f758f12e4e782ceb59529e4c0b409edb.stex deleted file mode 100644 index 84ccc55..0000000 Binary files a/.import/jump.png-f758f12e4e782ceb59529e4c0b409edb.stex and /dev/null differ diff --git a/.import/levelselect_arrow.png-6a165a1051a0c8d94781310f1fd64758.md5 b/.import/levelselect_arrow.png-6a165a1051a0c8d94781310f1fd64758.md5 deleted file mode 100644 index a84d45f..0000000 --- a/.import/levelselect_arrow.png-6a165a1051a0c8d94781310f1fd64758.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="5df0186c7efc418aab4bbbb4a607225e" -dest_md5="8a5ed461e0767c5bdc12db58e6743e05" - diff --git a/.import/levelselect_arrow.png-6a165a1051a0c8d94781310f1fd64758.stex b/.import/levelselect_arrow.png-6a165a1051a0c8d94781310f1fd64758.stex deleted file mode 100644 index 3bc7b76..0000000 Binary files a/.import/levelselect_arrow.png-6a165a1051a0c8d94781310f1fd64758.stex and /dev/null differ diff --git a/.import/levelselect_border.png-11192234a11b3fa8b5fde8905419f955.md5 b/.import/levelselect_border.png-11192234a11b3fa8b5fde8905419f955.md5 deleted file mode 100644 index a33c002..0000000 --- a/.import/levelselect_border.png-11192234a11b3fa8b5fde8905419f955.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="5d11ec7621772ba701c050f01d67583a" -dest_md5="39fa25b6bddfa7660a03f438684583ae" - diff --git a/.import/levelselect_border.png-11192234a11b3fa8b5fde8905419f955.stex b/.import/levelselect_border.png-11192234a11b3fa8b5fde8905419f955.stex deleted file mode 100644 index 79f83d0..0000000 Binary files a/.import/levelselect_border.png-11192234a11b3fa8b5fde8905419f955.stex and /dev/null differ diff --git a/.import/levelselect_nexlevel.png-7b5414d44097edee437881d0f20be3ce.md5 b/.import/levelselect_nexlevel.png-7b5414d44097edee437881d0f20be3ce.md5 deleted file mode 100644 index beb64fc..0000000 --- a/.import/levelselect_nexlevel.png-7b5414d44097edee437881d0f20be3ce.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="34535b07495be808914a380f90fd87e7" -dest_md5="79a7df7ae2329a369be13218be8e7abb" - diff --git a/.import/levelselect_nexlevel.png-7b5414d44097edee437881d0f20be3ce.stex b/.import/levelselect_nexlevel.png-7b5414d44097edee437881d0f20be3ce.stex deleted file mode 100644 index fced77a..0000000 Binary files a/.import/levelselect_nexlevel.png-7b5414d44097edee437881d0f20be3ce.stex and /dev/null differ diff --git a/.import/mockup hud.png-692bec9bf3259505e14bde69f0cdea49.md5 b/.import/mockup hud.png-692bec9bf3259505e14bde69f0cdea49.md5 deleted file mode 100644 index 4e3a002..0000000 --- a/.import/mockup hud.png-692bec9bf3259505e14bde69f0cdea49.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="4a206b00361f66dc7845f8f9e20bd5ec" -dest_md5="356e43465cb5da46d2a444b98dbecea8" - diff --git a/.import/mockup hud.png-692bec9bf3259505e14bde69f0cdea49.stex b/.import/mockup hud.png-692bec9bf3259505e14bde69f0cdea49.stex deleted file mode 100644 index fda8cbd..0000000 Binary files a/.import/mockup hud.png-692bec9bf3259505e14bde69f0cdea49.stex and /dev/null differ diff --git a/.import/monopoly.png-910643831d67dfa2bec184b1ef67b679.md5 b/.import/monopoly.png-910643831d67dfa2bec184b1ef67b679.md5 deleted file mode 100644 index a4451e6..0000000 --- a/.import/monopoly.png-910643831d67dfa2bec184b1ef67b679.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="5f9377352fdc775917fc6d76e60bf6ee" -dest_md5="c4426b0fb075f9c0c4f1f6562b87d2e3" - diff --git a/.import/monopoly.png-910643831d67dfa2bec184b1ef67b679.stex b/.import/monopoly.png-910643831d67dfa2bec184b1ef67b679.stex deleted file mode 100644 index 850b81a..0000000 Binary files a/.import/monopoly.png-910643831d67dfa2bec184b1ef67b679.stex and /dev/null differ diff --git a/.import/pal_dime.png-c3cfda8a4b0f7f1e34b94571af5f2aff.md5 b/.import/pal_dime.png-c3cfda8a4b0f7f1e34b94571af5f2aff.md5 deleted file mode 100644 index 6dd3384..0000000 --- a/.import/pal_dime.png-c3cfda8a4b0f7f1e34b94571af5f2aff.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="c47290ad5f1e139acea4a8ee34bb5272" -dest_md5="8beccdb709117e357df62a869effa143" - diff --git a/.import/pal_dime.png-c3cfda8a4b0f7f1e34b94571af5f2aff.stex b/.import/pal_dime.png-c3cfda8a4b0f7f1e34b94571af5f2aff.stex deleted file mode 100644 index 3e9fcac..0000000 Binary files a/.import/pal_dime.png-c3cfda8a4b0f7f1e34b94571af5f2aff.stex and /dev/null differ diff --git a/.import/pal_nickel.png-3d18346d4db1a8718745e6c08c14cc43.md5 b/.import/pal_nickel.png-3d18346d4db1a8718745e6c08c14cc43.md5 deleted file mode 100644 index 48bdef0..0000000 --- a/.import/pal_nickel.png-3d18346d4db1a8718745e6c08c14cc43.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="795eac72790ee88d49beddf832b3097a" -dest_md5="13de4e60f76f93b85e3985d202d230fa" - diff --git a/.import/pal_nickel.png-3d18346d4db1a8718745e6c08c14cc43.stex b/.import/pal_nickel.png-3d18346d4db1a8718745e6c08c14cc43.stex deleted file mode 100644 index 442ab5e..0000000 Binary files a/.import/pal_nickel.png-3d18346d4db1a8718745e6c08c14cc43.stex and /dev/null differ diff --git a/.import/pal_penny.png-2878f646b27e25b7bf3c37aa3de7b04b.md5 b/.import/pal_penny.png-2878f646b27e25b7bf3c37aa3de7b04b.md5 deleted file mode 100644 index 42903c0..0000000 --- a/.import/pal_penny.png-2878f646b27e25b7bf3c37aa3de7b04b.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="1c29c7c981140e33a1f098dced089402" -dest_md5="12c36ec724f1dfc72bc17c966aba579d" - diff --git a/.import/pal_penny.png-2878f646b27e25b7bf3c37aa3de7b04b.stex b/.import/pal_penny.png-2878f646b27e25b7bf3c37aa3de7b04b.stex deleted file mode 100644 index 5f13a13..0000000 Binary files a/.import/pal_penny.png-2878f646b27e25b7bf3c37aa3de7b04b.stex and /dev/null differ diff --git a/.import/pal_purplearmor.png-0894c7036499faf14d872d56dba1c18a.md5 b/.import/pal_purplearmor.png-0894c7036499faf14d872d56dba1c18a.md5 deleted file mode 100644 index 294eec9..0000000 --- a/.import/pal_purplearmor.png-0894c7036499faf14d872d56dba1c18a.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="bae264ef795216ac097995eb4a8318a0" -dest_md5="510dc415ac2b127f72435cbd356bb19b" - diff --git a/.import/pal_purplearmor.png-0894c7036499faf14d872d56dba1c18a.stex b/.import/pal_purplearmor.png-0894c7036499faf14d872d56dba1c18a.stex deleted file mode 100644 index 106af54..0000000 Binary files a/.import/pal_purplearmor.png-0894c7036499faf14d872d56dba1c18a.stex and /dev/null differ diff --git a/.import/pal_purplearmor.png-4be1df2c9bcaa98882b0b62f01cb851a.md5 b/.import/pal_purplearmor.png-4be1df2c9bcaa98882b0b62f01cb851a.md5 deleted file mode 100644 index 5b5e1fc..0000000 --- a/.import/pal_purplearmor.png-4be1df2c9bcaa98882b0b62f01cb851a.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="8fc881edcb39ccf0758b9ec711989795" -dest_md5="7f140056d488b97e7bef07fd1560499a" - diff --git a/.import/pal_purplearmor.png-4be1df2c9bcaa98882b0b62f01cb851a.stex b/.import/pal_purplearmor.png-4be1df2c9bcaa98882b0b62f01cb851a.stex deleted file mode 100644 index 75b9783..0000000 Binary files a/.import/pal_purplearmor.png-4be1df2c9bcaa98882b0b62f01cb851a.stex and /dev/null differ diff --git a/.import/pal_star_blue.png-05c550b35365c1382fa23df6191e0d97.md5 b/.import/pal_star_blue.png-05c550b35365c1382fa23df6191e0d97.md5 deleted file mode 100644 index c795f98..0000000 --- a/.import/pal_star_blue.png-05c550b35365c1382fa23df6191e0d97.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="56ae6e64964f891d076b81a50fe9aef7" -dest_md5="14dafb6deeb75df28ddbbe8373dce40c" - diff --git a/.import/pal_star_blue.png-05c550b35365c1382fa23df6191e0d97.stex b/.import/pal_star_blue.png-05c550b35365c1382fa23df6191e0d97.stex deleted file mode 100644 index 56306d0..0000000 Binary files a/.import/pal_star_blue.png-05c550b35365c1382fa23df6191e0d97.stex and /dev/null differ diff --git a/.import/pal_star_green.png-6e4c05d470736059c575abbe1a12e5aa.md5 b/.import/pal_star_green.png-6e4c05d470736059c575abbe1a12e5aa.md5 deleted file mode 100644 index 44ee5e6..0000000 --- a/.import/pal_star_green.png-6e4c05d470736059c575abbe1a12e5aa.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="b6928f2db9789ed42603a4c32893bdf5" -dest_md5="466db3be455e4ba0692a11540345cb7c" - diff --git a/.import/pal_star_green.png-6e4c05d470736059c575abbe1a12e5aa.stex b/.import/pal_star_green.png-6e4c05d470736059c575abbe1a12e5aa.stex deleted file mode 100644 index ca8b64c..0000000 Binary files a/.import/pal_star_green.png-6e4c05d470736059c575abbe1a12e5aa.stex and /dev/null differ diff --git a/.import/pal_star_magenta.png-c275db529d4c14e60a30ae71c4a2151f.md5 b/.import/pal_star_magenta.png-c275db529d4c14e60a30ae71c4a2151f.md5 deleted file mode 100644 index 82f0b44..0000000 --- a/.import/pal_star_magenta.png-c275db529d4c14e60a30ae71c4a2151f.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="0b1148b46c0c5d4f4402b83c0d0cf829" -dest_md5="0810406e3450eb15a7801181db267f29" - diff --git a/.import/pal_star_magenta.png-c275db529d4c14e60a30ae71c4a2151f.stex b/.import/pal_star_magenta.png-c275db529d4c14e60a30ae71c4a2151f.stex deleted file mode 100644 index 7ff07a4..0000000 Binary files a/.import/pal_star_magenta.png-c275db529d4c14e60a30ae71c4a2151f.stex and /dev/null differ diff --git a/.import/pal_star_red.png-3b2ed35cf01dc5449f63a3d3dc992bd9.md5 b/.import/pal_star_red.png-3b2ed35cf01dc5449f63a3d3dc992bd9.md5 deleted file mode 100644 index 9ca9faa..0000000 --- a/.import/pal_star_red.png-3b2ed35cf01dc5449f63a3d3dc992bd9.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="2de71ad66f0f37037ffb0e6d617e31db" -dest_md5="f81645a4b165156d9c03d110f43e2b06" - diff --git a/.import/pal_star_red.png-3b2ed35cf01dc5449f63a3d3dc992bd9.stex b/.import/pal_star_red.png-3b2ed35cf01dc5449f63a3d3dc992bd9.stex deleted file mode 100644 index 1ad3ad2..0000000 Binary files a/.import/pal_star_red.png-3b2ed35cf01dc5449f63a3d3dc992bd9.stex and /dev/null differ diff --git a/.import/pal_star_yellow.png-30f9452933ab0b4210c1dd8088f9774b.md5 b/.import/pal_star_yellow.png-30f9452933ab0b4210c1dd8088f9774b.md5 deleted file mode 100644 index fd0dd9b..0000000 --- a/.import/pal_star_yellow.png-30f9452933ab0b4210c1dd8088f9774b.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="5b5532afc5f9a1e1e3691fed210a7da7" -dest_md5="0264983583fb9ad0432eb1b2ae0c8c61" - diff --git a/.import/pal_star_yellow.png-30f9452933ab0b4210c1dd8088f9774b.stex b/.import/pal_star_yellow.png-30f9452933ab0b4210c1dd8088f9774b.stex deleted file mode 100644 index e276617..0000000 Binary files a/.import/pal_star_yellow.png-30f9452933ab0b4210c1dd8088f9774b.stex and /dev/null differ diff --git a/.import/pal_sword.png-829182fcc48f6b898083bac5a32184d4.md5 b/.import/pal_sword.png-829182fcc48f6b898083bac5a32184d4.md5 deleted file mode 100644 index 6c97514..0000000 --- a/.import/pal_sword.png-829182fcc48f6b898083bac5a32184d4.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="fc014eac57868dbc17501306da02c110" -dest_md5="569811ac7a9fb601453c764606458755" - diff --git a/.import/pal_sword.png-829182fcc48f6b898083bac5a32184d4.stex b/.import/pal_sword.png-829182fcc48f6b898083bac5a32184d4.stex deleted file mode 100644 index 95b42e4..0000000 Binary files a/.import/pal_sword.png-829182fcc48f6b898083bac5a32184d4.stex and /dev/null differ diff --git a/.import/pal_sword.png-ff520d50820aeef50dd3db489d55677f.md5 b/.import/pal_sword.png-ff520d50820aeef50dd3db489d55677f.md5 deleted file mode 100644 index 6c97514..0000000 --- a/.import/pal_sword.png-ff520d50820aeef50dd3db489d55677f.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="fc014eac57868dbc17501306da02c110" -dest_md5="569811ac7a9fb601453c764606458755" - diff --git a/.import/pal_sword.png-ff520d50820aeef50dd3db489d55677f.stex b/.import/pal_sword.png-ff520d50820aeef50dd3db489d55677f.stex deleted file mode 100644 index 95b42e4..0000000 Binary files a/.import/pal_sword.png-ff520d50820aeef50dd3db489d55677f.stex and /dev/null differ diff --git a/.import/pal_sword_gold.png-00c27853a324f2c5a0dbbe0dd32019c5.md5 b/.import/pal_sword_gold.png-00c27853a324f2c5a0dbbe0dd32019c5.md5 deleted file mode 100644 index 8dcd040..0000000 --- a/.import/pal_sword_gold.png-00c27853a324f2c5a0dbbe0dd32019c5.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="16511dc5b35e1f6de7b6ec1048631f08" -dest_md5="68acc4f761458e3d4bd419729579dfe7" - diff --git a/.import/pal_sword_gold.png-00c27853a324f2c5a0dbbe0dd32019c5.stex b/.import/pal_sword_gold.png-00c27853a324f2c5a0dbbe0dd32019c5.stex deleted file mode 100644 index b5f3f35..0000000 Binary files a/.import/pal_sword_gold.png-00c27853a324f2c5a0dbbe0dd32019c5.stex and /dev/null differ diff --git a/.import/pal_sword_gold.png-4dfff1cfa17ec4773c16496398de6e0a.md5 b/.import/pal_sword_gold.png-4dfff1cfa17ec4773c16496398de6e0a.md5 deleted file mode 100644 index 8dcd040..0000000 --- a/.import/pal_sword_gold.png-4dfff1cfa17ec4773c16496398de6e0a.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="16511dc5b35e1f6de7b6ec1048631f08" -dest_md5="68acc4f761458e3d4bd419729579dfe7" - diff --git a/.import/pal_sword_gold.png-4dfff1cfa17ec4773c16496398de6e0a.stex b/.import/pal_sword_gold.png-4dfff1cfa17ec4773c16496398de6e0a.stex deleted file mode 100644 index b5f3f35..0000000 Binary files a/.import/pal_sword_gold.png-4dfff1cfa17ec4773c16496398de6e0a.stex and /dev/null differ diff --git a/.import/pal_sword_red.png-2f6f5e5d4e6d7df25310a4e7290dbe25.md5 b/.import/pal_sword_red.png-2f6f5e5d4e6d7df25310a4e7290dbe25.md5 deleted file mode 100644 index 47576c5..0000000 --- a/.import/pal_sword_red.png-2f6f5e5d4e6d7df25310a4e7290dbe25.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="d0ebfa88420545cde135bfe068b51d53" -dest_md5="b99d58c481d8fa242bfbb87dd4c7ee32" - diff --git a/.import/pal_sword_red.png-2f6f5e5d4e6d7df25310a4e7290dbe25.stex b/.import/pal_sword_red.png-2f6f5e5d4e6d7df25310a4e7290dbe25.stex deleted file mode 100644 index 879bcce..0000000 Binary files a/.import/pal_sword_red.png-2f6f5e5d4e6d7df25310a4e7290dbe25.stex and /dev/null differ diff --git a/.import/pal_sword_red.png-86f2457050c742d98eba3504866e4f34.md5 b/.import/pal_sword_red.png-86f2457050c742d98eba3504866e4f34.md5 deleted file mode 100644 index 47576c5..0000000 --- a/.import/pal_sword_red.png-86f2457050c742d98eba3504866e4f34.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="d0ebfa88420545cde135bfe068b51d53" -dest_md5="b99d58c481d8fa242bfbb87dd4c7ee32" - diff --git a/.import/pal_sword_red.png-86f2457050c742d98eba3504866e4f34.stex b/.import/pal_sword_red.png-86f2457050c742d98eba3504866e4f34.stex deleted file mode 100644 index 879bcce..0000000 Binary files a/.import/pal_sword_red.png-86f2457050c742d98eba3504866e4f34.stex and /dev/null differ diff --git a/.import/pal_sword_teal.png-7b86a22ab3268aada8bbe3001555234b.md5 b/.import/pal_sword_teal.png-7b86a22ab3268aada8bbe3001555234b.md5 deleted file mode 100644 index cda3785..0000000 --- a/.import/pal_sword_teal.png-7b86a22ab3268aada8bbe3001555234b.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="da59cbe5b061022e62f28cd040582193" -dest_md5="11c7e9a26e8b710c1fd8a389a87014a0" - diff --git a/.import/pal_sword_teal.png-7b86a22ab3268aada8bbe3001555234b.stex b/.import/pal_sword_teal.png-7b86a22ab3268aada8bbe3001555234b.stex deleted file mode 100644 index 06192a1..0000000 Binary files a/.import/pal_sword_teal.png-7b86a22ab3268aada8bbe3001555234b.stex and /dev/null differ diff --git a/.import/pal_sword_teal.png-c2b8715f85c3f3be264335534a88c7be.md5 b/.import/pal_sword_teal.png-c2b8715f85c3f3be264335534a88c7be.md5 deleted file mode 100644 index cda3785..0000000 --- a/.import/pal_sword_teal.png-c2b8715f85c3f3be264335534a88c7be.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="da59cbe5b061022e62f28cd040582193" -dest_md5="11c7e9a26e8b710c1fd8a389a87014a0" - diff --git a/.import/pal_sword_teal.png-c2b8715f85c3f3be264335534a88c7be.stex b/.import/pal_sword_teal.png-c2b8715f85c3f3be264335534a88c7be.stex deleted file mode 100644 index 06192a1..0000000 Binary files a/.import/pal_sword_teal.png-c2b8715f85c3f3be264335534a88c7be.stex and /dev/null differ diff --git a/.import/prideborder.png-e0e635543455b3cf3c1ea3172eb9680f.md5 b/.import/prideborder.png-e0e635543455b3cf3c1ea3172eb9680f.md5 deleted file mode 100644 index 938c87a..0000000 --- a/.import/prideborder.png-e0e635543455b3cf3c1ea3172eb9680f.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="eab90ddf35ac42be79c7583b9b65e772" -dest_md5="b78c955e2b4d9a4a58d780d9d5d62d3c" - diff --git a/.import/prideborder.png-e0e635543455b3cf3c1ea3172eb9680f.stex b/.import/prideborder.png-e0e635543455b3cf3c1ea3172eb9680f.stex deleted file mode 100644 index a7c3c22..0000000 Binary files a/.import/prideborder.png-e0e635543455b3cf3c1ea3172eb9680f.stex and /dev/null differ diff --git a/.import/rock.png-6def0d8c73ec8719627db8ce621bfd5d.md5 b/.import/rock.png-6def0d8c73ec8719627db8ce621bfd5d.md5 deleted file mode 100644 index 47b553c..0000000 --- a/.import/rock.png-6def0d8c73ec8719627db8ce621bfd5d.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="7bcd36780f76f0c50bff145b7fde4cd2" -dest_md5="657821031052c221b81185e83cd39b2a" - diff --git a/.import/rock.png-6def0d8c73ec8719627db8ce621bfd5d.stex b/.import/rock.png-6def0d8c73ec8719627db8ce621bfd5d.stex deleted file mode 100644 index ccb60e0..0000000 Binary files a/.import/rock.png-6def0d8c73ec8719627db8ce621bfd5d.stex and /dev/null differ diff --git a/.import/rumble_loop.mp3-8296079a496312740d286c71cb69f818.md5 b/.import/rumble_loop.mp3-8296079a496312740d286c71cb69f818.md5 deleted file mode 100644 index 3e2aa44..0000000 --- a/.import/rumble_loop.mp3-8296079a496312740d286c71cb69f818.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="0057c515a9b9d7768894647b74c442d5" -dest_md5="be2b65eec0ac8ff7e78507d4877e826c" - diff --git a/.import/rumble_loop.mp3-8296079a496312740d286c71cb69f818.mp3str b/.import/rumble_loop.mp3-8296079a496312740d286c71cb69f818.mp3str deleted file mode 100644 index a1777e7..0000000 Binary files a/.import/rumble_loop.mp3-8296079a496312740d286c71cb69f818.mp3str and /dev/null differ diff --git a/.import/sg_bow.png-92bf7dc68fff558d09a1bb7dc4c97add.md5 b/.import/sg_bow.png-92bf7dc68fff558d09a1bb7dc4c97add.md5 deleted file mode 100644 index 290fc85..0000000 --- a/.import/sg_bow.png-92bf7dc68fff558d09a1bb7dc4c97add.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="dd4f9fb6fe826116c3ac7053da03e403" -dest_md5="999dd5d6e313f8c56f7645b191174805" - diff --git a/.import/sg_bow.png-92bf7dc68fff558d09a1bb7dc4c97add.stex b/.import/sg_bow.png-92bf7dc68fff558d09a1bb7dc4c97add.stex deleted file mode 100644 index 0b43e23..0000000 Binary files a/.import/sg_bow.png-92bf7dc68fff558d09a1bb7dc4c97add.stex and /dev/null differ diff --git a/.import/sg_climb.png-188516c6a7bba12faa74d1f49265cde9.md5 b/.import/sg_climb.png-188516c6a7bba12faa74d1f49265cde9.md5 deleted file mode 100644 index 79f9146..0000000 --- a/.import/sg_climb.png-188516c6a7bba12faa74d1f49265cde9.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="ff2cf769b8bf9c83adad05febc54e6df" -dest_md5="aca159542683eb470f06d11f93b054d9" - diff --git a/.import/sg_climb.png-188516c6a7bba12faa74d1f49265cde9.stex b/.import/sg_climb.png-188516c6a7bba12faa74d1f49265cde9.stex deleted file mode 100644 index 316b30e..0000000 Binary files a/.import/sg_climb.png-188516c6a7bba12faa74d1f49265cde9.stex and /dev/null differ diff --git a/.import/sg_climb.png-8481f55c7b86b92a370ef711ff86d307.md5 b/.import/sg_climb.png-8481f55c7b86b92a370ef711ff86d307.md5 deleted file mode 100644 index 79f9146..0000000 --- a/.import/sg_climb.png-8481f55c7b86b92a370ef711ff86d307.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="ff2cf769b8bf9c83adad05febc54e6df" -dest_md5="aca159542683eb470f06d11f93b054d9" - diff --git a/.import/sg_climb.png-8481f55c7b86b92a370ef711ff86d307.stex b/.import/sg_climb.png-8481f55c7b86b92a370ef711ff86d307.stex deleted file mode 100644 index 316b30e..0000000 Binary files a/.import/sg_climb.png-8481f55c7b86b92a370ef711ff86d307.stex and /dev/null differ diff --git a/.import/sg_doublejump.png-dd8c75624dec8df436835e183d040f72.md5 b/.import/sg_doublejump.png-dd8c75624dec8df436835e183d040f72.md5 deleted file mode 100644 index 900fd4e..0000000 --- a/.import/sg_doublejump.png-dd8c75624dec8df436835e183d040f72.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="8a9e7a46d5e15ed3c094a631969ad605" -dest_md5="2b98f6f5502f4657455d0e8833d2bb9b" - diff --git a/.import/sg_doublejump.png-dd8c75624dec8df436835e183d040f72.stex b/.import/sg_doublejump.png-dd8c75624dec8df436835e183d040f72.stex deleted file mode 100644 index 9a74f5b..0000000 Binary files a/.import/sg_doublejump.png-dd8c75624dec8df436835e183d040f72.stex and /dev/null differ diff --git a/.import/sg_idle.png-416a1cdaa9fb227b4bd1025276714825.md5 b/.import/sg_idle.png-416a1cdaa9fb227b4bd1025276714825.md5 deleted file mode 100644 index c045f57..0000000 --- a/.import/sg_idle.png-416a1cdaa9fb227b4bd1025276714825.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="63bdcf4415dc2b4ffd6ffb0721d52a52" -dest_md5="0d25a39fb8e5e0c45d893c9792359026" - diff --git a/.import/sg_idle.png-416a1cdaa9fb227b4bd1025276714825.stex b/.import/sg_idle.png-416a1cdaa9fb227b4bd1025276714825.stex deleted file mode 100644 index f6c75c5..0000000 Binary files a/.import/sg_idle.png-416a1cdaa9fb227b4bd1025276714825.stex and /dev/null differ diff --git a/.import/sg_idle.png-e430586add9b01ef30bb5a237681b412.md5 b/.import/sg_idle.png-e430586add9b01ef30bb5a237681b412.md5 deleted file mode 100644 index c045f57..0000000 --- a/.import/sg_idle.png-e430586add9b01ef30bb5a237681b412.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="63bdcf4415dc2b4ffd6ffb0721d52a52" -dest_md5="0d25a39fb8e5e0c45d893c9792359026" - diff --git a/.import/sg_idle.png-e430586add9b01ef30bb5a237681b412.stex b/.import/sg_idle.png-e430586add9b01ef30bb5a237681b412.stex deleted file mode 100644 index f6c75c5..0000000 Binary files a/.import/sg_idle.png-e430586add9b01ef30bb5a237681b412.stex and /dev/null differ diff --git a/.import/sg_idle.png-f5ea6aa2a00d45cfe27b9b4900243e25.md5 b/.import/sg_idle.png-f5ea6aa2a00d45cfe27b9b4900243e25.md5 deleted file mode 100644 index 806f7a8..0000000 --- a/.import/sg_idle.png-f5ea6aa2a00d45cfe27b9b4900243e25.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="0ad7490d0f79fade9aac088a17ebd8e1" -dest_md5="80fea78d9db0e43476a30349a98cd087" - diff --git a/.import/sg_idle.png-f5ea6aa2a00d45cfe27b9b4900243e25.stex b/.import/sg_idle.png-f5ea6aa2a00d45cfe27b9b4900243e25.stex deleted file mode 100644 index 884de3f..0000000 Binary files a/.import/sg_idle.png-f5ea6aa2a00d45cfe27b9b4900243e25.stex and /dev/null differ diff --git a/.import/sg_idle_color.png-013b1031a65df35c4a25c95f81fa59de.md5 b/.import/sg_idle_color.png-013b1031a65df35c4a25c95f81fa59de.md5 deleted file mode 100644 index 806f7a8..0000000 --- a/.import/sg_idle_color.png-013b1031a65df35c4a25c95f81fa59de.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="0ad7490d0f79fade9aac088a17ebd8e1" -dest_md5="80fea78d9db0e43476a30349a98cd087" - diff --git a/.import/sg_idle_color.png-013b1031a65df35c4a25c95f81fa59de.stex b/.import/sg_idle_color.png-013b1031a65df35c4a25c95f81fa59de.stex deleted file mode 100644 index 884de3f..0000000 Binary files a/.import/sg_idle_color.png-013b1031a65df35c4a25c95f81fa59de.stex and /dev/null differ diff --git a/.import/sg_idle_color.png-1b8029ceac109f4228f5782b75db144d.md5 b/.import/sg_idle_color.png-1b8029ceac109f4228f5782b75db144d.md5 deleted file mode 100644 index 806f7a8..0000000 --- a/.import/sg_idle_color.png-1b8029ceac109f4228f5782b75db144d.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="0ad7490d0f79fade9aac088a17ebd8e1" -dest_md5="80fea78d9db0e43476a30349a98cd087" - diff --git a/.import/sg_idle_color.png-1b8029ceac109f4228f5782b75db144d.stex b/.import/sg_idle_color.png-1b8029ceac109f4228f5782b75db144d.stex deleted file mode 100644 index 884de3f..0000000 Binary files a/.import/sg_idle_color.png-1b8029ceac109f4228f5782b75db144d.stex and /dev/null differ diff --git a/.import/sg_outline.png-d83bd4211370f1ca4f13854b52bba784.md5 b/.import/sg_outline.png-d83bd4211370f1ca4f13854b52bba784.md5 deleted file mode 100644 index 4dd9554..0000000 --- a/.import/sg_outline.png-d83bd4211370f1ca4f13854b52bba784.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="758b41709b69d664033afb5aac90836f" -dest_md5="5773a8b2288da67e975c37279176802f" - diff --git a/.import/sg_outline.png-d83bd4211370f1ca4f13854b52bba784.stex b/.import/sg_outline.png-d83bd4211370f1ca4f13854b52bba784.stex deleted file mode 100644 index b53713a..0000000 Binary files a/.import/sg_outline.png-d83bd4211370f1ca4f13854b52bba784.stex and /dev/null differ diff --git a/.import/sg_shoot.png-223ce6d7d994249f3cb61d6c2acca3e4.md5 b/.import/sg_shoot.png-223ce6d7d994249f3cb61d6c2acca3e4.md5 deleted file mode 100644 index d1aab00..0000000 --- a/.import/sg_shoot.png-223ce6d7d994249f3cb61d6c2acca3e4.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="6f9f2cee0dbc9668f922adf18955131e" -dest_md5="f653b2119d0873a52a2f9d176c577ebf" - diff --git a/.import/sg_shoot.png-223ce6d7d994249f3cb61d6c2acca3e4.stex b/.import/sg_shoot.png-223ce6d7d994249f3cb61d6c2acca3e4.stex deleted file mode 100644 index 2e9043c..0000000 Binary files a/.import/sg_shoot.png-223ce6d7d994249f3cb61d6c2acca3e4.stex and /dev/null differ diff --git a/.import/sg_shoot_air.png-eaed2f177e6addedcd0fd98ca682e602.md5 b/.import/sg_shoot_air.png-eaed2f177e6addedcd0fd98ca682e602.md5 deleted file mode 100644 index 3c54042..0000000 --- a/.import/sg_shoot_air.png-eaed2f177e6addedcd0fd98ca682e602.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="eb9124d9635714f5f75ebde43a34d500" -dest_md5="67786600ab9901e6eae9cb41dc4e3fe8" - diff --git a/.import/sg_shoot_air.png-eaed2f177e6addedcd0fd98ca682e602.stex b/.import/sg_shoot_air.png-eaed2f177e6addedcd0fd98ca682e602.stex deleted file mode 100644 index b23ec30..0000000 Binary files a/.import/sg_shoot_air.png-eaed2f177e6addedcd0fd98ca682e602.stex and /dev/null differ diff --git a/.import/sg_shoot_grounded.png-f5fd264dea518c0aedffd9ce0d2e3ddb.md5 b/.import/sg_shoot_grounded.png-f5fd264dea518c0aedffd9ce0d2e3ddb.md5 deleted file mode 100644 index c8be368..0000000 --- a/.import/sg_shoot_grounded.png-f5fd264dea518c0aedffd9ce0d2e3ddb.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="77b59f61726f60517f6b47e28ec5a8d4" -dest_md5="d8648a4deb976a1b8ede2630af6ba5ca" - diff --git a/.import/sg_shoot_grounded.png-f5fd264dea518c0aedffd9ce0d2e3ddb.stex b/.import/sg_shoot_grounded.png-f5fd264dea518c0aedffd9ce0d2e3ddb.stex deleted file mode 100644 index 4c3112b..0000000 Binary files a/.import/sg_shoot_grounded.png-f5fd264dea518c0aedffd9ce0d2e3ddb.stex and /dev/null differ diff --git a/.import/sg_slash.png-50c50a2a7ac9eb40d041fcf4306674d2.md5 b/.import/sg_slash.png-50c50a2a7ac9eb40d041fcf4306674d2.md5 deleted file mode 100644 index 98d9939..0000000 --- a/.import/sg_slash.png-50c50a2a7ac9eb40d041fcf4306674d2.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="c0ec8bb4327c0f5aca344d9ddeb36f9e" -dest_md5="ae630ba4b2e4202f68611d1595151e28" - diff --git a/.import/sg_slash.png-50c50a2a7ac9eb40d041fcf4306674d2.stex b/.import/sg_slash.png-50c50a2a7ac9eb40d041fcf4306674d2.stex deleted file mode 100644 index b6d8d32..0000000 Binary files a/.import/sg_slash.png-50c50a2a7ac9eb40d041fcf4306674d2.stex and /dev/null differ diff --git a/.import/sg_slash.png-b9382a5cd994dfa4416b6ba51b6f2e82.md5 b/.import/sg_slash.png-b9382a5cd994dfa4416b6ba51b6f2e82.md5 deleted file mode 100644 index 98d9939..0000000 --- a/.import/sg_slash.png-b9382a5cd994dfa4416b6ba51b6f2e82.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="c0ec8bb4327c0f5aca344d9ddeb36f9e" -dest_md5="ae630ba4b2e4202f68611d1595151e28" - diff --git a/.import/sg_slash.png-b9382a5cd994dfa4416b6ba51b6f2e82.stex b/.import/sg_slash.png-b9382a5cd994dfa4416b6ba51b6f2e82.stex deleted file mode 100644 index b6d8d32..0000000 Binary files a/.import/sg_slash.png-b9382a5cd994dfa4416b6ba51b6f2e82.stex and /dev/null differ diff --git a/.import/sg_stab.png-20e3c67d443548a3072e792fd6e4dcaf.md5 b/.import/sg_stab.png-20e3c67d443548a3072e792fd6e4dcaf.md5 deleted file mode 100644 index 692a4cd..0000000 --- a/.import/sg_stab.png-20e3c67d443548a3072e792fd6e4dcaf.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="55e6f3920f723054c1dac825ebf97480" -dest_md5="dc49f01617a07a91c66156a27f71fbaa" - diff --git a/.import/sg_stab.png-20e3c67d443548a3072e792fd6e4dcaf.stex b/.import/sg_stab.png-20e3c67d443548a3072e792fd6e4dcaf.stex deleted file mode 100644 index 0d06be9..0000000 Binary files a/.import/sg_stab.png-20e3c67d443548a3072e792fd6e4dcaf.stex and /dev/null differ diff --git a/.import/sg_stab.png-fee5d74996b642f29297d4fcc66beea9.md5 b/.import/sg_stab.png-fee5d74996b642f29297d4fcc66beea9.md5 deleted file mode 100644 index 692a4cd..0000000 --- a/.import/sg_stab.png-fee5d74996b642f29297d4fcc66beea9.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="55e6f3920f723054c1dac825ebf97480" -dest_md5="dc49f01617a07a91c66156a27f71fbaa" - diff --git a/.import/sg_stab.png-fee5d74996b642f29297d4fcc66beea9.stex b/.import/sg_stab.png-fee5d74996b642f29297d4fcc66beea9.stex deleted file mode 100644 index 0d06be9..0000000 Binary files a/.import/sg_stab.png-fee5d74996b642f29297d4fcc66beea9.stex and /dev/null differ diff --git a/.import/sg_swing.png-1db47eaaaf2ed5a1738acf5a9eb25b64.md5 b/.import/sg_swing.png-1db47eaaaf2ed5a1738acf5a9eb25b64.md5 deleted file mode 100644 index 9c5648c..0000000 --- a/.import/sg_swing.png-1db47eaaaf2ed5a1738acf5a9eb25b64.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="ed7ac09d30503b8dd46684d1fc4c295f" -dest_md5="54277aaf03348f2c79f2b3c80bab5d6f" - diff --git a/.import/sg_swing.png-1db47eaaaf2ed5a1738acf5a9eb25b64.stex b/.import/sg_swing.png-1db47eaaaf2ed5a1738acf5a9eb25b64.stex deleted file mode 100644 index 3c98ff3..0000000 Binary files a/.import/sg_swing.png-1db47eaaaf2ed5a1738acf5a9eb25b64.stex and /dev/null differ diff --git a/.import/sg_swing.png-bbcb50621a0606ef1fd457870ab15063.md5 b/.import/sg_swing.png-bbcb50621a0606ef1fd457870ab15063.md5 deleted file mode 100644 index 9c5648c..0000000 --- a/.import/sg_swing.png-bbcb50621a0606ef1fd457870ab15063.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="ed7ac09d30503b8dd46684d1fc4c295f" -dest_md5="54277aaf03348f2c79f2b3c80bab5d6f" - diff --git a/.import/sg_swing.png-bbcb50621a0606ef1fd457870ab15063.stex b/.import/sg_swing.png-bbcb50621a0606ef1fd457870ab15063.stex deleted file mode 100644 index 3c98ff3..0000000 Binary files a/.import/sg_swing.png-bbcb50621a0606ef1fd457870ab15063.stex and /dev/null differ diff --git a/.import/sg_sword.png-3a07cd2417fb17cc2f65d7fbb7fee774.md5 b/.import/sg_sword.png-3a07cd2417fb17cc2f65d7fbb7fee774.md5 deleted file mode 100644 index 456fc1f..0000000 --- a/.import/sg_sword.png-3a07cd2417fb17cc2f65d7fbb7fee774.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="2a82019fa356fd8250ab860b06e110a9" -dest_md5="b540eea6fd7eeea10d1b9f72afe16e44" - diff --git a/.import/sg_sword.png-3a07cd2417fb17cc2f65d7fbb7fee774.stex b/.import/sg_sword.png-3a07cd2417fb17cc2f65d7fbb7fee774.stex deleted file mode 100644 index f6d4a2b..0000000 Binary files a/.import/sg_sword.png-3a07cd2417fb17cc2f65d7fbb7fee774.stex and /dev/null differ diff --git a/.import/sg_sword.png-5e524e815619ee089b0ece41b202a028.md5 b/.import/sg_sword.png-5e524e815619ee089b0ece41b202a028.md5 deleted file mode 100644 index 456fc1f..0000000 --- a/.import/sg_sword.png-5e524e815619ee089b0ece41b202a028.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="2a82019fa356fd8250ab860b06e110a9" -dest_md5="b540eea6fd7eeea10d1b9f72afe16e44" - diff --git a/.import/sg_sword.png-5e524e815619ee089b0ece41b202a028.stex b/.import/sg_sword.png-5e524e815619ee089b0ece41b202a028.stex deleted file mode 100644 index f6d4a2b..0000000 Binary files a/.import/sg_sword.png-5e524e815619ee089b0ece41b202a028.stex and /dev/null differ diff --git a/.import/sg_walk.png-2dbe58b396665ac1554c9b3b839f8a82.md5 b/.import/sg_walk.png-2dbe58b396665ac1554c9b3b839f8a82.md5 deleted file mode 100644 index 4311795..0000000 --- a/.import/sg_walk.png-2dbe58b396665ac1554c9b3b839f8a82.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="a9d517fccc4667baafbd519332c3be28" -dest_md5="327b5b4e919b5b91ed5ce08ac3bc0edb" - diff --git a/.import/sg_walk.png-2dbe58b396665ac1554c9b3b839f8a82.stex b/.import/sg_walk.png-2dbe58b396665ac1554c9b3b839f8a82.stex deleted file mode 100644 index 61d6285..0000000 Binary files a/.import/sg_walk.png-2dbe58b396665ac1554c9b3b839f8a82.stex and /dev/null differ diff --git a/.import/sg_walk.png-b20b1f6fcfa2d179f1538669ec32d61e.md5 b/.import/sg_walk.png-b20b1f6fcfa2d179f1538669ec32d61e.md5 deleted file mode 100644 index 8eea986..0000000 --- a/.import/sg_walk.png-b20b1f6fcfa2d179f1538669ec32d61e.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="94a19f9ae468d05d12ff716c33907bc0" -dest_md5="cdbebed63e60558783a49912739c531a" - diff --git a/.import/sg_walk.png-b20b1f6fcfa2d179f1538669ec32d61e.stex b/.import/sg_walk.png-b20b1f6fcfa2d179f1538669ec32d61e.stex deleted file mode 100644 index ae9d2f5..0000000 Binary files a/.import/sg_walk.png-b20b1f6fcfa2d179f1538669ec32d61e.stex and /dev/null differ diff --git a/.import/sg_walk.png-f13d3e850616859ae31d64b9786dd6a2.md5 b/.import/sg_walk.png-f13d3e850616859ae31d64b9786dd6a2.md5 deleted file mode 100644 index 8eea986..0000000 --- a/.import/sg_walk.png-f13d3e850616859ae31d64b9786dd6a2.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="94a19f9ae468d05d12ff716c33907bc0" -dest_md5="cdbebed63e60558783a49912739c531a" - diff --git a/.import/sg_walk.png-f13d3e850616859ae31d64b9786dd6a2.stex b/.import/sg_walk.png-f13d3e850616859ae31d64b9786dd6a2.stex deleted file mode 100644 index ae9d2f5..0000000 Binary files a/.import/sg_walk.png-f13d3e850616859ae31d64b9786dd6a2.stex and /dev/null differ diff --git a/.import/shard.png-5cd72fd45ca56dace96a166a5ce4756c.md5 b/.import/shard.png-5cd72fd45ca56dace96a166a5ce4756c.md5 deleted file mode 100644 index b739ee0..0000000 --- a/.import/shard.png-5cd72fd45ca56dace96a166a5ce4756c.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="9302f81a1690d87289a43a2a8b447e79" -dest_md5="31524169a1208a42229db85c819bbade" - diff --git a/.import/shard.png-5cd72fd45ca56dace96a166a5ce4756c.stex b/.import/shard.png-5cd72fd45ca56dace96a166a5ce4756c.stex deleted file mode 100644 index ae05fb7..0000000 Binary files a/.import/shard.png-5cd72fd45ca56dace96a166a5ce4756c.stex and /dev/null differ diff --git a/.import/slime.png-62fa29b1c63ec21bc37f2348e6ccfbe5.md5 b/.import/slime.png-62fa29b1c63ec21bc37f2348e6ccfbe5.md5 deleted file mode 100644 index 0862fc7..0000000 --- a/.import/slime.png-62fa29b1c63ec21bc37f2348e6ccfbe5.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="234b7948dfce0e2acd7cadd00f04daa1" -dest_md5="21956716b623996381004ca0e06ba1ef" - diff --git a/.import/slime.png-62fa29b1c63ec21bc37f2348e6ccfbe5.stex b/.import/slime.png-62fa29b1c63ec21bc37f2348e6ccfbe5.stex deleted file mode 100644 index 6b6c7ed..0000000 Binary files a/.import/slime.png-62fa29b1c63ec21bc37f2348e6ccfbe5.stex and /dev/null differ diff --git a/.import/slime_blue.png-08b8c9d415101018014b3150d00f766f.md5 b/.import/slime_blue.png-08b8c9d415101018014b3150d00f766f.md5 deleted file mode 100644 index 6e6a0a3..0000000 --- a/.import/slime_blue.png-08b8c9d415101018014b3150d00f766f.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="a5c6df9c446162e7c3e6560baabb9f95" -dest_md5="ff409da6499c3c058d1f2a62a98392e3" - diff --git a/.import/slime_blue.png-08b8c9d415101018014b3150d00f766f.stex b/.import/slime_blue.png-08b8c9d415101018014b3150d00f766f.stex deleted file mode 100644 index 0c617cd..0000000 Binary files a/.import/slime_blue.png-08b8c9d415101018014b3150d00f766f.stex and /dev/null differ diff --git a/.import/slime_green.png-9784384e610afbd1660a5f91be577d8f.md5 b/.import/slime_green.png-9784384e610afbd1660a5f91be577d8f.md5 deleted file mode 100644 index 90f20e8..0000000 --- a/.import/slime_green.png-9784384e610afbd1660a5f91be577d8f.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="168c71bb7a1c3cae99438d1a10ae8d01" -dest_md5="afcee443a9c8c9389884fd7d6c9d5913" - diff --git a/.import/slime_green.png-9784384e610afbd1660a5f91be577d8f.stex b/.import/slime_green.png-9784384e610afbd1660a5f91be577d8f.stex deleted file mode 100644 index dd300ba..0000000 Binary files a/.import/slime_green.png-9784384e610afbd1660a5f91be577d8f.stex and /dev/null differ diff --git a/.import/slime_purple.png-2e24557adf5bdd2777a17906d3867cf5.md5 b/.import/slime_purple.png-2e24557adf5bdd2777a17906d3867cf5.md5 deleted file mode 100644 index 4415e08..0000000 --- a/.import/slime_purple.png-2e24557adf5bdd2777a17906d3867cf5.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="1aaaecc5633498ee20ee4dab9b2d2cd0" -dest_md5="ada2bdf36982a737b77f46d7848a65ab" - diff --git a/.import/slime_purple.png-2e24557adf5bdd2777a17906d3867cf5.stex b/.import/slime_purple.png-2e24557adf5bdd2777a17906d3867cf5.stex deleted file mode 100644 index 97347fb..0000000 Binary files a/.import/slime_purple.png-2e24557adf5bdd2777a17906d3867cf5.stex and /dev/null differ diff --git a/.import/smokestack.mp3-27e96096ab30e2a396e177e479e12ab9.md5 b/.import/smokestack.mp3-27e96096ab30e2a396e177e479e12ab9.md5 deleted file mode 100644 index 22da990..0000000 --- a/.import/smokestack.mp3-27e96096ab30e2a396e177e479e12ab9.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="1771a21a6b8409378f2c52aaf535f670" -dest_md5="58eed7ee61fb42886dc28383cf6521a8" - diff --git a/.import/smokestack.mp3-27e96096ab30e2a396e177e479e12ab9.mp3str b/.import/smokestack.mp3-27e96096ab30e2a396e177e479e12ab9.mp3str deleted file mode 100644 index 6541c82..0000000 Binary files a/.import/smokestack.mp3-27e96096ab30e2a396e177e479e12ab9.mp3str and /dev/null differ diff --git a/.import/snail.png-665b03ca99f23d92830cd36201ff3f05.md5 b/.import/snail.png-665b03ca99f23d92830cd36201ff3f05.md5 deleted file mode 100644 index be279ac..0000000 --- a/.import/snail.png-665b03ca99f23d92830cd36201ff3f05.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="fa736e12b5ad6e0b506c142da949c609" -dest_md5="7fb8e0d80191df521d68f774ae8d550d" - diff --git a/.import/snail.png-665b03ca99f23d92830cd36201ff3f05.stex b/.import/snail.png-665b03ca99f23d92830cd36201ff3f05.stex deleted file mode 100644 index 0f8d4ca..0000000 Binary files a/.import/snail.png-665b03ca99f23d92830cd36201ff3f05.stex and /dev/null differ diff --git a/.import/snake.png-927d590dcffa73c624300c783be11559.md5 b/.import/snake.png-927d590dcffa73c624300c783be11559.md5 deleted file mode 100644 index a529d78..0000000 --- a/.import/snake.png-927d590dcffa73c624300c783be11559.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="2d2acae605e232cdf9fbd3d65995bed4" -dest_md5="250f8c089c23ae01557033b998275464" - diff --git a/.import/snake.png-927d590dcffa73c624300c783be11559.stex b/.import/snake.png-927d590dcffa73c624300c783be11559.stex deleted file mode 100644 index bb45779..0000000 Binary files a/.import/snake.png-927d590dcffa73c624300c783be11559.stex and /dev/null differ diff --git a/.import/snd_coin.ogg-e43af4b2a5fcdba9e9309ebc8f191147.md5 b/.import/snd_coin.ogg-e43af4b2a5fcdba9e9309ebc8f191147.md5 deleted file mode 100644 index f18b2a5..0000000 --- a/.import/snd_coin.ogg-e43af4b2a5fcdba9e9309ebc8f191147.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="ae4d82d1cc3cbfcc26e3138508e61969" -dest_md5="af4ba30a0295d4e1f52be810adb0656c" - diff --git a/.import/snd_coin.ogg-e43af4b2a5fcdba9e9309ebc8f191147.oggstr b/.import/snd_coin.ogg-e43af4b2a5fcdba9e9309ebc8f191147.oggstr deleted file mode 100644 index edb4fa6..0000000 Binary files a/.import/snd_coin.ogg-e43af4b2a5fcdba9e9309ebc8f191147.oggstr and /dev/null differ diff --git a/.import/spike.png-a608aa67f6e0f5dc30513729727656ff.md5 b/.import/spike.png-a608aa67f6e0f5dc30513729727656ff.md5 deleted file mode 100644 index 6c82197..0000000 --- a/.import/spike.png-a608aa67f6e0f5dc30513729727656ff.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="a600e425906c5df72955d9359438f454" -dest_md5="38480d5a86d4c34138941ec5c6cb2261" - diff --git a/.import/spike.png-a608aa67f6e0f5dc30513729727656ff.stex b/.import/spike.png-a608aa67f6e0f5dc30513729727656ff.stex deleted file mode 100644 index bf9507b..0000000 Binary files a/.import/spike.png-a608aa67f6e0f5dc30513729727656ff.stex and /dev/null differ diff --git a/.import/star.png-bbd05430ac53c14d61c89cec8bc04e18.md5 b/.import/star.png-bbd05430ac53c14d61c89cec8bc04e18.md5 deleted file mode 100644 index 505a932..0000000 --- a/.import/star.png-bbd05430ac53c14d61c89cec8bc04e18.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="699579f90ee274df8c5a40d80448090e" -dest_md5="4c2e9c8e2abce739692e926bdc5e56cf" - diff --git a/.import/star.png-bbd05430ac53c14d61c89cec8bc04e18.stex b/.import/star.png-bbd05430ac53c14d61c89cec8bc04e18.stex deleted file mode 100644 index bf2ec48..0000000 Binary files a/.import/star.png-bbd05430ac53c14d61c89cec8bc04e18.stex and /dev/null differ diff --git a/.import/star_blue.png-e5bcc7604832ad6c1269fea136d51c5d.md5 b/.import/star_blue.png-e5bcc7604832ad6c1269fea136d51c5d.md5 deleted file mode 100644 index d808385..0000000 --- a/.import/star_blue.png-e5bcc7604832ad6c1269fea136d51c5d.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="50c7ca428388380b4e3371e36bac6590" -dest_md5="4cb7c8a33151d997fb2b64616489f751" - diff --git a/.import/star_blue.png-e5bcc7604832ad6c1269fea136d51c5d.stex b/.import/star_blue.png-e5bcc7604832ad6c1269fea136d51c5d.stex deleted file mode 100644 index 393da4a..0000000 Binary files a/.import/star_blue.png-e5bcc7604832ad6c1269fea136d51c5d.stex and /dev/null differ diff --git a/.import/star_green.png-c7fbc1322c67118272cc12bb63499b0b.md5 b/.import/star_green.png-c7fbc1322c67118272cc12bb63499b0b.md5 deleted file mode 100644 index 2a2eb91..0000000 --- a/.import/star_green.png-c7fbc1322c67118272cc12bb63499b0b.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="ed666ac4ec5b3efcd3db6c36a786ba6c" -dest_md5="1a0e86b5951f0b5d1122adaca79678fc" - diff --git a/.import/star_green.png-c7fbc1322c67118272cc12bb63499b0b.stex b/.import/star_green.png-c7fbc1322c67118272cc12bb63499b0b.stex deleted file mode 100644 index e166f75..0000000 Binary files a/.import/star_green.png-c7fbc1322c67118272cc12bb63499b0b.stex and /dev/null differ diff --git a/.import/star_magenta.png-53e023c3de5374393ea55d0dc97fc43a.md5 b/.import/star_magenta.png-53e023c3de5374393ea55d0dc97fc43a.md5 deleted file mode 100644 index bb88d00..0000000 --- a/.import/star_magenta.png-53e023c3de5374393ea55d0dc97fc43a.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="8a65efa898267c8c69299db9cc40c37f" -dest_md5="5547e1a82c8f3a2d89746cf6bf70f8d5" - diff --git a/.import/star_magenta.png-53e023c3de5374393ea55d0dc97fc43a.stex b/.import/star_magenta.png-53e023c3de5374393ea55d0dc97fc43a.stex deleted file mode 100644 index b6a2c32..0000000 Binary files a/.import/star_magenta.png-53e023c3de5374393ea55d0dc97fc43a.stex and /dev/null differ diff --git a/.import/star_red.png-e442fe3e282bb73f7112258f82eb8d77.md5 b/.import/star_red.png-e442fe3e282bb73f7112258f82eb8d77.md5 deleted file mode 100644 index 8157537..0000000 --- a/.import/star_red.png-e442fe3e282bb73f7112258f82eb8d77.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="1a8ad796076d3ea33646c9ff925b0e25" -dest_md5="5ecb10cac189aed82e4e5c85883cc1d2" - diff --git a/.import/star_red.png-e442fe3e282bb73f7112258f82eb8d77.stex b/.import/star_red.png-e442fe3e282bb73f7112258f82eb8d77.stex deleted file mode 100644 index 84e92eb..0000000 Binary files a/.import/star_red.png-e442fe3e282bb73f7112258f82eb8d77.stex and /dev/null differ diff --git a/.import/star_yellow.png-cda8dd67e017975111fa237e374da125.md5 b/.import/star_yellow.png-cda8dd67e017975111fa237e374da125.md5 deleted file mode 100644 index 18ef7be..0000000 --- a/.import/star_yellow.png-cda8dd67e017975111fa237e374da125.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="ccde49efd86bb41470bac3530c6eef55" -dest_md5="789972e26b13ed624f234f796699bce7" - diff --git a/.import/star_yellow.png-cda8dd67e017975111fa237e374da125.stex b/.import/star_yellow.png-cda8dd67e017975111fa237e374da125.stex deleted file mode 100644 index f8b10ba..0000000 Binary files a/.import/star_yellow.png-cda8dd67e017975111fa237e374da125.stex and /dev/null differ diff --git a/.import/stars_hud.png-8d3be9176bacfd7093743651807c1fb5.md5 b/.import/stars_hud.png-8d3be9176bacfd7093743651807c1fb5.md5 deleted file mode 100644 index 5fa4ea3..0000000 --- a/.import/stars_hud.png-8d3be9176bacfd7093743651807c1fb5.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="fe2bd66edb79cdea2a04031a4d4e5da8" -dest_md5="77965935ebf840b8c8251b2ffa77cb23" - diff --git a/.import/stars_hud.png-8d3be9176bacfd7093743651807c1fb5.stex b/.import/stars_hud.png-8d3be9176bacfd7093743651807c1fb5.stex deleted file mode 100644 index a193f92..0000000 Binary files a/.import/stars_hud.png-8d3be9176bacfd7093743651807c1fb5.stex and /dev/null differ diff --git a/.import/sword.ogg-dba4b3e0868285d6316b38990f0d353e.md5 b/.import/sword.ogg-dba4b3e0868285d6316b38990f0d353e.md5 deleted file mode 100644 index 7fdc73d..0000000 --- a/.import/sword.ogg-dba4b3e0868285d6316b38990f0d353e.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="f31a92be6a8af2815005a45cc6be9a9a" -dest_md5="e117672c35c8fdd1ee6b1ba743880361" - diff --git a/.import/sword.ogg-dba4b3e0868285d6316b38990f0d353e.oggstr b/.import/sword.ogg-dba4b3e0868285d6316b38990f0d353e.oggstr deleted file mode 100644 index bc0cc3c..0000000 Binary files a/.import/sword.ogg-dba4b3e0868285d6316b38990f0d353e.oggstr and /dev/null differ diff --git a/.import/sword.png-448e9f82471c46e888b12306fabd3d5e.md5 b/.import/sword.png-448e9f82471c46e888b12306fabd3d5e.md5 deleted file mode 100644 index 32e2671..0000000 --- a/.import/sword.png-448e9f82471c46e888b12306fabd3d5e.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="e1eba5206bc911f0ff9776597ce64982" -dest_md5="594da4be1241e61ea466cbd79dffce51" - diff --git a/.import/sword.png-448e9f82471c46e888b12306fabd3d5e.stex b/.import/sword.png-448e9f82471c46e888b12306fabd3d5e.stex deleted file mode 100644 index 3cbba6c..0000000 Binary files a/.import/sword.png-448e9f82471c46e888b12306fabd3d5e.stex and /dev/null differ diff --git a/.import/sword.png-d02aeb6ea6702cb3352af1da1b2206f3.md5 b/.import/sword.png-d02aeb6ea6702cb3352af1da1b2206f3.md5 deleted file mode 100644 index 32e2671..0000000 --- a/.import/sword.png-d02aeb6ea6702cb3352af1da1b2206f3.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="e1eba5206bc911f0ff9776597ce64982" -dest_md5="594da4be1241e61ea466cbd79dffce51" - diff --git a/.import/sword.png-d02aeb6ea6702cb3352af1da1b2206f3.stex b/.import/sword.png-d02aeb6ea6702cb3352af1da1b2206f3.stex deleted file mode 100644 index 3cbba6c..0000000 Binary files a/.import/sword.png-d02aeb6ea6702cb3352af1da1b2206f3.stex and /dev/null differ diff --git a/.import/sword_slash.png-7ae24b9b2e8c603200a94ffa56542cdb.md5 b/.import/sword_slash.png-7ae24b9b2e8c603200a94ffa56542cdb.md5 deleted file mode 100644 index f6838c5..0000000 --- a/.import/sword_slash.png-7ae24b9b2e8c603200a94ffa56542cdb.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="80559bd08ffe9b9ed941d5db16cf3f52" -dest_md5="1947c3e8dffda706956d614edf7dce05" - diff --git a/.import/sword_slash.png-7ae24b9b2e8c603200a94ffa56542cdb.stex b/.import/sword_slash.png-7ae24b9b2e8c603200a94ffa56542cdb.stex deleted file mode 100644 index 6d4924c..0000000 Binary files a/.import/sword_slash.png-7ae24b9b2e8c603200a94ffa56542cdb.stex and /dev/null differ diff --git a/.import/sword_slash.png-a734a066e481c52863aafde60d35a027.md5 b/.import/sword_slash.png-a734a066e481c52863aafde60d35a027.md5 deleted file mode 100644 index f6838c5..0000000 --- a/.import/sword_slash.png-a734a066e481c52863aafde60d35a027.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="80559bd08ffe9b9ed941d5db16cf3f52" -dest_md5="1947c3e8dffda706956d614edf7dce05" - diff --git a/.import/sword_slash.png-a734a066e481c52863aafde60d35a027.stex b/.import/sword_slash.png-a734a066e481c52863aafde60d35a027.stex deleted file mode 100644 index 6d4924c..0000000 Binary files a/.import/sword_slash.png-a734a066e481c52863aafde60d35a027.stex and /dev/null differ diff --git a/.import/sword_stab.png-a93c38f977c9d8495ec7363dce3c2c96.md5 b/.import/sword_stab.png-a93c38f977c9d8495ec7363dce3c2c96.md5 deleted file mode 100644 index 5e17516..0000000 --- a/.import/sword_stab.png-a93c38f977c9d8495ec7363dce3c2c96.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="a59d8a95903c590aa716de5f2609b2df" -dest_md5="b863f056b9c45e5e88c28d64b2eda2c8" - diff --git a/.import/sword_stab.png-a93c38f977c9d8495ec7363dce3c2c96.stex b/.import/sword_stab.png-a93c38f977c9d8495ec7363dce3c2c96.stex deleted file mode 100644 index cea1168..0000000 Binary files a/.import/sword_stab.png-a93c38f977c9d8495ec7363dce3c2c96.stex and /dev/null differ diff --git a/.import/sword_stab.png-d1937244db309c23d2bac78a7a7c1c8a.md5 b/.import/sword_stab.png-d1937244db309c23d2bac78a7a7c1c8a.md5 deleted file mode 100644 index 5e17516..0000000 --- a/.import/sword_stab.png-d1937244db309c23d2bac78a7a7c1c8a.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="a59d8a95903c590aa716de5f2609b2df" -dest_md5="b863f056b9c45e5e88c28d64b2eda2c8" - diff --git a/.import/sword_stab.png-d1937244db309c23d2bac78a7a7c1c8a.stex b/.import/sword_stab.png-d1937244db309c23d2bac78a7a7c1c8a.stex deleted file mode 100644 index cea1168..0000000 Binary files a/.import/sword_stab.png-d1937244db309c23d2bac78a7a7c1c8a.stex and /dev/null differ diff --git a/.import/t_grass.png-9e25ede26c6dbc5c40964014b2e0e471.md5 b/.import/t_grass.png-9e25ede26c6dbc5c40964014b2e0e471.md5 deleted file mode 100644 index 2f44b28..0000000 --- a/.import/t_grass.png-9e25ede26c6dbc5c40964014b2e0e471.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="43e6a7803608fe322bf2c6428855cd99" -dest_md5="574de6c65b1c2d3864a411d8d12b8591" - diff --git a/.import/t_grass.png-9e25ede26c6dbc5c40964014b2e0e471.stex b/.import/t_grass.png-9e25ede26c6dbc5c40964014b2e0e471.stex deleted file mode 100644 index c9ba6e4..0000000 Binary files a/.import/t_grass.png-9e25ede26c6dbc5c40964014b2e0e471.stex and /dev/null differ diff --git a/.import/tempjingle.wav-bb9c1796b8de81e98ac7272cbb1283ae.md5 b/.import/tempjingle.wav-bb9c1796b8de81e98ac7272cbb1283ae.md5 deleted file mode 100644 index efbb51e..0000000 --- a/.import/tempjingle.wav-bb9c1796b8de81e98ac7272cbb1283ae.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="0e3b1f3cb3e8c06798d3400b9a36cbc6" -dest_md5="bb72c5db654c687ac04b6604279d44eb" - diff --git a/.import/tempjingle.wav-bb9c1796b8de81e98ac7272cbb1283ae.sample b/.import/tempjingle.wav-bb9c1796b8de81e98ac7272cbb1283ae.sample deleted file mode 100644 index effb635..0000000 Binary files a/.import/tempjingle.wav-bb9c1796b8de81e98ac7272cbb1283ae.sample and /dev/null differ diff --git a/.import/test_outline.png-718b593a40e1eb1f19a87019e56a4b0b.md5 b/.import/test_outline.png-718b593a40e1eb1f19a87019e56a4b0b.md5 deleted file mode 100644 index dd93fbb..0000000 --- a/.import/test_outline.png-718b593a40e1eb1f19a87019e56a4b0b.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="37cfb2d69f359d95aaaa9f69ac24576d" -dest_md5="0e8e89f5c1568a5b86d4eb3a3c7ce197" - diff --git a/.import/test_outline.png-718b593a40e1eb1f19a87019e56a4b0b.stex b/.import/test_outline.png-718b593a40e1eb1f19a87019e56a4b0b.stex deleted file mode 100644 index 612c1b1..0000000 Binary files a/.import/test_outline.png-718b593a40e1eb1f19a87019e56a4b0b.stex and /dev/null differ diff --git a/.import/turniwood.png-129c22553b3d66b3252dfc2c7ecbb083.md5 b/.import/turniwood.png-129c22553b3d66b3252dfc2c7ecbb083.md5 deleted file mode 100644 index 4cf1c0b..0000000 --- a/.import/turniwood.png-129c22553b3d66b3252dfc2c7ecbb083.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="9903ee48c3f91adebb26f59e53f00467" -dest_md5="416e355f9219e54fe7fb939c1432e5b4" - diff --git a/.import/turniwood.png-129c22553b3d66b3252dfc2c7ecbb083.stex b/.import/turniwood.png-129c22553b3d66b3252dfc2c7ecbb083.stex deleted file mode 100644 index 67f5f78..0000000 Binary files a/.import/turniwood.png-129c22553b3d66b3252dfc2c7ecbb083.stex and /dev/null differ diff --git a/.import/turniwood_yellow.png-daf009113c5daf504d58a9354a706f88.md5 b/.import/turniwood_yellow.png-daf009113c5daf504d58a9354a706f88.md5 deleted file mode 100644 index 0712c2d..0000000 --- a/.import/turniwood_yellow.png-daf009113c5daf504d58a9354a706f88.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="f525d445e4ed5980188f7ea6b568dd05" -dest_md5="f5d17549b4206c565ccce1e105ecba3c" - diff --git a/.import/turniwood_yellow.png-daf009113c5daf504d58a9354a706f88.stex b/.import/turniwood_yellow.png-daf009113c5daf504d58a9354a706f88.stex deleted file mode 100644 index a2ee26d..0000000 Binary files a/.import/turniwood_yellow.png-daf009113c5daf504d58a9354a706f88.stex and /dev/null differ diff --git a/.import/vine.png-87e1480df08ec85216f71ac1fe8d8359.md5 b/.import/vine.png-87e1480df08ec85216f71ac1fe8d8359.md5 deleted file mode 100644 index 6d85772..0000000 --- a/.import/vine.png-87e1480df08ec85216f71ac1fe8d8359.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="9b78ccef1ede55ca3c29a27bcb177c99" -dest_md5="be81cf02379faafbaf8053455787be47" - diff --git a/.import/vine.png-87e1480df08ec85216f71ac1fe8d8359.stex b/.import/vine.png-87e1480df08ec85216f71ac1fe8d8359.stex deleted file mode 100644 index 87cc041..0000000 Binary files a/.import/vine.png-87e1480df08ec85216f71ac1fe8d8359.stex and /dev/null differ diff --git a/.import/water.png-3f22d65cf4ccd9c99d494e6c91686667.md5 b/.import/water.png-3f22d65cf4ccd9c99d494e6c91686667.md5 deleted file mode 100644 index eae0629..0000000 --- a/.import/water.png-3f22d65cf4ccd9c99d494e6c91686667.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="12655b0b7f98c143b2ae9faf30eaa73f" -dest_md5="2bf60d6f13a5f393f76634e153d31902" - diff --git a/.import/water.png-3f22d65cf4ccd9c99d494e6c91686667.stex b/.import/water.png-3f22d65cf4ccd9c99d494e6c91686667.stex deleted file mode 100644 index 65a34db..0000000 Binary files a/.import/water.png-3f22d65cf4ccd9c99d494e6c91686667.stex and /dev/null differ diff --git a/.import/water_1.png-3529478b8ebf3662cc2788fa678aa1be.md5 b/.import/water_1.png-3529478b8ebf3662cc2788fa678aa1be.md5 deleted file mode 100644 index 70e4100..0000000 --- a/.import/water_1.png-3529478b8ebf3662cc2788fa678aa1be.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="52dd0d98fbbd1da58f7566955dd1a06e" -dest_md5="68712ae8e9eeec897c4cffc1a64484a6" - diff --git a/.import/water_1.png-3529478b8ebf3662cc2788fa678aa1be.stex b/.import/water_1.png-3529478b8ebf3662cc2788fa678aa1be.stex deleted file mode 100644 index d815804..0000000 Binary files a/.import/water_1.png-3529478b8ebf3662cc2788fa678aa1be.stex and /dev/null differ diff --git a/.import/water_2.png-d3a4257c90beef83847be898e108acb3.md5 b/.import/water_2.png-d3a4257c90beef83847be898e108acb3.md5 deleted file mode 100644 index edb64fd..0000000 --- a/.import/water_2.png-d3a4257c90beef83847be898e108acb3.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="3c48e646b90ec6bb1441d7f446e82370" -dest_md5="bf4a0c3888bc16e7f013a84817ae6fdc" - diff --git a/.import/water_2.png-d3a4257c90beef83847be898e108acb3.stex b/.import/water_2.png-d3a4257c90beef83847be898e108acb3.stex deleted file mode 100644 index e085bf9..0000000 Binary files a/.import/water_2.png-d3a4257c90beef83847be898e108acb3.stex and /dev/null differ diff --git a/.import/water_3.png-5e9524ae85dce7bc5ffd28531546dc61.md5 b/.import/water_3.png-5e9524ae85dce7bc5ffd28531546dc61.md5 deleted file mode 100644 index 0a8e899..0000000 --- a/.import/water_3.png-5e9524ae85dce7bc5ffd28531546dc61.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="8d7d48ebd84024179c58b5718a151e8f" -dest_md5="699fd00994fc39018d79634074c80a54" - diff --git a/.import/water_3.png-5e9524ae85dce7bc5ffd28531546dc61.stex b/.import/water_3.png-5e9524ae85dce7bc5ffd28531546dc61.stex deleted file mode 100644 index f5f3cf0..0000000 Binary files a/.import/water_3.png-5e9524ae85dce7bc5ffd28531546dc61.stex and /dev/null differ diff --git a/.import/water_bottom.png-e393cffcc7d5d462a9452f73af8184eb.md5 b/.import/water_bottom.png-e393cffcc7d5d462a9452f73af8184eb.md5 deleted file mode 100644 index 4a44807..0000000 --- a/.import/water_bottom.png-e393cffcc7d5d462a9452f73af8184eb.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="9411656496cf29e49efeb3416b7f0766" -dest_md5="c373833324a7add86a57455f2d1f93b0" - diff --git a/.import/water_bottom.png-e393cffcc7d5d462a9452f73af8184eb.stex b/.import/water_bottom.png-e393cffcc7d5d462a9452f73af8184eb.stex deleted file mode 100644 index d6595ae..0000000 Binary files a/.import/water_bottom.png-e393cffcc7d5d462a9452f73af8184eb.stex and /dev/null differ diff --git a/LICENSE-ASSETS b/LICENSE-ASSETS new file mode 100644 index 0000000..4ea99c2 --- /dev/null +++ b/LICENSE-ASSETS @@ -0,0 +1,395 @@ +Attribution 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/LICENSE-CODE b/LICENSE-CODE new file mode 100644 index 0000000..5dba822 --- /dev/null +++ b/LICENSE-CODE @@ -0,0 +1,7 @@ +Copyright © 2024 Haze Weathers and Penny Rigate + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Main.tscn b/Main.tscn deleted file mode 100644 index 80d3180..0000000 --- a/Main.tscn +++ /dev/null @@ -1,7 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://control.tscn" type="PackedScene" id=1] - -[node name="Main" type="Node2D"] - -[node name="Control" parent="." instance=ExtResource( 1 )] diff --git a/README.md b/README.md new file mode 100644 index 0000000..4ff031d --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# Revolution 2083 +Published source code of [Revolution 2083](https://pennyrigate.itch.io/revolution-2083). + +Feel free to use this to make mods, fangames, whatever you like! It would make +us extra happy to be credited in and/or told about whatever you use this for. + +Apologies in advance for the messy code :) +— Haze + +## License + +Music is by [Scarlett Sylvistrix](https://ivsnyd.bandcamp.com/) and licensed under +the [CC-BY license](LICENSE-ASSETS) except for end credits +cover of "You're Wondering Now". +"You're Wondering Now" is not licensed for re-use. + +All textures and sound effects are by Haze Weathers and Penny Rigate. +They are also licensed under the [CC-BY license](LICENSE-ASSETS). + +All other code and data is licensed under the [MIT license](LICENSE-CODE). diff --git a/addons/godot_state_charts/animation_tree_state.svg b/addons/godot_state_charts/animation_tree_state.svg new file mode 100644 index 0000000..432dac9 --- /dev/null +++ b/addons/godot_state_charts/animation_tree_state.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/addons/godot_state_charts/animation_tree_state.svg.import b/addons/godot_state_charts/animation_tree_state.svg.import new file mode 100644 index 0000000..6d03cb5 --- /dev/null +++ b/addons/godot_state_charts/animation_tree_state.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/animation_tree_state.svg-b99077fc178cfa1e23b2c854c7735c4a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godot_state_charts/animation_tree_state.svg" +dest_files=[ "res://.import/animation_tree_state.svg-b99077fc178cfa1e23b2c854c7735c4a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/godot_state_charts/atomic_state.gd b/addons/godot_state_charts/atomic_state.gd new file mode 100644 index 0000000..4344a31 --- /dev/null +++ b/addons/godot_state_charts/atomic_state.gd @@ -0,0 +1,23 @@ +tool +class_name AtomicState, "atomic_state.svg" +extends State + +func _handle_transition(transition: Transition, source: State) -> void: + # resolve target state + var target = transition.resolve_target() + if not target is State: + push_error("the target state: %s of transition from state: %s is not a state" % [str(transition.to), source.name]) + return + # atomic states can't transition, gotta ask mommy + get_parent()._handle_transition(transition, source) + +func _get_configuration_warning() -> String: + var warning := ._get_configuration_warning() + if not warning.empty(): + return warning + + for child in get_children(): + if not child is Transition: + return "atomic states cannot have children other than transitions" + + return "" diff --git a/addons/godot_state_charts/atomic_state.svg b/addons/godot_state_charts/atomic_state.svg new file mode 100644 index 0000000..85aba01 --- /dev/null +++ b/addons/godot_state_charts/atomic_state.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/addons/godot_state_charts/atomic_state.svg.import b/addons/godot_state_charts/atomic_state.svg.import new file mode 100644 index 0000000..3121bfc --- /dev/null +++ b/addons/godot_state_charts/atomic_state.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/atomic_state.svg-5ab16e5747cef5b5980c4bf84ef9b1af.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godot_state_charts/atomic_state.svg" +dest_files=[ "res://.import/atomic_state.svg-5ab16e5747cef5b5980c4bf84ef9b1af.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/godot_state_charts/compound_state.gd b/addons/godot_state_charts/compound_state.gd new file mode 100644 index 0000000..9f20f5e --- /dev/null +++ b/addons/godot_state_charts/compound_state.gd @@ -0,0 +1,107 @@ +tool +class_name CompoundState, "compound_state.svg" +extends State + +## initial state to activate when state is activated +export var initial_state: NodePath setget _set_initial_state + +var _active_state: State = null + +onready var _initial_state: State = get_node_or_null(initial_state) + +func _set_initial_state(value: NodePath) -> void: + initial_state = value + update_configuration_warning() + +func _state_init() -> void: + ._state_init() + + for child in get_children(): + if child is State: + child._state_init() + +func _state_enter() -> void: + ._state_enter() + + # activate initial state + if _initial_state != null: + _active_state = _initial_state + _active_state._state_enter() + else: + push_error("no initial state set for state %s" % name) + +func _state_exit() -> void: + # deactivate current state + if _active_state != null: + _active_state._state_exit() + _active_state = null + ._state_exit() + +func _state_event(event: String) -> bool: + if not active: + return false + + # forward event to active state + if is_instance_valid(_active_state): + if _active_state._state_event(event): + emit_signal("event_received", event) + return true + + # if event not handled by active state, handle here + return ._state_event(event) + +func _handle_transition(transition: Transition, source: State) -> void: + var target: State = transition.resolve_target() + if not target is State: + push_error("the target state: %s of transition from state: %s is not a state" % [str(transition.to), source.name]) + return + + if target.active: + return + + # if direct child, just switch active state + if target in get_children(): + # deactivate current state + if is_instance_valid(_active_state): + _active_state._state_exit() + # activate target state + _active_state = target + _active_state._state_enter() + return + + # if ancestor, activate next state down and let it handle transition further + if self.is_a_parent_of(target): + # find which child is also ancestor + for child in get_children(): + if child.is_a_parent_of(target): + # change state if necessary + if _active_state != child: + if is_instance_valid(_active_state): + _active_state._state_exit() + _active_state = child + _active_state._state_enter() + child._handle_transition(transition, source) + return + return + + # target is a cousin, defer to mommy + get_parent()._handle_transition(transition, source) + +func _get_configuration_warning() -> String: + var warning := ._get_configuration_warning() + if not warning.empty(): + return warning + + if get_child_count() == 0: + return "compound states must have at least one child state" + + var child_state = get_node_or_null(initial_state) + + if not is_instance_valid(child_state): + return "initial state not found, is the path correct?" + if child_state.get_parent() != self: + return "initial state must be a direct child of this compound state" + if not child_state is State: + return "initial state must be a State" + + return "" diff --git a/addons/godot_state_charts/compound_state.svg b/addons/godot_state_charts/compound_state.svg new file mode 100644 index 0000000..5a3c507 --- /dev/null +++ b/addons/godot_state_charts/compound_state.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/godot_state_charts/compound_state.svg.import b/addons/godot_state_charts/compound_state.svg.import new file mode 100644 index 0000000..14d57d6 --- /dev/null +++ b/addons/godot_state_charts/compound_state.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/compound_state.svg-84780d78ec1f15e1cbb9d20f4df031a7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godot_state_charts/compound_state.svg" +dest_files=[ "res://.import/compound_state.svg-84780d78ec1f15e1cbb9d20f4df031a7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/godot_state_charts/godot_state_charts.gd b/addons/godot_state_charts/godot_state_charts.gd new file mode 100644 index 0000000..5e8aeaa --- /dev/null +++ b/addons/godot_state_charts/godot_state_charts.gd @@ -0,0 +1,10 @@ +tool +extends EditorPlugin + +# plugin initialization +func _enter_tree() -> void: + pass + +# plugin cleanup +func _exit_tree() -> void: + pass diff --git a/addons/godot_state_charts/history_state.svg b/addons/godot_state_charts/history_state.svg new file mode 100644 index 0000000..5bc1314 --- /dev/null +++ b/addons/godot_state_charts/history_state.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/godot_state_charts/history_state.svg.import b/addons/godot_state_charts/history_state.svg.import new file mode 100644 index 0000000..2617264 --- /dev/null +++ b/addons/godot_state_charts/history_state.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/history_state.svg-7ed355ddc4d844fa3139e70c23187edd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godot_state_charts/history_state.svg" +dest_files=[ "res://.import/history_state.svg-7ed355ddc4d844fa3139e70c23187edd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/godot_state_charts/parallel_state.gd b/addons/godot_state_charts/parallel_state.gd new file mode 100644 index 0000000..2b8d4df --- /dev/null +++ b/addons/godot_state_charts/parallel_state.gd @@ -0,0 +1,53 @@ +tool +class_name ParallelState, "parallel_state.svg" +extends State + +var _sub_states: Array = [] + +func _state_init() -> void: + ._state_init() + + for child in get_children(): + if child is State: + _sub_states.append(child) + child._state_init() + +func _state_enter() -> void: + ._state_enter() + # enter all children + for child in _sub_states: + child._state_enter() + +func _state_exit() -> void: + # exit all children + for child in _sub_states: + child._state_exit() + ._state_exit() + +func _state_event(event: String) -> bool: + if not active: + return false + + # forward to all children + var handled := false + for child in _sub_states: + var child_handled = child._state_event(event) + handled = handled or child_handled + + # if child handled event, no more touchy + if handled: + emit_signal("event_received", event) + return true + + # otherwise handle ourselves + return ._state_event(event) + +func _get_configuration_warning() -> String: + var warning := ._get_configuration_warning() + if not warning.empty(): + return warning + + if get_child_count() == 0: + return "parallel states should have at least one child state" + + return "" diff --git a/addons/godot_state_charts/parallel_state.svg b/addons/godot_state_charts/parallel_state.svg new file mode 100644 index 0000000..1f5e220 --- /dev/null +++ b/addons/godot_state_charts/parallel_state.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/godot_state_charts/parallel_state.svg.import b/addons/godot_state_charts/parallel_state.svg.import new file mode 100644 index 0000000..f24030c --- /dev/null +++ b/addons/godot_state_charts/parallel_state.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/parallel_state.svg-33f40e94bafae79f072d67563e0adcd3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godot_state_charts/parallel_state.svg" +dest_files=[ "res://.import/parallel_state.svg-33f40e94bafae79f072d67563e0adcd3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/godot_state_charts/plugin.cfg b/addons/godot_state_charts/plugin.cfg new file mode 100644 index 0000000..b2ad71a --- /dev/null +++ b/addons/godot_state_charts/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="Godot State Charts" +description="A simple, yet powerful state charts library for Godot" +author="derkork" +version="0.0.1" +script="godot_state_charts.gd" diff --git a/addons/godot_state_charts/state.gd b/addons/godot_state_charts/state.gd new file mode 100644 index 0000000..83b09b3 --- /dev/null +++ b/addons/godot_state_charts/state.gd @@ -0,0 +1,132 @@ +tool +class_name State, "state.svg" +extends Node + +## called when state is entered +signal state_entered() + +## called when state is exited +signal state_exited() + +## called when state recieves an event while active +signal event_received(event) + +## called when the state is processing +signal state_processing(delta) + +## called when the state is physics_processing +signal state_physics_processing(delta) + +## processing mode +enum ProcessMode {IDLE, PHYSICS} + +## whether to process transition delays during physics or idle frames +export (ProcessMode) var transition_process_mode: int = ProcessMode.PHYSICS +## events to consume so that parent state can not +export (Array, String) var consumed_events: Array = [] + +## whether the current state is active +var active: bool setget _set_active +func _set_active(value: bool): + active = value + set_process(value) + set_physics_process(value) + +## all of the state's transitions +var _transitions: Array = [] +## queued transition to take +var _queued_transition: Transition = null +## time until queued transition is taken +var _queued_transition_time: float = 0.0 + +## called when building the state chart +func _state_init() -> void: + _set_active(false) + + # get references to transitions + _transitions.clear() + for child in get_children(): + if child is Transition: + _transitions.append(child as Transition) + +## called when state is entered +func _state_enter() -> void: + _set_active(true) + emit_signal("state_entered") + + # check eventless transitions + for transition in _transitions: + if not transition.has_event() and transition.evaluate_guard(): + # first match is taken + _queue_transition(transition) + +## called when state is exited +func _state_exit() -> void: + _set_active(false) + emit_signal("state_exited") + +## handles given event. returns true if it is consumed +func _state_event(event: String) -> bool: + if not active: + return false + + # emit event received signal + emit_signal("event_received", event) + + #check for transitions reacting to event + for transition in _transitions: + if transition.event == event and transition.evaluate_guard(): + # first match is taken + _queue_transition(transition) + return true + + if event in consumed_events: + return true + + return false + +func _process(delta: float) -> void: + if Engine.editor_hint: + return + + # emit processing signal + emit_signal("state_processing", delta) + + # process transitions if mode is IDLE + if transition_process_mode == ProcessMode.IDLE: + _process_transition(delta) + +func _physics_process(delta: float) -> void: + if Engine.editor_hint: + return + + # emit physics processing signal + emit_signal("state_physics_processing", delta) + + # process transitions if mode is PHYSICS + if transition_process_mode == ProcessMode.PHYSICS: + _process_transition(delta) + +## queues a transition to be taken +func _queue_transition(transition: Transition) -> void: + _queued_transition = transition + _queued_transition_time = transition.delay + +## checks for and processes queued transition +func _process_transition(delta: float) -> void: + # check for queued transition + if _queued_transition != null: + _queued_transition_time -= delta + # if ready, handle transition and clear queue + if _queued_transition_time <= 0.0: + var transition = _queued_transition + _queued_transition = null + _queued_transition_time = 0.0 + _handle_transition(transition, self) + +## attempts to take transition +func _handle_transition(transition: Transition, source: State) -> void: + push_error("state %s cannot handle transitions" % name) + +func _get_configuration_warning() -> String: + return "" diff --git a/addons/godot_state_charts/state.svg b/addons/godot_state_charts/state.svg new file mode 100644 index 0000000..d2a9d95 --- /dev/null +++ b/addons/godot_state_charts/state.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + diff --git a/addons/godot_state_charts/state.svg.import b/addons/godot_state_charts/state.svg.import new file mode 100644 index 0000000..97f5e64 --- /dev/null +++ b/addons/godot_state_charts/state.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/state.svg-282f80c2b8fcf2d526aa3e32719babaf.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godot_state_charts/state.svg" +dest_files=[ "res://.import/state.svg-282f80c2b8fcf2d526aa3e32719babaf.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/godot_state_charts/state_chart.gd b/addons/godot_state_charts/state_chart.gd new file mode 100644 index 0000000..857259a --- /dev/null +++ b/addons/godot_state_charts/state_chart.gd @@ -0,0 +1,69 @@ +tool +class_name StateChart, "state_chart.svg" +extends Node + +## whether chart should initialize on its own or be done manually +export var auto_initialize: bool = true +## whether chart should propagate processing events every frame +export var idle_frame_event: bool = false +export var physics_frame_event: bool = false + +# root state of the state chart +var _state: State = null + +# values available to expression guards +var _guard_properties: Dictionary = {} + +func _ready() -> void: + if Engine.editor_hint: + return + if auto_initialize: + initialize() + +func initialize() -> void: + # make sure only one child exists + if get_child_count() != 1: + push_error("StateChart must have exactly one child") + return + + # verify child is a State + var child = get_child(0) + if not child is State: + push_error("StateChart's child must be a State") + return + + # initialize states + _state = child as State + _state._state_init() + + # enter root state + _state._state_enter() + +## sends an event to be propagated through the states +func send_event(event: String) -> void: + if not is_instance_valid(_state): + push_error("StateChart is not initialized properly") + return + + _state._state_event(event) + +## sets a property available to guard expressions in transitions +func set_guard_property(property: String, value) -> void: + _guard_properties[property] = value + +func _get_configuration_warning() -> String: + if get_child_count() != 1: + return "StateChart must have exactly one child" + if not get_child(0) is State: + return "StateChart's child must be a State" + return "" + +# send frame events that transition can listen to if it should evaluate +# its guard every frame +func _process(delta: float) -> void: + if idle_frame_event: + send_event("idle_frame") + +func _physics_process(delta: float) -> void: + if physics_frame_event: + send_event("physics_frame") diff --git a/addons/godot_state_charts/state_chart.svg b/addons/godot_state_charts/state_chart.svg new file mode 100644 index 0000000..ea66f90 --- /dev/null +++ b/addons/godot_state_charts/state_chart.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/addons/godot_state_charts/state_chart.svg.import b/addons/godot_state_charts/state_chart.svg.import new file mode 100644 index 0000000..37cf872 --- /dev/null +++ b/addons/godot_state_charts/state_chart.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/state_chart.svg-5c268dd045b20d73dfacd5cdf7606676.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godot_state_charts/state_chart.svg" +dest_files=[ "res://.import/state_chart.svg-5c268dd045b20d73dfacd5cdf7606676.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/godot_state_charts/state_chart_debug.gd b/addons/godot_state_charts/state_chart_debug.gd new file mode 100644 index 0000000..9873cfa --- /dev/null +++ b/addons/godot_state_charts/state_chart_debug.gd @@ -0,0 +1,24 @@ +class_name StateChartDebug +extends Tree + +var target: StateChart = null + +func _init() -> void: + set("custom_styles/bg", StyleBoxEmpty.new()) + +func _physics_process(delta: float) -> void: + if target is StateChart and visible: + clear() + var root_state = target.get_child(0) + if root_state is State: + var item = create_item(null) + item.set_text(0, root_state.name) + _find_active_states(root_state, item) + +func _find_active_states(state: State, state_item: TreeItem): + for child in state.get_children(): + if child is State: + if child.active: + var item := create_item(state_item) + item.set_text(0, child.name) + _find_active_states(child, item) diff --git a/addons/godot_state_charts/transition.gd b/addons/godot_state_charts/transition.gd new file mode 100644 index 0000000..0329da8 --- /dev/null +++ b/addons/godot_state_charts/transition.gd @@ -0,0 +1,88 @@ +tool +class_name Transition, "transition.svg" +extends Node + +## cyclic reference workarounds :/ +var _State = load("res://addons/godot_state_charts/state.gd") +var _StateChart = load("res://addons/godot_state_charts/state_chart.gd") + +## state to transition to +export var to: NodePath + +## event to react to for transition +export var event: String + +## delay before taking transition +export var delay: float = 0.0 + +## expression to determine whether to take transition +## if it returns true the transition will be taken +## expression properties added via the StateChart are available here +## if states are listed in `monitored_states`, they will be available as +## boolean properties named "[state]_active" +export (String, MULTILINE) var guard_expression: String + +## states to check if active +## they are available in the guard expression as bools named "[state]_active" +export (Array, NodePath) var checked_states: Array = [] + +## returns true if the transition has an event to react to +func has_event() -> bool: + return event != null and not event.empty() + +## returns the target state +func resolve_target(): + if to == null or to.is_empty(): + return null + + var target = get_node_or_null(to) + if target is _State: + return target + + return null + +## returns true if the transition should be taken at this time +func evaluate_guard() -> bool: + # return true if there is no guard + if guard_expression == null or guard_expression.empty(): + return true + + # find root StateChart + var root = get_parent() + while is_instance_valid(root) and not root is _StateChart: + root = root.get_parent() + if not is_instance_valid(root): + push_error("could not find root StateChart, cannot evaluate expression") + return false + + # combine monitored states with expression properties + var properties: Dictionary = root._guard_properties.duplicate() + for node in checked_states: + var state = get_node_or_null(node) + if is_instance_valid(state) and state is _State: + properties["in_" + state.name] = state.active + + # construct expression and set up properties + var expression := Expression.new() + var input_names = properties.keys() + + # attempt to parse expression + var parse_result = expression.parse(guard_expression, input_names) + if parse_result != OK: + push_error("error parsing expression: " + expression.get_error_text()) + return false + + # create array of input values + var input_values = [] + for input_name in input_names: + input_values.append(properties[input_name]) + + # execute expression and validate result + var result = expression.execute(input_values) + if expression.has_execute_failed(): + push_error("failed to execute expression: " + expression.get_error_text()) + return false + if typeof(result) != TYPE_BOOL: + push_error("result is not a boolean value. returning false") + return false + return result diff --git a/addons/godot_state_charts/transition.svg b/addons/godot_state_charts/transition.svg new file mode 100644 index 0000000..4843d61 --- /dev/null +++ b/addons/godot_state_charts/transition.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/godot_state_charts/transition.svg.import b/addons/godot_state_charts/transition.svg.import new file mode 100644 index 0000000..c829b74 --- /dev/null +++ b/addons/godot_state_charts/transition.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/transition.svg-20a1a52a85a71c731b2386952d47b2f7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godot_state_charts/transition.svg" +dest_files=[ "res://.import/transition.svg-20a1a52a85a71c731b2386952d47b2f7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/audio/glass_break.ogg b/audio/glass_break.ogg new file mode 100644 index 0000000..ecafeb9 Binary files /dev/null and b/audio/glass_break.ogg differ diff --git a/audio/glass_break.ogg.import b/audio/glass_break.ogg.import new file mode 100644 index 0000000..a3f5987 --- /dev/null +++ b/audio/glass_break.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/glass_break.ogg-90d29d1196efeaa1b90b121f831dc311.oggstr" + +[deps] + +source_file="res://audio/glass_break.ogg" +dest_files=[ "res://.import/glass_break.ogg-90d29d1196efeaa1b90b121f831dc311.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/glass_crack.ogg b/audio/glass_crack.ogg new file mode 100644 index 0000000..443b833 Binary files /dev/null and b/audio/glass_crack.ogg differ diff --git a/audio/glass_crack.ogg.import b/audio/glass_crack.ogg.import new file mode 100644 index 0000000..f7188f6 --- /dev/null +++ b/audio/glass_crack.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/glass_crack.ogg-f61a203463634593b8f657b7bd6c8959.oggstr" + +[deps] + +source_file="res://audio/glass_crack.ogg" +dest_files=[ "res://.import/glass_crack.ogg-f61a203463634593b8f657b7bd6c8959.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/glass_crack.wav b/audio/glass_crack.wav new file mode 100644 index 0000000..46115e6 Binary files /dev/null and b/audio/glass_crack.wav differ diff --git a/audio/glass_crack.wav.import b/audio/glass_crack.wav.import new file mode 100644 index 0000000..9a2cc79 --- /dev/null +++ b/audio/glass_crack.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/glass_crack.wav-e7bba5d7d195585aae47530d080ae6b3.sample" + +[deps] + +source_file="res://audio/glass_crack.wav" +dest_files=[ "res://.import/glass_crack.wav-e7bba5d7d195585aae47530d080ae6b3.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/audio/music/74(game_over).ogg b/audio/music/74(game_over).ogg new file mode 100644 index 0000000..50922db Binary files /dev/null and b/audio/music/74(game_over).ogg differ diff --git a/audio/music/74(game_over).ogg.import b/audio/music/74(game_over).ogg.import new file mode 100644 index 0000000..178af66 --- /dev/null +++ b/audio/music/74(game_over).ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/74(game_over).ogg-c8daa270fc6254ebdb545c9163121582.oggstr" + +[deps] + +source_file="res://audio/music/74(game_over).ogg" +dest_files=[ "res://.import/74(game_over).ogg-c8daa270fc6254ebdb545c9163121582.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/BBBBBBBB.ogg b/audio/music/BBBBBBBB.ogg new file mode 100644 index 0000000..5272a3b Binary files /dev/null and b/audio/music/BBBBBBBB.ogg differ diff --git a/audio/music/BBBBBBBB.ogg.import b/audio/music/BBBBBBBB.ogg.import new file mode 100644 index 0000000..73adf81 --- /dev/null +++ b/audio/music/BBBBBBBB.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/BBBBBBBB.ogg-cc9e6a4bb1b385b89207987440a19675.oggstr" + +[deps] + +source_file="res://audio/music/BBBBBBBB.ogg" +dest_files=[ "res://.import/BBBBBBBB.ogg-cc9e6a4bb1b385b89207987440a19675.oggstr" ] + +[params] + +loop=true +loop_offset=12.091 diff --git a/audio/music/burnt_out.ogg b/audio/music/burnt_out.ogg new file mode 100644 index 0000000..7d79f71 Binary files /dev/null and b/audio/music/burnt_out.ogg differ diff --git a/audio/music/burnt_out.ogg.import b/audio/music/burnt_out.ogg.import new file mode 100644 index 0000000..d216c73 --- /dev/null +++ b/audio/music/burnt_out.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/burnt_out.ogg-330f5bc87b626c0f8fed84e8c4c6a359.oggstr" + +[deps] + +source_file="res://audio/music/burnt_out.ogg" +dest_files=[ "res://.import/burnt_out.ogg-330f5bc87b626c0f8fed84e8c4c6a359.oggstr" ] + +[params] + +loop=true +loop_offset=42.507 diff --git a/audio/music/cryokiller.ogg b/audio/music/cryokiller.ogg new file mode 100644 index 0000000..15a7e18 Binary files /dev/null and b/audio/music/cryokiller.ogg differ diff --git a/audio/music/cryokiller.ogg.import b/audio/music/cryokiller.ogg.import new file mode 100644 index 0000000..b630930 --- /dev/null +++ b/audio/music/cryokiller.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/cryokiller.ogg-d287a2f5c24b6c8114a93e405fe3c292.oggstr" + +[deps] + +source_file="res://audio/music/cryokiller.ogg" +dest_files=[ "res://.import/cryokiller.ogg-d287a2f5c24b6c8114a93e405fe3c292.oggstr" ] + +[params] + +loop=true +loop_offset=71.924 diff --git a/audio/music/dusk_park.mp3 b/audio/music/dusk_park.mp3 deleted file mode 100644 index 233199d..0000000 Binary files a/audio/music/dusk_park.mp3 and /dev/null differ diff --git a/audio/music/dusk_park.mp3.import b/audio/music/dusk_park.mp3.import deleted file mode 100644 index 63392a3..0000000 --- a/audio/music/dusk_park.mp3.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -path="res://.import/dusk_park.mp3-4f32391dd5241853bbe02a0e983b8702.mp3str" - -[deps] - -source_file="res://audio/music/dusk_park.mp3" -dest_files=[ "res://.import/dusk_park.mp3-4f32391dd5241853bbe02a0e983b8702.mp3str" ] - -[params] - -loop=true -loop_offset=0 diff --git a/audio/music/dusk_park.ogg b/audio/music/dusk_park.ogg new file mode 100644 index 0000000..92a5dea Binary files /dev/null and b/audio/music/dusk_park.ogg differ diff --git a/audio/music/dusk_park.ogg.import b/audio/music/dusk_park.ogg.import new file mode 100644 index 0000000..d17042e --- /dev/null +++ b/audio/music/dusk_park.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/dusk_park.ogg-66b2f58b4fbcb15fb39169e2ef3dc572.oggstr" + +[deps] + +source_file="res://audio/music/dusk_park.ogg" +dest_files=[ "res://.import/dusk_park.ogg-66b2f58b4fbcb15fb39169e2ef3dc572.oggstr" ] + +[params] + +loop=true +loop_offset=14.25 diff --git a/audio/music/empty_motel.ogg b/audio/music/empty_motel.ogg new file mode 100644 index 0000000..a003762 Binary files /dev/null and b/audio/music/empty_motel.ogg differ diff --git a/audio/music/empty_motel.ogg.import b/audio/music/empty_motel.ogg.import new file mode 100644 index 0000000..9efb447 --- /dev/null +++ b/audio/music/empty_motel.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/empty_motel.ogg-1334b9d142536ba1f2d1ff346aa90c0f.oggstr" + +[deps] + +source_file="res://audio/music/empty_motel.ogg" +dest_files=[ "res://.import/empty_motel.ogg-1334b9d142536ba1f2d1ff346aa90c0f.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/intro.ogg b/audio/music/intro.ogg new file mode 100644 index 0000000..78492ef Binary files /dev/null and b/audio/music/intro.ogg differ diff --git a/audio/music/intro.ogg.import b/audio/music/intro.ogg.import new file mode 100644 index 0000000..65d48c4 --- /dev/null +++ b/audio/music/intro.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/intro.ogg-a141f549457bc6a41bef73e129d9f7b6.oggstr" + +[deps] + +source_file="res://audio/music/intro.ogg" +dest_files=[ "res://.import/intro.ogg-a141f549457bc6a41bef73e129d9f7b6.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/klystron.ogg b/audio/music/klystron.ogg new file mode 100644 index 0000000..190cc6d Binary files /dev/null and b/audio/music/klystron.ogg differ diff --git a/audio/music/klystron.ogg.import b/audio/music/klystron.ogg.import new file mode 100644 index 0000000..90dc0bb --- /dev/null +++ b/audio/music/klystron.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/klystron.ogg-2dce5b1690502308cf909f0b9eda8d99.oggstr" + +[deps] + +source_file="res://audio/music/klystron.ogg" +dest_files=[ "res://.import/klystron.ogg-2dce5b1690502308cf909f0b9eda8d99.oggstr" ] + +[params] + +loop=true +loop_offset=6.775 diff --git a/audio/music/klystron_vip.ogg b/audio/music/klystron_vip.ogg new file mode 100644 index 0000000..ffcd393 Binary files /dev/null and b/audio/music/klystron_vip.ogg differ diff --git a/audio/music/klystron_vip.ogg.import b/audio/music/klystron_vip.ogg.import new file mode 100644 index 0000000..64a3c79 --- /dev/null +++ b/audio/music/klystron_vip.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/klystron_vip.ogg-fb327691a1b5cc895d2d8258fd374fdb.oggstr" + +[deps] + +source_file="res://audio/music/klystron_vip.ogg" +dest_files=[ "res://.import/klystron_vip.ogg-fb327691a1b5cc895d2d8258fd374fdb.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/music/mitten.ogg b/audio/music/mitten.ogg new file mode 100644 index 0000000..12652c0 Binary files /dev/null and b/audio/music/mitten.ogg differ diff --git a/audio/music/mitten.ogg.import b/audio/music/mitten.ogg.import new file mode 100644 index 0000000..68d3125 --- /dev/null +++ b/audio/music/mitten.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mitten.ogg-ca50efac016b8bf1022a91f574ac6ca6.oggstr" + +[deps] + +source_file="res://audio/music/mitten.ogg" +dest_files=[ "res://.import/mitten.ogg-ca50efac016b8bf1022a91f574ac6ca6.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/music/moon_trail.ogg b/audio/music/moon_trail.ogg new file mode 100644 index 0000000..5e211af Binary files /dev/null and b/audio/music/moon_trail.ogg differ diff --git a/audio/music/moon_trail.ogg.import b/audio/music/moon_trail.ogg.import new file mode 100644 index 0000000..7bb348a --- /dev/null +++ b/audio/music/moon_trail.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/moon_trail.ogg-8108eb4067344b396b1f232ad37111d0.oggstr" + +[deps] + +source_file="res://audio/music/moon_trail.ogg" +dest_files=[ "res://.import/moon_trail.ogg-8108eb4067344b396b1f232ad37111d0.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/music/pause.ogg b/audio/music/pause.ogg new file mode 100644 index 0000000..0840ddf Binary files /dev/null and b/audio/music/pause.ogg differ diff --git a/audio/music/pause.ogg.import b/audio/music/pause.ogg.import new file mode 100644 index 0000000..de675f7 --- /dev/null +++ b/audio/music/pause.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/pause.ogg-e880bf592ac2065d4f2c443ae1e801bb.oggstr" + +[deps] + +source_file="res://audio/music/pause.ogg" +dest_files=[ "res://.import/pause.ogg-e880bf592ac2065d4f2c443ae1e801bb.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/music/precision_parasite.ogg b/audio/music/precision_parasite.ogg new file mode 100644 index 0000000..387ac24 Binary files /dev/null and b/audio/music/precision_parasite.ogg differ diff --git a/audio/music/precision_parasite.ogg.import b/audio/music/precision_parasite.ogg.import new file mode 100644 index 0000000..f6c1480 --- /dev/null +++ b/audio/music/precision_parasite.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/precision_parasite.ogg-48c1edc2a47c76aa62b0460e1c85582d.oggstr" + +[deps] + +source_file="res://audio/music/precision_parasite.ogg" +dest_files=[ "res://.import/precision_parasite.ogg-48c1edc2a47c76aa62b0460e1c85582d.oggstr" ] + +[params] + +loop=true +loop_offset=16.684 diff --git a/audio/music/rev83-wondering-now-short.ogg b/audio/music/rev83-wondering-now-short.ogg new file mode 100644 index 0000000..72c4f2f Binary files /dev/null and b/audio/music/rev83-wondering-now-short.ogg differ diff --git a/audio/music/rev83-wondering-now-short.ogg.import b/audio/music/rev83-wondering-now-short.ogg.import new file mode 100644 index 0000000..f469318 --- /dev/null +++ b/audio/music/rev83-wondering-now-short.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/rev83-wondering-now-short.ogg-6a06f237d6afb85ca00721c00a48a0ef.oggstr" + +[deps] + +source_file="res://audio/music/rev83-wondering-now-short.ogg" +dest_files=[ "res://.import/rev83-wondering-now-short.ogg-6a06f237d6afb85ca00721c00a48a0ef.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/rumble_loop.mp3 b/audio/music/rumble_loop.mp3 deleted file mode 100644 index 1523b2a..0000000 Binary files a/audio/music/rumble_loop.mp3 and /dev/null differ diff --git a/audio/music/rumble_loop.mp3.import b/audio/music/rumble_loop.mp3.import deleted file mode 100644 index 1597ad0..0000000 --- a/audio/music/rumble_loop.mp3.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -path="res://.import/rumble_loop.mp3-8296079a496312740d286c71cb69f818.mp3str" - -[deps] - -source_file="res://audio/music/rumble_loop.mp3" -dest_files=[ "res://.import/rumble_loop.mp3-8296079a496312740d286c71cb69f818.mp3str" ] - -[params] - -loop=true -loop_offset=0 diff --git a/audio/music/rumble_loop.ogg b/audio/music/rumble_loop.ogg new file mode 100644 index 0000000..60cd41c Binary files /dev/null and b/audio/music/rumble_loop.ogg differ diff --git a/audio/music/rumble_loop.ogg.import b/audio/music/rumble_loop.ogg.import new file mode 100644 index 0000000..3691484 --- /dev/null +++ b/audio/music/rumble_loop.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/rumble_loop.ogg-75748d2cd32c4c0b3bc7d4e36971e0ce.oggstr" + +[deps] + +source_file="res://audio/music/rumble_loop.ogg" +dest_files=[ "res://.import/rumble_loop.ogg-75748d2cd32c4c0b3bc7d4e36971e0ce.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/music/rumble_revolution.ogg b/audio/music/rumble_revolution.ogg new file mode 100644 index 0000000..a1aa951 Binary files /dev/null and b/audio/music/rumble_revolution.ogg differ diff --git a/audio/music/rumble_revolution.ogg.import b/audio/music/rumble_revolution.ogg.import new file mode 100644 index 0000000..5cea268 --- /dev/null +++ b/audio/music/rumble_revolution.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/rumble_revolution.ogg-f4caaf13c218d7e4e59d5ae9bc9b9d8a.oggstr" + +[deps] + +source_file="res://audio/music/rumble_revolution.ogg" +dest_files=[ "res://.import/rumble_revolution.ogg-f4caaf13c218d7e4e59d5ae9bc9b9d8a.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/rumble_revolution_intro.ogg b/audio/music/rumble_revolution_intro.ogg new file mode 100644 index 0000000..e03b86d Binary files /dev/null and b/audio/music/rumble_revolution_intro.ogg differ diff --git a/audio/music/rumble_revolution_intro.ogg.import b/audio/music/rumble_revolution_intro.ogg.import new file mode 100644 index 0000000..6a48b5b --- /dev/null +++ b/audio/music/rumble_revolution_intro.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/rumble_revolution_intro.ogg-cb37ff1dd71c64fd16566b212babca20.oggstr" + +[deps] + +source_file="res://audio/music/rumble_revolution_intro.ogg" +dest_files=[ "res://.import/rumble_revolution_intro.ogg-cb37ff1dd71c64fd16566b212babca20.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/sleet.ogg b/audio/music/sleet.ogg new file mode 100644 index 0000000..0a40398 Binary files /dev/null and b/audio/music/sleet.ogg differ diff --git a/audio/music/sleet.ogg.import b/audio/music/sleet.ogg.import new file mode 100644 index 0000000..203cd8a --- /dev/null +++ b/audio/music/sleet.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/sleet.ogg-dfb9adcbe69bd6791c93c0f86b073746.oggstr" + +[deps] + +source_file="res://audio/music/sleet.ogg" +dest_files=[ "res://.import/sleet.ogg-dfb9adcbe69bd6791c93c0f86b073746.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/music/sleet0.ogg.import b/audio/music/sleet0.ogg.import new file mode 100644 index 0000000..b987856 --- /dev/null +++ b/audio/music/sleet0.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/sleet0.ogg-89329c21f9cd934500ba65a259d96b96.oggstr" + +[deps] + +source_file="res://audio/music/sleet0.ogg" +dest_files=[ "res://.import/sleet0.ogg-89329c21f9cd934500ba65a259d96b96.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/smokestack.mp3 b/audio/music/smokestack.mp3 deleted file mode 100644 index ae6efd0..0000000 Binary files a/audio/music/smokestack.mp3 and /dev/null differ diff --git a/audio/music/smokestack.mp3.import b/audio/music/smokestack.mp3.import deleted file mode 100644 index 3123980..0000000 --- a/audio/music/smokestack.mp3.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -path="res://.import/smokestack.mp3-27e96096ab30e2a396e177e479e12ab9.mp3str" - -[deps] - -source_file="res://audio/music/smokestack.mp3" -dest_files=[ "res://.import/smokestack.mp3-27e96096ab30e2a396e177e479e12ab9.mp3str" ] - -[params] - -loop=true -loop_offset=0 diff --git a/audio/music/smokestack.ogg b/audio/music/smokestack.ogg new file mode 100644 index 0000000..c0b7b21 Binary files /dev/null and b/audio/music/smokestack.ogg differ diff --git a/audio/music/smokestack.ogg.import b/audio/music/smokestack.ogg.import new file mode 100644 index 0000000..959bbe7 --- /dev/null +++ b/audio/music/smokestack.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/smokestack.ogg-e5ff6f583a64a996a107e20d41fd576d.oggstr" + +[deps] + +source_file="res://audio/music/smokestack.ogg" +dest_files=[ "res://.import/smokestack.ogg-e5ff6f583a64a996a107e20d41fd576d.oggstr" ] + +[params] + +loop=true +loop_offset=10.519 diff --git a/audio/music/spine_v2.ogg b/audio/music/spine_v2.ogg new file mode 100644 index 0000000..ef37551 Binary files /dev/null and b/audio/music/spine_v2.ogg differ diff --git a/audio/music/spine_v2.ogg.import b/audio/music/spine_v2.ogg.import new file mode 100644 index 0000000..6d79c5a --- /dev/null +++ b/audio/music/spine_v2.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/spine_v2.ogg-015bf0c6c191c0ae9ad018801a433c92.oggstr" + +[deps] + +source_file="res://audio/music/spine_v2.ogg" +dest_files=[ "res://.import/spine_v2.ogg-015bf0c6c191c0ae9ad018801a433c92.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/music/the_dirt_under_the_meadow.ogg b/audio/music/the_dirt_under_the_meadow.ogg new file mode 100644 index 0000000..54f5589 Binary files /dev/null and b/audio/music/the_dirt_under_the_meadow.ogg differ diff --git a/audio/music/the_dirt_under_the_meadow.ogg.import b/audio/music/the_dirt_under_the_meadow.ogg.import new file mode 100644 index 0000000..ec30542 --- /dev/null +++ b/audio/music/the_dirt_under_the_meadow.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/the_dirt_under_the_meadow.ogg-ec40b1fe83041819a74174d557b9a8a2.oggstr" + +[deps] + +source_file="res://audio/music/the_dirt_under_the_meadow.ogg" +dest_files=[ "res://.import/the_dirt_under_the_meadow.ogg-ec40b1fe83041819a74174d557b9a8a2.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/vitreous_squares.ogg b/audio/music/vitreous_squares.ogg new file mode 100644 index 0000000..bbbe63c Binary files /dev/null and b/audio/music/vitreous_squares.ogg differ diff --git a/audio/music/vitreous_squares.ogg.import b/audio/music/vitreous_squares.ogg.import new file mode 100644 index 0000000..773e0e1 --- /dev/null +++ b/audio/music/vitreous_squares.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/vitreous_squares.ogg-524c15223b7d282c1532fe2fa5032ad4.oggstr" + +[deps] + +source_file="res://audio/music/vitreous_squares.ogg" +dest_files=[ "res://.import/vitreous_squares.ogg-524c15223b7d282c1532fe2fa5032ad4.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/sounds/2600_charge.ogg b/audio/sounds/2600_charge.ogg new file mode 100644 index 0000000..fbbd272 Binary files /dev/null and b/audio/sounds/2600_charge.ogg differ diff --git a/audio/sounds/2600_charge.ogg.import b/audio/sounds/2600_charge.ogg.import new file mode 100644 index 0000000..2d0a434 --- /dev/null +++ b/audio/sounds/2600_charge.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/2600_charge.ogg-552c059b733cc8184b757ad5155adbff.oggstr" + +[deps] + +source_file="res://audio/sounds/2600_charge.ogg" +dest_files=[ "res://.import/2600_charge.ogg-552c059b733cc8184b757ad5155adbff.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/a_bmilc.ogg b/audio/sounds/a_bmilc.ogg index 583673e..3837a1c 100644 Binary files a/audio/sounds/a_bmilc.ogg and b/audio/sounds/a_bmilc.ogg differ diff --git a/audio/sounds/a_bmilc.ogg.import b/audio/sounds/a_bmilc.ogg.import index 207bbdd..de42cb9 100644 --- a/audio/sounds/a_bmilc.ogg.import +++ b/audio/sounds/a_bmilc.ogg.import @@ -11,5 +11,5 @@ dest_files=[ "res://.import/a_bmilc.ogg-cb786a4aec8fbf031b4e9635d452a4a8.oggstr" [params] -loop=true +loop=false loop_offset=0 diff --git a/audio/sounds/a_bree.wav b/audio/sounds/a_bree.wav deleted file mode 100644 index 9934ee5..0000000 Binary files a/audio/sounds/a_bree.wav and /dev/null differ diff --git a/audio/sounds/a_bree.wav.import b/audio/sounds/a_bree.wav.import deleted file mode 100644 index c7fc368..0000000 --- a/audio/sounds/a_bree.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/a_bree.wav-6a217455eb3593edcc27ac957b5c6218.sample" - -[deps] - -source_file="res://audio/sounds/a_bree.wav" -dest_files=[ "res://.import/a_bree.wav-6a217455eb3593edcc27ac957b5c6218.sample" ] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/audio/sounds/a_climb.ogg b/audio/sounds/a_climb.ogg index 6cb953e..57d6533 100644 Binary files a/audio/sounds/a_climb.ogg and b/audio/sounds/a_climb.ogg differ diff --git a/audio/sounds/a_climb.ogg.import b/audio/sounds/a_climb.ogg.import index ec6bf9d..df33597 100644 --- a/audio/sounds/a_climb.ogg.import +++ b/audio/sounds/a_climb.ogg.import @@ -11,5 +11,5 @@ dest_files=[ "res://.import/a_climb.ogg-478222e5725714de088f1c4b609997c5.oggstr" [params] -loop=true +loop=false loop_offset=0 diff --git a/audio/sounds/a_egg_collect.ogg b/audio/sounds/a_egg_collect.ogg index ef77f6e..4dbd68d 100644 Binary files a/audio/sounds/a_egg_collect.ogg and b/audio/sounds/a_egg_collect.ogg differ diff --git a/audio/sounds/a_egg_shoot.ogg b/audio/sounds/a_egg_shoot.ogg deleted file mode 100644 index 9d36c0b..0000000 Binary files a/audio/sounds/a_egg_shoot.ogg and /dev/null differ diff --git a/audio/sounds/a_hurt.ogg b/audio/sounds/a_hurt.ogg deleted file mode 100644 index fc50d2d..0000000 Binary files a/audio/sounds/a_hurt.ogg and /dev/null differ diff --git a/audio/sounds/a_hurt.ogg.import b/audio/sounds/a_hurt.ogg.import deleted file mode 100644 index b009f5c..0000000 --- a/audio/sounds/a_hurt.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/a_hurt.ogg-a562e9409cf963b74445d6ea13ce9354.oggstr" - -[deps] - -source_file="res://audio/sounds/a_hurt.ogg" -dest_files=[ "res://.import/a_hurt.ogg-a562e9409cf963b74445d6ea13ce9354.oggstr" ] - -[params] - -loop=false -loop_offset=0 diff --git a/audio/sounds/a_jinjo.ogg b/audio/sounds/a_jinjo.ogg deleted file mode 100644 index 6bcae76..0000000 Binary files a/audio/sounds/a_jinjo.ogg and /dev/null differ diff --git a/audio/sounds/a_jinjo.ogg.import b/audio/sounds/a_jinjo.ogg.import deleted file mode 100644 index 128d757..0000000 --- a/audio/sounds/a_jinjo.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/a_jinjo.ogg-4b16bf4d913dc9acb601fc4cd65887c1.oggstr" - -[deps] - -source_file="res://audio/sounds/a_jinjo.ogg" -dest_files=[ "res://.import/a_jinjo.ogg-4b16bf4d913dc9acb601fc4cd65887c1.oggstr" ] - -[params] - -loop=false -loop_offset=0 diff --git a/audio/sounds/absorb_shard.ogg b/audio/sounds/absorb_shard.ogg new file mode 100644 index 0000000..6082d1a Binary files /dev/null and b/audio/sounds/absorb_shard.ogg differ diff --git a/audio/sounds/absorb_shard.ogg.import b/audio/sounds/absorb_shard.ogg.import new file mode 100644 index 0000000..2782995 --- /dev/null +++ b/audio/sounds/absorb_shard.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/absorb_shard.ogg-eb69c32cbec975404891eab572731b58.oggstr" + +[deps] + +source_file="res://audio/sounds/absorb_shard.ogg" +dest_files=[ "res://.import/absorb_shard.ogg-eb69c32cbec975404891eab572731b58.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/arrow_collect.ogg b/audio/sounds/arrow_collect.ogg new file mode 100644 index 0000000..1bb3880 Binary files /dev/null and b/audio/sounds/arrow_collect.ogg differ diff --git a/audio/sounds/arrow_collect.ogg.import b/audio/sounds/arrow_collect.ogg.import new file mode 100644 index 0000000..f54d402 --- /dev/null +++ b/audio/sounds/arrow_collect.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/arrow_collect.ogg-a6db24e54d6e61908a36726a5df41128.oggstr" + +[deps] + +source_file="res://audio/sounds/arrow_collect.ogg" +dest_files=[ "res://.import/arrow_collect.ogg-a6db24e54d6e61908a36726a5df41128.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/arrow_pickup.ogg.import b/audio/sounds/arrow_pickup.ogg.import new file mode 100644 index 0000000..50906a7 --- /dev/null +++ b/audio/sounds/arrow_pickup.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/arrow_pickup.ogg-dd3468a026da10a508aafd753182197f.oggstr" + +[deps] + +source_file="res://audio/sounds/arrow_pickup.ogg" +dest_files=[ "res://.import/arrow_pickup.ogg-dd3468a026da10a508aafd753182197f.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/bone_rattle.ogg.import b/audio/sounds/bone_rattle.ogg.import new file mode 100644 index 0000000..d0e5a5e --- /dev/null +++ b/audio/sounds/bone_rattle.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/bone_rattle.ogg-1b9b692b16f9996980feab0fd8c6899b.oggstr" + +[deps] + +source_file="res://audio/sounds/bone_rattle.ogg" +dest_files=[ "res://.import/bone_rattle.ogg-1b9b692b16f9996980feab0fd8c6899b.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/boss_hurt.ogg.import b/audio/sounds/boss_hurt.ogg.import new file mode 100644 index 0000000..c6a1258 --- /dev/null +++ b/audio/sounds/boss_hurt.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/boss_hurt.ogg-aff6332a4546cc6c13d1adec8be22161.oggstr" + +[deps] + +source_file="res://audio/sounds/boss_hurt.ogg" +dest_files=[ "res://.import/boss_hurt.ogg-aff6332a4546cc6c13d1adec8be22161.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/bubble.ogg b/audio/sounds/bubble.ogg new file mode 100644 index 0000000..bab5803 Binary files /dev/null and b/audio/sounds/bubble.ogg differ diff --git a/audio/sounds/bubble.ogg.import b/audio/sounds/bubble.ogg.import new file mode 100644 index 0000000..fdd6860 --- /dev/null +++ b/audio/sounds/bubble.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/bubble.ogg-3cff0ff1f116f556089f132bc827c01b.oggstr" + +[deps] + +source_file="res://audio/sounds/bubble.ogg" +dest_files=[ "res://.import/bubble.ogg-3cff0ff1f116f556089f132bc827c01b.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/bullet_barrage.ogg b/audio/sounds/bullet_barrage.ogg new file mode 100644 index 0000000..5d0b2a4 Binary files /dev/null and b/audio/sounds/bullet_barrage.ogg differ diff --git a/audio/sounds/bullet_barrage.ogg.import b/audio/sounds/bullet_barrage.ogg.import new file mode 100644 index 0000000..14697d0 --- /dev/null +++ b/audio/sounds/bullet_barrage.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/bullet_barrage.ogg-cecd7e8158fd71975520f9b40ca8b8e8.oggstr" + +[deps] + +source_file="res://audio/sounds/bullet_barrage.ogg" +dest_files=[ "res://.import/bullet_barrage.ogg-cecd7e8158fd71975520f9b40ca8b8e8.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/bullet_barrage0.ogg.import b/audio/sounds/bullet_barrage0.ogg.import new file mode 100644 index 0000000..94ba3ac --- /dev/null +++ b/audio/sounds/bullet_barrage0.ogg.import @@ -0,0 +1,13 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +valid=false + +[deps] + +source_file="res://audio/sounds/bullet_barrage0.ogg" +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/button.ogg b/audio/sounds/button.ogg new file mode 100644 index 0000000..073a0cb Binary files /dev/null and b/audio/sounds/button.ogg differ diff --git a/audio/sounds/button.ogg.import b/audio/sounds/button.ogg.import new file mode 100644 index 0000000..11bdda1 --- /dev/null +++ b/audio/sounds/button.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/button.ogg-c5f23a6f7088dd5f53927529b8710876.oggstr" + +[deps] + +source_file="res://audio/sounds/button.ogg" +dest_files=[ "res://.import/button.ogg-c5f23a6f7088dd5f53927529b8710876.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/coin.wav b/audio/sounds/coin.wav new file mode 100644 index 0000000..c258b39 Binary files /dev/null and b/audio/sounds/coin.wav differ diff --git a/audio/sounds/coin.wav.import b/audio/sounds/coin.wav.import new file mode 100644 index 0000000..24f1394 --- /dev/null +++ b/audio/sounds/coin.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/coin.wav-684b22528021c5adcd535ba4ddcbd887.sample" + +[deps] + +source_file="res://audio/sounds/coin.wav" +dest_files=[ "res://.import/coin.wav-684b22528021c5adcd535ba4ddcbd887.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/audio/sounds/collapse_block_fall.ogg b/audio/sounds/collapse_block_fall.ogg new file mode 100644 index 0000000..ce84ee0 Binary files /dev/null and b/audio/sounds/collapse_block_fall.ogg differ diff --git a/audio/sounds/collapse_block_fall.ogg.import b/audio/sounds/collapse_block_fall.ogg.import new file mode 100644 index 0000000..c137810 --- /dev/null +++ b/audio/sounds/collapse_block_fall.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/collapse_block_fall.ogg-19fc12e4158496504199681c63b367f9.oggstr" + +[deps] + +source_file="res://audio/sounds/collapse_block_fall.ogg" +dest_files=[ "res://.import/collapse_block_fall.ogg-19fc12e4158496504199681c63b367f9.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/confirm.ogg b/audio/sounds/confirm.ogg new file mode 100644 index 0000000..7f85b68 Binary files /dev/null and b/audio/sounds/confirm.ogg differ diff --git a/audio/sounds/confirm.ogg.import b/audio/sounds/confirm.ogg.import new file mode 100644 index 0000000..d49e766 --- /dev/null +++ b/audio/sounds/confirm.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/confirm.ogg-74399903930640aa54bc9194bf595362.oggstr" + +[deps] + +source_file="res://audio/sounds/confirm.ogg" +dest_files=[ "res://.import/confirm.ogg-74399903930640aa54bc9194bf595362.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/cop_shoot.ogg b/audio/sounds/cop_shoot.ogg new file mode 100644 index 0000000..ff5a124 Binary files /dev/null and b/audio/sounds/cop_shoot.ogg differ diff --git a/audio/sounds/cop_shoot.ogg.import b/audio/sounds/cop_shoot.ogg.import new file mode 100644 index 0000000..4096abd --- /dev/null +++ b/audio/sounds/cop_shoot.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/cop_shoot.ogg-9b313ebb8fdaa01b18fd3850d015564e.oggstr" + +[deps] + +source_file="res://audio/sounds/cop_shoot.ogg" +dest_files=[ "res://.import/cop_shoot.ogg-9b313ebb8fdaa01b18fd3850d015564e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/cop_splat.ogg b/audio/sounds/cop_splat.ogg new file mode 100644 index 0000000..20d6aaa Binary files /dev/null and b/audio/sounds/cop_splat.ogg differ diff --git a/audio/sounds/cop_splat.ogg.import b/audio/sounds/cop_splat.ogg.import new file mode 100644 index 0000000..71550bd --- /dev/null +++ b/audio/sounds/cop_splat.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/cop_splat.ogg-5903ad8999d95a4ef126279b8e808331.oggstr" + +[deps] + +source_file="res://audio/sounds/cop_splat.ogg" +dest_files=[ "res://.import/cop_splat.ogg-5903ad8999d95a4ef126279b8e808331.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/copsquash.ogg b/audio/sounds/copsquash.ogg new file mode 100644 index 0000000..b688b4f Binary files /dev/null and b/audio/sounds/copsquash.ogg differ diff --git a/audio/sounds/copsquash.ogg.import b/audio/sounds/copsquash.ogg.import new file mode 100644 index 0000000..c8139b9 --- /dev/null +++ b/audio/sounds/copsquash.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/copsquash.ogg-a2a63a7fc30ae2fd8b3edcf426e02f2a.oggstr" + +[deps] + +source_file="res://audio/sounds/copsquash.ogg" +dest_files=[ "res://.import/copsquash.ogg-a2a63a7fc30ae2fd8b3edcf426e02f2a.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/critical_heat.ogg b/audio/sounds/critical_heat.ogg new file mode 100644 index 0000000..de97809 Binary files /dev/null and b/audio/sounds/critical_heat.ogg differ diff --git a/audio/sounds/critical_heat.ogg.import b/audio/sounds/critical_heat.ogg.import new file mode 100644 index 0000000..5f18653 --- /dev/null +++ b/audio/sounds/critical_heat.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/critical_heat.ogg-c4d74947cf30c204bc7abcc93d69d8d3.oggstr" + +[deps] + +source_file="res://audio/sounds/critical_heat.ogg" +dest_files=[ "res://.import/critical_heat.ogg-c4d74947cf30c204bc7abcc93d69d8d3.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/die.ogg b/audio/sounds/die.ogg new file mode 100644 index 0000000..ced82de Binary files /dev/null and b/audio/sounds/die.ogg differ diff --git a/audio/sounds/die.ogg.import b/audio/sounds/die.ogg.import new file mode 100644 index 0000000..bc71efb --- /dev/null +++ b/audio/sounds/die.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/die.ogg-7c9b7bae34312e63da8e060aed19e984.oggstr" + +[deps] + +source_file="res://audio/sounds/die.ogg" +dest_files=[ "res://.import/die.ogg-7c9b7bae34312e63da8e060aed19e984.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/die.wav b/audio/sounds/die.wav deleted file mode 100644 index e0d3233..0000000 Binary files a/audio/sounds/die.wav and /dev/null differ diff --git a/audio/sounds/die.wav.import b/audio/sounds/die.wav.import deleted file mode 100644 index 83c6a8f..0000000 --- a/audio/sounds/die.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/die.wav-bed4faf3cb9c725fe22ee38040ba1e8d.sample" - -[deps] - -source_file="res://audio/sounds/die.wav" -dest_files=[ "res://.import/die.wav-bed4faf3cb9c725fe22ee38040ba1e8d.sample" ] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/audio/sounds/die_skeleton.ogg b/audio/sounds/die_skeleton.ogg new file mode 100644 index 0000000..43054f0 Binary files /dev/null and b/audio/sounds/die_skeleton.ogg differ diff --git a/audio/sounds/die_skeleton.ogg.import b/audio/sounds/die_skeleton.ogg.import new file mode 100644 index 0000000..154ac05 --- /dev/null +++ b/audio/sounds/die_skeleton.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/die_skeleton.ogg-b5f6dc4a23c68bf3a4e3144ce631922a.oggstr" + +[deps] + +source_file="res://audio/sounds/die_skeleton.ogg" +dest_files=[ "res://.import/die_skeleton.ogg-b5f6dc4a23c68bf3a4e3144ce631922a.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/die_skeleton.wav b/audio/sounds/die_skeleton.wav deleted file mode 100644 index f9df5ff..0000000 Binary files a/audio/sounds/die_skeleton.wav and /dev/null differ diff --git a/audio/sounds/die_skeleton.wav.import b/audio/sounds/die_skeleton.wav.import deleted file mode 100644 index 06c0e7a..0000000 --- a/audio/sounds/die_skeleton.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/die_skeleton.wav-5ebafbb57bab56e76a09d94d4eb83665.sample" - -[deps] - -source_file="res://audio/sounds/die_skeleton.wav" -dest_files=[ "res://.import/die_skeleton.wav-5ebafbb57bab56e76a09d94d4eb83665.sample" ] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/audio/sounds/die_skeleton0.wav.import b/audio/sounds/die_skeleton0.wav.import deleted file mode 100644 index ebb2b98..0000000 --- a/audio/sounds/die_skeleton0.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/die_skeleton0.wav-eab6b1776a44d2159a1e34d3f8ac0cdf.sample" - -[deps] - -source_file="res://audio/sounds/die_skeleton0.wav" -dest_files=[ "res://.import/die_skeleton0.wav-eab6b1776a44d2159a1e34d3f8ac0cdf.sample" ] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/audio/sounds/double_jump.ogg b/audio/sounds/double_jump.ogg new file mode 100644 index 0000000..f8a661a Binary files /dev/null and b/audio/sounds/double_jump.ogg differ diff --git a/audio/sounds/double_jump.ogg.import b/audio/sounds/double_jump.ogg.import new file mode 100644 index 0000000..aeef054 --- /dev/null +++ b/audio/sounds/double_jump.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/double_jump.ogg-267703e555e75324b81d37d5d92308da.oggstr" + +[deps] + +source_file="res://audio/sounds/double_jump.ogg" +dest_files=[ "res://.import/double_jump.ogg-267703e555e75324b81d37d5d92308da.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/explosion.ogg b/audio/sounds/explosion.ogg new file mode 100644 index 0000000..d1c2303 Binary files /dev/null and b/audio/sounds/explosion.ogg differ diff --git a/audio/sounds/explosion.ogg.import b/audio/sounds/explosion.ogg.import new file mode 100644 index 0000000..cb20a51 --- /dev/null +++ b/audio/sounds/explosion.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/explosion.ogg-390c0c53733d8d0ae861fc04f953f471.oggstr" + +[deps] + +source_file="res://audio/sounds/explosion.ogg" +dest_files=[ "res://.import/explosion.ogg-390c0c53733d8d0ae861fc04f953f471.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/explosion_small.ogg b/audio/sounds/explosion_small.ogg new file mode 100644 index 0000000..6c72b24 Binary files /dev/null and b/audio/sounds/explosion_small.ogg differ diff --git a/audio/sounds/explosion_small.ogg.import b/audio/sounds/explosion_small.ogg.import new file mode 100644 index 0000000..015f8ed --- /dev/null +++ b/audio/sounds/explosion_small.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/explosion_small.ogg-5216335c53e96b9f065c97dbab493900.oggstr" + +[deps] + +source_file="res://audio/sounds/explosion_small.ogg" +dest_files=[ "res://.import/explosion_small.ogg-5216335c53e96b9f065c97dbab493900.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/fail_shard.ogg b/audio/sounds/fail_shard.ogg new file mode 100644 index 0000000..0feb89d Binary files /dev/null and b/audio/sounds/fail_shard.ogg differ diff --git a/audio/sounds/fail_shard.ogg.import b/audio/sounds/fail_shard.ogg.import new file mode 100644 index 0000000..4920d06 --- /dev/null +++ b/audio/sounds/fail_shard.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/fail_shard.ogg-f4a17a606ec4c8e07282fd39330025e8.oggstr" + +[deps] + +source_file="res://audio/sounds/fail_shard.ogg" +dest_files=[ "res://.import/fail_shard.ogg-f4a17a606ec4c8e07282fd39330025e8.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/fami_fire.ogg b/audio/sounds/fami_fire.ogg new file mode 100644 index 0000000..1feea51 Binary files /dev/null and b/audio/sounds/fami_fire.ogg differ diff --git a/audio/sounds/fami_fire.ogg.import b/audio/sounds/fami_fire.ogg.import new file mode 100644 index 0000000..e9ff0ca --- /dev/null +++ b/audio/sounds/fami_fire.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/fami_fire.ogg-7d48246f6888726a31873eea08f70a0e.oggstr" + +[deps] + +source_file="res://audio/sounds/fami_fire.ogg" +dest_files=[ "res://.import/fami_fire.ogg-7d48246f6888726a31873eea08f70a0e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/fami_grumble.ogg b/audio/sounds/fami_grumble.ogg new file mode 100644 index 0000000..ff70c8a Binary files /dev/null and b/audio/sounds/fami_grumble.ogg differ diff --git a/audio/sounds/fami_grumble.ogg.import b/audio/sounds/fami_grumble.ogg.import new file mode 100644 index 0000000..6894907 --- /dev/null +++ b/audio/sounds/fami_grumble.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/fami_grumble.ogg-cabbe16ca489c6f315bf9a64fc367c42.oggstr" + +[deps] + +source_file="res://audio/sounds/fami_grumble.ogg" +dest_files=[ "res://.import/fami_grumble.ogg-cabbe16ca489c6f315bf9a64fc367c42.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/fami_hurt.ogg b/audio/sounds/fami_hurt.ogg new file mode 100644 index 0000000..5570b42 Binary files /dev/null and b/audio/sounds/fami_hurt.ogg differ diff --git a/audio/sounds/fami_hurt.ogg.import b/audio/sounds/fami_hurt.ogg.import new file mode 100644 index 0000000..2fb9551 --- /dev/null +++ b/audio/sounds/fami_hurt.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/fami_hurt.ogg-adfce286ee95d8c964b46278ec8ff44c.oggstr" + +[deps] + +source_file="res://audio/sounds/fami_hurt.ogg" +dest_files=[ "res://.import/fami_hurt.ogg-adfce286ee95d8c964b46278ec8ff44c.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/fami_transform.ogg b/audio/sounds/fami_transform.ogg new file mode 100644 index 0000000..0832586 Binary files /dev/null and b/audio/sounds/fami_transform.ogg differ diff --git a/audio/sounds/fami_transform.ogg.import b/audio/sounds/fami_transform.ogg.import new file mode 100644 index 0000000..08a7e4f --- /dev/null +++ b/audio/sounds/fami_transform.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/fami_transform.ogg-36f9a31db915a5c7f08d6eca0c6987e2.oggstr" + +[deps] + +source_file="res://audio/sounds/fami_transform.ogg" +dest_files=[ "res://.import/fami_transform.ogg-36f9a31db915a5c7f08d6eca0c6987e2.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/fami_voice.ogg b/audio/sounds/fami_voice.ogg new file mode 100644 index 0000000..b0e3991 Binary files /dev/null and b/audio/sounds/fami_voice.ogg differ diff --git a/audio/sounds/fami_voice.ogg.import b/audio/sounds/fami_voice.ogg.import new file mode 100644 index 0000000..d955920 --- /dev/null +++ b/audio/sounds/fami_voice.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/fami_voice.ogg-db460be518287a913514bed855116c82.oggstr" + +[deps] + +source_file="res://audio/sounds/fami_voice.ogg" +dest_files=[ "res://.import/fami_voice.ogg-db460be518287a913514bed855116c82.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/famira.ogg b/audio/sounds/famira.ogg new file mode 100644 index 0000000..14cf6fa Binary files /dev/null and b/audio/sounds/famira.ogg differ diff --git a/audio/sounds/famira.ogg.import b/audio/sounds/famira.ogg.import new file mode 100644 index 0000000..094f6ee --- /dev/null +++ b/audio/sounds/famira.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/famira.ogg-a36a49df38f219f1404994bb084b014e.oggstr" + +[deps] + +source_file="res://audio/sounds/famira.ogg" +dest_files=[ "res://.import/famira.ogg-a36a49df38f219f1404994bb084b014e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/famira_die.ogg b/audio/sounds/famira_die.ogg new file mode 100644 index 0000000..7d20e07 Binary files /dev/null and b/audio/sounds/famira_die.ogg differ diff --git a/audio/sounds/famira_die.ogg.import b/audio/sounds/famira_die.ogg.import new file mode 100644 index 0000000..75afbd9 --- /dev/null +++ b/audio/sounds/famira_die.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/famira_die.ogg-5e8656416f24ec451fe959394c386838.oggstr" + +[deps] + +source_file="res://audio/sounds/famira_die.ogg" +dest_files=[ "res://.import/famira_die.ogg-5e8656416f24ec451fe959394c386838.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/final_score.ogg b/audio/sounds/final_score.ogg new file mode 100644 index 0000000..6465fc7 Binary files /dev/null and b/audio/sounds/final_score.ogg differ diff --git a/audio/sounds/final_score.ogg.import b/audio/sounds/final_score.ogg.import new file mode 100644 index 0000000..7f307f3 --- /dev/null +++ b/audio/sounds/final_score.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/final_score.ogg-698b546c7ff0383c5d1646709110ec0f.oggstr" + +[deps] + +source_file="res://audio/sounds/final_score.ogg" +dest_files=[ "res://.import/final_score.ogg-698b546c7ff0383c5d1646709110ec0f.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/gold.wav b/audio/sounds/gold.wav deleted file mode 100644 index 940b6e6..0000000 Binary files a/audio/sounds/gold.wav and /dev/null differ diff --git a/audio/sounds/gold.wav.import b/audio/sounds/gold.wav.import deleted file mode 100644 index 06ab71e..0000000 --- a/audio/sounds/gold.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/gold.wav-ee775767e0e2dcf9ee22b6f2f5807414.sample" - -[deps] - -source_file="res://audio/sounds/gold.wav" -dest_files=[ "res://.import/gold.wav-ee775767e0e2dcf9ee22b6f2f5807414.sample" ] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/audio/sounds/good_job.ogg b/audio/sounds/good_job.ogg new file mode 100644 index 0000000..8eba71b Binary files /dev/null and b/audio/sounds/good_job.ogg differ diff --git a/audio/sounds/good_job.ogg.import b/audio/sounds/good_job.ogg.import new file mode 100644 index 0000000..920a207 --- /dev/null +++ b/audio/sounds/good_job.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/good_job.ogg-9be33b7ca519dfdba26ae8eadb366548.oggstr" + +[deps] + +source_file="res://audio/sounds/good_job.ogg" +dest_files=[ "res://.import/good_job.ogg-9be33b7ca519dfdba26ae8eadb366548.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/good_job_dog.ogg b/audio/sounds/good_job_dog.ogg new file mode 100644 index 0000000..9d427ba Binary files /dev/null and b/audio/sounds/good_job_dog.ogg differ diff --git a/audio/sounds/good_job_dog.ogg.import b/audio/sounds/good_job_dog.ogg.import new file mode 100644 index 0000000..f720b72 --- /dev/null +++ b/audio/sounds/good_job_dog.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/good_job_dog.ogg-fdb26580734a51638687bb48a878a321.oggstr" + +[deps] + +source_file="res://audio/sounds/good_job_dog.ogg" +dest_files=[ "res://.import/good_job_dog.ogg-fdb26580734a51638687bb48a878a321.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/good_job_haze.ogg b/audio/sounds/good_job_haze.ogg new file mode 100644 index 0000000..e17bcf1 Binary files /dev/null and b/audio/sounds/good_job_haze.ogg differ diff --git a/audio/sounds/good_job_haze.ogg.import b/audio/sounds/good_job_haze.ogg.import new file mode 100644 index 0000000..3327955 --- /dev/null +++ b/audio/sounds/good_job_haze.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/good_job_haze.ogg-e620bfd972c99200170ee2de1faaefb9.oggstr" + +[deps] + +source_file="res://audio/sounds/good_job_haze.ogg" +dest_files=[ "res://.import/good_job_haze.ogg-e620bfd972c99200170ee2de1faaefb9.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/good_job_ivy.ogg b/audio/sounds/good_job_ivy.ogg new file mode 100644 index 0000000..2706f0d Binary files /dev/null and b/audio/sounds/good_job_ivy.ogg differ diff --git a/audio/sounds/good_job_ivy.ogg.import b/audio/sounds/good_job_ivy.ogg.import new file mode 100644 index 0000000..1ab002c --- /dev/null +++ b/audio/sounds/good_job_ivy.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/good_job_ivy.ogg-980b3aa2dc9efcf1175aaa1cce605655.oggstr" + +[deps] + +source_file="res://audio/sounds/good_job_ivy.ogg" +dest_files=[ "res://.import/good_job_ivy.ogg-980b3aa2dc9efcf1175aaa1cce605655.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/good_job_penny.ogg b/audio/sounds/good_job_penny.ogg new file mode 100644 index 0000000..d296f03 Binary files /dev/null and b/audio/sounds/good_job_penny.ogg differ diff --git a/audio/sounds/good_job_penny.ogg.import b/audio/sounds/good_job_penny.ogg.import new file mode 100644 index 0000000..6299116 --- /dev/null +++ b/audio/sounds/good_job_penny.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/good_job_penny.ogg-70bcb6e36cc4455c814fcf94355f30c9.oggstr" + +[deps] + +source_file="res://audio/sounds/good_job_penny.ogg" +dest_files=[ "res://.import/good_job_penny.ogg-70bcb6e36cc4455c814fcf94355f30c9.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/gover.ogg b/audio/sounds/gover.ogg new file mode 100644 index 0000000..476c3ba Binary files /dev/null and b/audio/sounds/gover.ogg differ diff --git a/audio/sounds/gover.ogg.import b/audio/sounds/gover.ogg.import new file mode 100644 index 0000000..87a4a9f --- /dev/null +++ b/audio/sounds/gover.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/gover.ogg-71eb4d076c82a3c9c030a4b6d2063858.oggstr" + +[deps] + +source_file="res://audio/sounds/gover.ogg" +dest_files=[ "res://.import/gover.ogg-71eb4d076c82a3c9c030a4b6d2063858.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/gover.wav b/audio/sounds/gover.wav deleted file mode 100644 index f0b5ae3..0000000 Binary files a/audio/sounds/gover.wav and /dev/null differ diff --git a/audio/sounds/gover.wav.import b/audio/sounds/gover.wav.import deleted file mode 100644 index c6270d2..0000000 --- a/audio/sounds/gover.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/gover.wav-fb994db7cb276d7598aad5c659b45fb3.sample" - -[deps] - -source_file="res://audio/sounds/gover.wav" -dest_files=[ "res://.import/gover.wav-fb994db7cb276d7598aad5c659b45fb3.sample" ] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/audio/sounds/great_job_dog.ogg b/audio/sounds/great_job_dog.ogg new file mode 100644 index 0000000..1fbf8ed Binary files /dev/null and b/audio/sounds/great_job_dog.ogg differ diff --git a/audio/sounds/great_job_dog.ogg.import b/audio/sounds/great_job_dog.ogg.import new file mode 100644 index 0000000..7fb2ccc --- /dev/null +++ b/audio/sounds/great_job_dog.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/great_job_dog.ogg-d5861f1eb79f2944ff1fb57a2a380d61.oggstr" + +[deps] + +source_file="res://audio/sounds/great_job_dog.ogg" +dest_files=[ "res://.import/great_job_dog.ogg-d5861f1eb79f2944ff1fb57a2a380d61.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/great_job_haze.ogg b/audio/sounds/great_job_haze.ogg new file mode 100644 index 0000000..ccfa959 Binary files /dev/null and b/audio/sounds/great_job_haze.ogg differ diff --git a/audio/sounds/great_job_haze.ogg.import b/audio/sounds/great_job_haze.ogg.import new file mode 100644 index 0000000..c458b28 --- /dev/null +++ b/audio/sounds/great_job_haze.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/great_job_haze.ogg-eff3cbdd6900d16b1973d95c847b8ff1.oggstr" + +[deps] + +source_file="res://audio/sounds/great_job_haze.ogg" +dest_files=[ "res://.import/great_job_haze.ogg-eff3cbdd6900d16b1973d95c847b8ff1.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/great_job_ivy.ogg b/audio/sounds/great_job_ivy.ogg new file mode 100644 index 0000000..1ec125e Binary files /dev/null and b/audio/sounds/great_job_ivy.ogg differ diff --git a/audio/sounds/great_job_ivy.ogg.import b/audio/sounds/great_job_ivy.ogg.import new file mode 100644 index 0000000..ddfe82d --- /dev/null +++ b/audio/sounds/great_job_ivy.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/great_job_ivy.ogg-c2aefb6f69bb89df5bc185341129b6ca.oggstr" + +[deps] + +source_file="res://audio/sounds/great_job_ivy.ogg" +dest_files=[ "res://.import/great_job_ivy.ogg-c2aefb6f69bb89df5bc185341129b6ca.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/great_job_penny.ogg b/audio/sounds/great_job_penny.ogg new file mode 100644 index 0000000..10a27a4 Binary files /dev/null and b/audio/sounds/great_job_penny.ogg differ diff --git a/audio/sounds/great_job_penny.ogg.import b/audio/sounds/great_job_penny.ogg.import new file mode 100644 index 0000000..98ad084 --- /dev/null +++ b/audio/sounds/great_job_penny.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/great_job_penny.ogg-a9b4c1b6050a8b63442cbfaca9f9b776.oggstr" + +[deps] + +source_file="res://audio/sounds/great_job_penny.ogg" +dest_files=[ "res://.import/great_job_penny.ogg-a9b4c1b6050a8b63442cbfaca9f9b776.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/gun_cock.ogg b/audio/sounds/gun_cock.ogg new file mode 100644 index 0000000..ad55e43 Binary files /dev/null and b/audio/sounds/gun_cock.ogg differ diff --git a/audio/sounds/gun_cock.ogg.import b/audio/sounds/gun_cock.ogg.import new file mode 100644 index 0000000..8e19965 --- /dev/null +++ b/audio/sounds/gun_cock.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/gun_cock.ogg-e3270054d952c50d489fc1e0bd7a71d1.oggstr" + +[deps] + +source_file="res://audio/sounds/gun_cock.ogg" +dest_files=[ "res://.import/gun_cock.ogg-e3270054d952c50d489fc1e0bd7a71d1.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/intro_voiceover.ogg b/audio/sounds/intro_voiceover.ogg new file mode 100644 index 0000000..eb0ab22 Binary files /dev/null and b/audio/sounds/intro_voiceover.ogg differ diff --git a/audio/sounds/intro_voiceover.ogg.import b/audio/sounds/intro_voiceover.ogg.import new file mode 100644 index 0000000..4dc6847 --- /dev/null +++ b/audio/sounds/intro_voiceover.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/intro_voiceover.ogg-394307c1c86e42f9b1d6a08f865fda1d.oggstr" + +[deps] + +source_file="res://audio/sounds/intro_voiceover.ogg" +dest_files=[ "res://.import/intro_voiceover.ogg-394307c1c86e42f9b1d6a08f865fda1d.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/jump.ogg b/audio/sounds/jump.ogg index 8a4c658..7ce2828 100644 Binary files a/audio/sounds/jump.ogg and b/audio/sounds/jump.ogg differ diff --git a/audio/sounds/key.ogg b/audio/sounds/key.ogg new file mode 100644 index 0000000..e0cac37 Binary files /dev/null and b/audio/sounds/key.ogg differ diff --git a/audio/sounds/key.ogg.import b/audio/sounds/key.ogg.import new file mode 100644 index 0000000..3c2826d --- /dev/null +++ b/audio/sounds/key.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/key.ogg-abe49d91e24cd920d0fd05a7c445ad92.oggstr" + +[deps] + +source_file="res://audio/sounds/key.ogg" +dest_files=[ "res://.import/key.ogg-abe49d91e24cd920d0fd05a7c445ad92.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/land.ogg b/audio/sounds/land.ogg new file mode 100644 index 0000000..eb17d83 Binary files /dev/null and b/audio/sounds/land.ogg differ diff --git a/audio/sounds/land.ogg.import b/audio/sounds/land.ogg.import new file mode 100644 index 0000000..a02cb51 --- /dev/null +++ b/audio/sounds/land.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/land.ogg-9d95e8534632340414024141bf32590e.oggstr" + +[deps] + +source_file="res://audio/sounds/land.ogg" +dest_files=[ "res://.import/land.ogg-9d95e8534632340414024141bf32590e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/laser_charge.ogg.import b/audio/sounds/laser_charge.ogg.import new file mode 100644 index 0000000..9eb79a1 --- /dev/null +++ b/audio/sounds/laser_charge.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/laser_charge.ogg-3dd55e9655eb311b462e45b101329c49.oggstr" + +[deps] + +source_file="res://audio/sounds/laser_charge.ogg" +dest_files=[ "res://.import/laser_charge.ogg-3dd55e9655eb311b462e45b101329c49.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/laser_ready.ogg b/audio/sounds/laser_ready.ogg new file mode 100644 index 0000000..e6af735 Binary files /dev/null and b/audio/sounds/laser_ready.ogg differ diff --git a/audio/sounds/laser_ready.ogg.import b/audio/sounds/laser_ready.ogg.import new file mode 100644 index 0000000..8f179ce --- /dev/null +++ b/audio/sounds/laser_ready.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/laser_ready.ogg-31781bea44cd48185c1814586386ce52.oggstr" + +[deps] + +source_file="res://audio/sounds/laser_ready.ogg" +dest_files=[ "res://.import/laser_ready.ogg-31781bea44cd48185c1814586386ce52.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_creak.ogg b/audio/sounds/mech_creak.ogg new file mode 100644 index 0000000..87e82e8 Binary files /dev/null and b/audio/sounds/mech_creak.ogg differ diff --git a/audio/sounds/mech_creak.ogg.import b/audio/sounds/mech_creak.ogg.import new file mode 100644 index 0000000..acb4acb --- /dev/null +++ b/audio/sounds/mech_creak.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_creak.ogg-79fbe143f3146fc7febbee874f944d6c.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_creak.ogg" +dest_files=[ "res://.import/mech_creak.ogg-79fbe143f3146fc7febbee874f944d6c.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_duck.ogg b/audio/sounds/mech_duck.ogg new file mode 100644 index 0000000..2225181 Binary files /dev/null and b/audio/sounds/mech_duck.ogg differ diff --git a/audio/sounds/mech_duck.ogg.import b/audio/sounds/mech_duck.ogg.import new file mode 100644 index 0000000..66f42dc --- /dev/null +++ b/audio/sounds/mech_duck.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_duck.ogg-f872dbebd84ac9158569244ca28688d9.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_duck.ogg" +dest_files=[ "res://.import/mech_duck.ogg-f872dbebd84ac9158569244ca28688d9.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_hurt_1.ogg b/audio/sounds/mech_hurt_1.ogg new file mode 100644 index 0000000..1aefc37 Binary files /dev/null and b/audio/sounds/mech_hurt_1.ogg differ diff --git a/audio/sounds/mech_hurt_1.ogg.import b/audio/sounds/mech_hurt_1.ogg.import new file mode 100644 index 0000000..5e9c36e --- /dev/null +++ b/audio/sounds/mech_hurt_1.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_hurt_1.ogg-3613187863d4f98f3a9f22e47b611f8f.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_hurt_1.ogg" +dest_files=[ "res://.import/mech_hurt_1.ogg-3613187863d4f98f3a9f22e47b611f8f.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_hurt_2.ogg b/audio/sounds/mech_hurt_2.ogg new file mode 100644 index 0000000..db7565b Binary files /dev/null and b/audio/sounds/mech_hurt_2.ogg differ diff --git a/audio/sounds/mech_hurt_2.ogg.import b/audio/sounds/mech_hurt_2.ogg.import new file mode 100644 index 0000000..23bbed1 --- /dev/null +++ b/audio/sounds/mech_hurt_2.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_hurt_2.ogg-06f2bf8e9e2a35bc165865b277728bc9.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_hurt_2.ogg" +dest_files=[ "res://.import/mech_hurt_2.ogg-06f2bf8e9e2a35bc165865b277728bc9.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_hurt_3.ogg b/audio/sounds/mech_hurt_3.ogg new file mode 100644 index 0000000..0fcb6e5 Binary files /dev/null and b/audio/sounds/mech_hurt_3.ogg differ diff --git a/audio/sounds/mech_hurt_3.ogg.import b/audio/sounds/mech_hurt_3.ogg.import new file mode 100644 index 0000000..e18a670 --- /dev/null +++ b/audio/sounds/mech_hurt_3.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_hurt_3.ogg-a99c2a508a217f16aaa34167044be027.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_hurt_3.ogg" +dest_files=[ "res://.import/mech_hurt_3.ogg-a99c2a508a217f16aaa34167044be027.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_unduck.ogg b/audio/sounds/mech_unduck.ogg new file mode 100644 index 0000000..d4d6eee Binary files /dev/null and b/audio/sounds/mech_unduck.ogg differ diff --git a/audio/sounds/mech_unduck.ogg.import b/audio/sounds/mech_unduck.ogg.import new file mode 100644 index 0000000..a758b94 --- /dev/null +++ b/audio/sounds/mech_unduck.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_unduck.ogg-b986ec111e294ac0b230f17881a5765d.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_unduck.ogg" +dest_files=[ "res://.import/mech_unduck.ogg-b986ec111e294ac0b230f17881a5765d.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_walk.ogg b/audio/sounds/mech_walk.ogg new file mode 100644 index 0000000..2d044ef Binary files /dev/null and b/audio/sounds/mech_walk.ogg differ diff --git a/audio/sounds/mech_walk.ogg.import b/audio/sounds/mech_walk.ogg.import new file mode 100644 index 0000000..c6d3239 --- /dev/null +++ b/audio/sounds/mech_walk.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_walk.ogg-13e00915dfb31c8d2d1b15a28b1f75cd.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_walk.ogg" +dest_files=[ "res://.import/mech_walk.ogg-13e00915dfb31c8d2d1b15a28b1f75cd.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/sounds/mech_walk_1.ogg b/audio/sounds/mech_walk_1.ogg new file mode 100644 index 0000000..f1d41e9 Binary files /dev/null and b/audio/sounds/mech_walk_1.ogg differ diff --git a/audio/sounds/mech_walk_1.ogg.import b/audio/sounds/mech_walk_1.ogg.import new file mode 100644 index 0000000..3f20404 --- /dev/null +++ b/audio/sounds/mech_walk_1.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_walk_1.ogg-6dd72afbb891524efea9f536bdc85d49.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_walk_1.ogg" +dest_files=[ "res://.import/mech_walk_1.ogg-6dd72afbb891524efea9f536bdc85d49.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_walk_2.ogg b/audio/sounds/mech_walk_2.ogg new file mode 100644 index 0000000..0829543 Binary files /dev/null and b/audio/sounds/mech_walk_2.ogg differ diff --git a/audio/sounds/mech_walk_2.ogg.import b/audio/sounds/mech_walk_2.ogg.import new file mode 100644 index 0000000..15d2bb3 --- /dev/null +++ b/audio/sounds/mech_walk_2.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_walk_2.ogg-227b24128e178813bb6e6b045d76ba8a.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_walk_2.ogg" +dest_files=[ "res://.import/mech_walk_2.ogg-227b24128e178813bb6e6b045d76ba8a.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mkey.ogg b/audio/sounds/mkey.ogg new file mode 100644 index 0000000..caf32e3 Binary files /dev/null and b/audio/sounds/mkey.ogg differ diff --git a/audio/sounds/mkey.ogg.import b/audio/sounds/mkey.ogg.import new file mode 100644 index 0000000..d42e7bc --- /dev/null +++ b/audio/sounds/mkey.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mkey.ogg-7944854b21b3d16eba279472b4dd6c34.oggstr" + +[deps] + +source_file="res://audio/sounds/mkey.ogg" +dest_files=[ "res://.import/mkey.ogg-7944854b21b3d16eba279472b4dd6c34.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_come_here.ogg b/audio/sounds/msx_come_here.ogg new file mode 100644 index 0000000..cc67b80 Binary files /dev/null and b/audio/sounds/msx_come_here.ogg differ diff --git a/audio/sounds/msx_come_here.ogg.import b/audio/sounds/msx_come_here.ogg.import new file mode 100644 index 0000000..629729e --- /dev/null +++ b/audio/sounds/msx_come_here.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_come_here.ogg-10fac8d8cfd4cbcf7be954fa7cb4bb10.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_come_here.ogg" +dest_files=[ "res://.import/msx_come_here.ogg-10fac8d8cfd4cbcf7be954fa7cb4bb10.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_die.ogg b/audio/sounds/msx_die.ogg new file mode 100644 index 0000000..daef6e4 Binary files /dev/null and b/audio/sounds/msx_die.ogg differ diff --git a/audio/sounds/msx_die.ogg.import b/audio/sounds/msx_die.ogg.import new file mode 100644 index 0000000..2997c2e --- /dev/null +++ b/audio/sounds/msx_die.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_die.ogg-a9422a670490dccce30fe923839a3e49.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_die.ogg" +dest_files=[ "res://.import/msx_die.ogg-a9422a670490dccce30fe923839a3e49.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_fuck.ogg b/audio/sounds/msx_fuck.ogg new file mode 100644 index 0000000..181ef9b Binary files /dev/null and b/audio/sounds/msx_fuck.ogg differ diff --git a/audio/sounds/msx_fuck.ogg.import b/audio/sounds/msx_fuck.ogg.import new file mode 100644 index 0000000..0fd793c --- /dev/null +++ b/audio/sounds/msx_fuck.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_fuck.ogg-b937a7a23918372fa013f112150257cc.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_fuck.ogg" +dest_files=[ "res://.import/msx_fuck.ogg-b937a7a23918372fa013f112150257cc.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_fucking_cop.ogg b/audio/sounds/msx_fucking_cop.ogg new file mode 100644 index 0000000..b4b2e75 Binary files /dev/null and b/audio/sounds/msx_fucking_cop.ogg differ diff --git a/audio/sounds/msx_fucking_cop.ogg.import b/audio/sounds/msx_fucking_cop.ogg.import new file mode 100644 index 0000000..3d67423 --- /dev/null +++ b/audio/sounds/msx_fucking_cop.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_fucking_cop.ogg-c49ee106151ffaa154ca9906a47e988e.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_fucking_cop.ogg" +dest_files=[ "res://.import/msx_fucking_cop.ogg-c49ee106151ffaa154ca9906a47e988e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_goddammit.ogg b/audio/sounds/msx_goddammit.ogg new file mode 100644 index 0000000..455538d Binary files /dev/null and b/audio/sounds/msx_goddammit.ogg differ diff --git a/audio/sounds/msx_goddammit.ogg.import b/audio/sounds/msx_goddammit.ogg.import new file mode 100644 index 0000000..cd09e60 --- /dev/null +++ b/audio/sounds/msx_goddammit.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_goddammit.ogg-c739df3b80e1e6f3d11b4b46346a1e24.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_goddammit.ogg" +dest_files=[ "res://.import/msx_goddammit.ogg-c739df3b80e1e6f3d11b4b46346a1e24.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_help_me_get_outta_here.ogg b/audio/sounds/msx_help_me_get_outta_here.ogg new file mode 100644 index 0000000..0b57cb1 Binary files /dev/null and b/audio/sounds/msx_help_me_get_outta_here.ogg differ diff --git a/audio/sounds/msx_help_me_get_outta_here.ogg.import b/audio/sounds/msx_help_me_get_outta_here.ogg.import new file mode 100644 index 0000000..0a3829a --- /dev/null +++ b/audio/sounds/msx_help_me_get_outta_here.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_help_me_get_outta_here.ogg-270d862b9b5346afeb970c07d6c8a47b.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_help_me_get_outta_here.ogg" +dest_files=[ "res://.import/msx_help_me_get_outta_here.ogg-270d862b9b5346afeb970c07d6c8a47b.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_here_take_this.wav b/audio/sounds/msx_here_take_this.wav new file mode 100644 index 0000000..8129d20 Binary files /dev/null and b/audio/sounds/msx_here_take_this.wav differ diff --git a/audio/sounds/msx_here_take_this.wav.import b/audio/sounds/msx_here_take_this.wav.import new file mode 100644 index 0000000..89ac8a8 --- /dev/null +++ b/audio/sounds/msx_here_take_this.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/msx_here_take_this.wav-44c3d77c989b2c235758f53cf50ab9d1.sample" + +[deps] + +source_file="res://audio/sounds/msx_here_take_this.wav" +dest_files=[ "res://.import/msx_here_take_this.wav-44c3d77c989b2c235758f53cf50ab9d1.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/audio/sounds/msx_motherfucker.ogg b/audio/sounds/msx_motherfucker.ogg new file mode 100644 index 0000000..9282a83 Binary files /dev/null and b/audio/sounds/msx_motherfucker.ogg differ diff --git a/audio/sounds/msx_motherfucker.ogg.import b/audio/sounds/msx_motherfucker.ogg.import new file mode 100644 index 0000000..6b08d5d --- /dev/null +++ b/audio/sounds/msx_motherfucker.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_motherfucker.ogg-5f106872c86ed2489eea974b997c9324.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_motherfucker.ogg" +dest_files=[ "res://.import/msx_motherfucker.ogg-5f106872c86ed2489eea974b997c9324.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_shit.ogg b/audio/sounds/msx_shit.ogg new file mode 100644 index 0000000..858e52f Binary files /dev/null and b/audio/sounds/msx_shit.ogg differ diff --git a/audio/sounds/msx_shit.ogg.import b/audio/sounds/msx_shit.ogg.import new file mode 100644 index 0000000..b8f02c3 --- /dev/null +++ b/audio/sounds/msx_shit.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_shit.ogg-3239485c047eb643ccb45ddde6c48e74.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_shit.ogg" +dest_files=[ "res://.import/msx_shit.ogg-3239485c047eb643ccb45ddde6c48e74.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/new_glass_break.ogg b/audio/sounds/new_glass_break.ogg new file mode 100644 index 0000000..67d43e5 Binary files /dev/null and b/audio/sounds/new_glass_break.ogg differ diff --git a/audio/sounds/new_glass_break.ogg.import b/audio/sounds/new_glass_break.ogg.import new file mode 100644 index 0000000..174c833 --- /dev/null +++ b/audio/sounds/new_glass_break.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/new_glass_break.ogg-fbd6d1bed95228de08fb65aac302483f.oggstr" + +[deps] + +source_file="res://audio/sounds/new_glass_break.ogg" +dest_files=[ "res://.import/new_glass_break.ogg-fbd6d1bed95228de08fb65aac302483f.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/oi_sg.ogg b/audio/sounds/oi_sg.ogg new file mode 100644 index 0000000..76265fb Binary files /dev/null and b/audio/sounds/oi_sg.ogg differ diff --git a/audio/sounds/oi_sg.ogg.import b/audio/sounds/oi_sg.ogg.import new file mode 100644 index 0000000..0d0afe5 --- /dev/null +++ b/audio/sounds/oi_sg.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/oi_sg.ogg-ab72b502c36749cb6d98be5482c583fc.oggstr" + +[deps] + +source_file="res://audio/sounds/oi_sg.ogg" +dest_files=[ "res://.import/oi_sg.ogg-ab72b502c36749cb6d98be5482c583fc.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/ominous.ogg b/audio/sounds/ominous.ogg new file mode 100644 index 0000000..bdad3d2 Binary files /dev/null and b/audio/sounds/ominous.ogg differ diff --git a/audio/sounds/ominous.ogg.import b/audio/sounds/ominous.ogg.import new file mode 100644 index 0000000..98dea53 --- /dev/null +++ b/audio/sounds/ominous.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/ominous.ogg-2cb3fd446cacd9e83817a015cfcd0bdc.oggstr" + +[deps] + +source_file="res://audio/sounds/ominous.ogg" +dest_files=[ "res://.import/ominous.ogg-2cb3fd446cacd9e83817a015cfcd0bdc.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/peaks/good_job_ivy.ogg.reapeaks b/audio/sounds/peaks/good_job_ivy.ogg.reapeaks new file mode 100644 index 0000000..ea58dda Binary files /dev/null and b/audio/sounds/peaks/good_job_ivy.ogg.reapeaks differ diff --git a/audio/sounds/rainbow_laser.ogg b/audio/sounds/rainbow_laser.ogg new file mode 100644 index 0000000..65d037f Binary files /dev/null and b/audio/sounds/rainbow_laser.ogg differ diff --git a/audio/sounds/rainbow_laser.ogg.import b/audio/sounds/rainbow_laser.ogg.import new file mode 100644 index 0000000..6f94e6d --- /dev/null +++ b/audio/sounds/rainbow_laser.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/rainbow_laser.ogg-7d2683f3b74c09ae5cb1bcff7c94d244.oggstr" + +[deps] + +source_file="res://audio/sounds/rainbow_laser.ogg" +dest_files=[ "res://.import/rainbow_laser.ogg-7d2683f3b74c09ae5cb1bcff7c94d244.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/resolve.ogg b/audio/sounds/resolve.ogg new file mode 100644 index 0000000..3901ddc Binary files /dev/null and b/audio/sounds/resolve.ogg differ diff --git a/audio/sounds/resolve.ogg.import b/audio/sounds/resolve.ogg.import new file mode 100644 index 0000000..8948903 --- /dev/null +++ b/audio/sounds/resolve.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/resolve.ogg-36be71144d2911079a46c9c668920ec6.oggstr" + +[deps] + +source_file="res://audio/sounds/resolve.ogg" +dest_files=[ "res://.import/resolve.ogg-36be71144d2911079a46c9c668920ec6.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revo83haze.ogg.import b/audio/sounds/revo83haze.ogg.import new file mode 100644 index 0000000..9548233 --- /dev/null +++ b/audio/sounds/revo83haze.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revo83haze.ogg-1cf485529c66b9ff34f0e10dd1ce5d91.oggstr" + +[deps] + +source_file="res://audio/sounds/revo83haze.ogg" +dest_files=[ "res://.import/revo83haze.ogg-1cf485529c66b9ff34f0e10dd1ce5d91.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revo83penny.ogg.import b/audio/sounds/revo83penny.ogg.import new file mode 100644 index 0000000..85bb9a3 --- /dev/null +++ b/audio/sounds/revo83penny.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revo83penny.ogg-7bf73d02017da5795744a50fb3733d1e.oggstr" + +[deps] + +source_file="res://audio/sounds/revo83penny.ogg" +dest_files=[ "res://.import/revo83penny.ogg-7bf73d02017da5795744a50fb3733d1e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revolution2083.ogg b/audio/sounds/revolution2083.ogg new file mode 100644 index 0000000..2f8dfd9 Binary files /dev/null and b/audio/sounds/revolution2083.ogg differ diff --git a/audio/sounds/revolution2083.ogg.import b/audio/sounds/revolution2083.ogg.import new file mode 100644 index 0000000..5989783 --- /dev/null +++ b/audio/sounds/revolution2083.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revolution2083.ogg-d47e8251a75748ee057f8c0968c8ab80.oggstr" + +[deps] + +source_file="res://audio/sounds/revolution2083.ogg" +dest_files=[ "res://.import/revolution2083.ogg-d47e8251a75748ee057f8c0968c8ab80.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revolution2083_dog.ogg b/audio/sounds/revolution2083_dog.ogg new file mode 100644 index 0000000..4c662df Binary files /dev/null and b/audio/sounds/revolution2083_dog.ogg differ diff --git a/audio/sounds/revolution2083_dog.ogg.import b/audio/sounds/revolution2083_dog.ogg.import new file mode 100644 index 0000000..1dcf6b1 --- /dev/null +++ b/audio/sounds/revolution2083_dog.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revolution2083_dog.ogg-4110fb770d11e4388608404992b040bf.oggstr" + +[deps] + +source_file="res://audio/sounds/revolution2083_dog.ogg" +dest_files=[ "res://.import/revolution2083_dog.ogg-4110fb770d11e4388608404992b040bf.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revolution2083_haze.ogg b/audio/sounds/revolution2083_haze.ogg new file mode 100644 index 0000000..1f7b881 Binary files /dev/null and b/audio/sounds/revolution2083_haze.ogg differ diff --git a/audio/sounds/revolution2083_haze.ogg.import b/audio/sounds/revolution2083_haze.ogg.import new file mode 100644 index 0000000..5b3f33a --- /dev/null +++ b/audio/sounds/revolution2083_haze.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revolution2083_haze.ogg-247473aee090b187f949b1e5c093f822.oggstr" + +[deps] + +source_file="res://audio/sounds/revolution2083_haze.ogg" +dest_files=[ "res://.import/revolution2083_haze.ogg-247473aee090b187f949b1e5c093f822.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revolution2083_ivy.ogg b/audio/sounds/revolution2083_ivy.ogg new file mode 100644 index 0000000..b6c691a Binary files /dev/null and b/audio/sounds/revolution2083_ivy.ogg differ diff --git a/audio/sounds/revolution2083_ivy.ogg.import b/audio/sounds/revolution2083_ivy.ogg.import new file mode 100644 index 0000000..f564dd0 --- /dev/null +++ b/audio/sounds/revolution2083_ivy.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revolution2083_ivy.ogg-2a69fc8e172b84075408eaaea361e6d0.oggstr" + +[deps] + +source_file="res://audio/sounds/revolution2083_ivy.ogg" +dest_files=[ "res://.import/revolution2083_ivy.ogg-2a69fc8e172b84075408eaaea361e6d0.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revolution2083_penny.ogg b/audio/sounds/revolution2083_penny.ogg new file mode 100644 index 0000000..5a9f9d4 Binary files /dev/null and b/audio/sounds/revolution2083_penny.ogg differ diff --git a/audio/sounds/revolution2083_penny.ogg.import b/audio/sounds/revolution2083_penny.ogg.import new file mode 100644 index 0000000..5b34435 --- /dev/null +++ b/audio/sounds/revolution2083_penny.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revolution2083_penny.ogg-8b34787bef0f21de0eca352023586915.oggstr" + +[deps] + +source_file="res://audio/sounds/revolution2083_penny.ogg" +dest_files=[ "res://.import/revolution2083_penny.ogg-8b34787bef0f21de0eca352023586915.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/scrump_die.ogg b/audio/sounds/scrump_die.ogg new file mode 100644 index 0000000..524d5c9 Binary files /dev/null and b/audio/sounds/scrump_die.ogg differ diff --git a/audio/sounds/scrump_die.ogg.import b/audio/sounds/scrump_die.ogg.import new file mode 100644 index 0000000..ab882d0 --- /dev/null +++ b/audio/sounds/scrump_die.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/scrump_die.ogg-425a95c5992a12c9f1281ba34b4cd7ab.oggstr" + +[deps] + +source_file="res://audio/sounds/scrump_die.ogg" +dest_files=[ "res://.import/scrump_die.ogg-425a95c5992a12c9f1281ba34b4cd7ab.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/scrump_hurt.ogg b/audio/sounds/scrump_hurt.ogg new file mode 100644 index 0000000..255d171 Binary files /dev/null and b/audio/sounds/scrump_hurt.ogg differ diff --git a/audio/sounds/scrump_hurt.ogg.import b/audio/sounds/scrump_hurt.ogg.import new file mode 100644 index 0000000..8bdc818 --- /dev/null +++ b/audio/sounds/scrump_hurt.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/scrump_hurt.ogg-d92e1294569fcd24edb105aac58b82ae.oggstr" + +[deps] + +source_file="res://audio/sounds/scrump_hurt.ogg" +dest_files=[ "res://.import/scrump_hurt.ogg-d92e1294569fcd24edb105aac58b82ae.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/scrump_shot.ogg b/audio/sounds/scrump_shot.ogg new file mode 100644 index 0000000..824d346 Binary files /dev/null and b/audio/sounds/scrump_shot.ogg differ diff --git a/audio/sounds/scrump_shot.ogg.import b/audio/sounds/scrump_shot.ogg.import new file mode 100644 index 0000000..7135eb3 --- /dev/null +++ b/audio/sounds/scrump_shot.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/scrump_shot.ogg-2121233fd7311b12322d43621754312b.oggstr" + +[deps] + +source_file="res://audio/sounds/scrump_shot.ogg" +dest_files=[ "res://.import/scrump_shot.ogg-2121233fd7311b12322d43621754312b.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/scrump_shot0.ogg.import b/audio/sounds/scrump_shot0.ogg.import new file mode 100644 index 0000000..fe71fde --- /dev/null +++ b/audio/sounds/scrump_shot0.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/scrump_shot0.ogg-32f9f0aede5e72eee38db4d875309816.oggstr" + +[deps] + +source_file="res://audio/sounds/scrump_shot0.ogg" +dest_files=[ "res://.import/scrump_shot0.ogg-32f9f0aede5e72eee38db4d875309816.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/se_g2.ogg b/audio/sounds/se_g2.ogg new file mode 100644 index 0000000..111a1c0 Binary files /dev/null and b/audio/sounds/se_g2.ogg differ diff --git a/audio/sounds/se_g2.ogg.import b/audio/sounds/se_g2.ogg.import new file mode 100644 index 0000000..6c32623 --- /dev/null +++ b/audio/sounds/se_g2.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/se_g2.ogg-647fc6e2344b491f0492d582ece43c0c.oggstr" + +[deps] + +source_file="res://audio/sounds/se_g2.ogg" +dest_files=[ "res://.import/se_g2.ogg-647fc6e2344b491f0492d582ece43c0c.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/se_g2.wav b/audio/sounds/se_g2.wav new file mode 100644 index 0000000..55ad44b Binary files /dev/null and b/audio/sounds/se_g2.wav differ diff --git a/audio/sounds/se_g2.wav.import b/audio/sounds/se_g2.wav.import new file mode 100644 index 0000000..16491e1 --- /dev/null +++ b/audio/sounds/se_g2.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/se_g2.wav-2200ac432f464093b1975ff4500900fb.sample" + +[deps] + +source_file="res://audio/sounds/se_g2.wav" +dest_files=[ "res://.import/se_g2.wav-2200ac432f464093b1975ff4500900fb.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/audio/sounds/select.ogg b/audio/sounds/select.ogg new file mode 100644 index 0000000..22b98b7 Binary files /dev/null and b/audio/sounds/select.ogg differ diff --git a/audio/sounds/select.ogg.import b/audio/sounds/select.ogg.import new file mode 100644 index 0000000..4996483 --- /dev/null +++ b/audio/sounds/select.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/select.ogg-55c0c25b1ed1eb06fe4396684087acc9.oggstr" + +[deps] + +source_file="res://audio/sounds/select.ogg" +dest_files=[ "res://.import/select.ogg-55c0c25b1ed1eb06fe4396684087acc9.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shard.ogg b/audio/sounds/shard.ogg new file mode 100644 index 0000000..6ce41c5 Binary files /dev/null and b/audio/sounds/shard.ogg differ diff --git a/audio/sounds/shard.ogg.import b/audio/sounds/shard.ogg.import new file mode 100644 index 0000000..d5173d4 --- /dev/null +++ b/audio/sounds/shard.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shard.ogg-4d6798bd7bde9aa4a9982bb512a37701.oggstr" + +[deps] + +source_file="res://audio/sounds/shard.ogg" +dest_files=[ "res://.import/shard.ogg-4d6798bd7bde9aa4a9982bb512a37701.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shard.wav b/audio/sounds/shard.wav deleted file mode 100644 index 75d2cfa..0000000 Binary files a/audio/sounds/shard.wav and /dev/null differ diff --git a/audio/sounds/shard.wav.import b/audio/sounds/shard.wav.import deleted file mode 100644 index 61b3dd6..0000000 --- a/audio/sounds/shard.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/shard.wav-cf382615000aa13776497b1971c06315.sample" - -[deps] - -source_file="res://audio/sounds/shard.wav" -dest_files=[ "res://.import/shard.wav-cf382615000aa13776497b1971c06315.sample" ] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/audio/sounds/shard_expel.ogg b/audio/sounds/shard_expel.ogg new file mode 100644 index 0000000..976d37a Binary files /dev/null and b/audio/sounds/shard_expel.ogg differ diff --git a/audio/sounds/shard_expel.ogg.import b/audio/sounds/shard_expel.ogg.import new file mode 100644 index 0000000..37983b5 --- /dev/null +++ b/audio/sounds/shard_expel.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shard_expel.ogg-ed7f06e69f820e9cc0d8ac8352dd7410.oggstr" + +[deps] + +source_file="res://audio/sounds/shard_expel.ogg" +dest_files=[ "res://.import/shard_expel.ogg-ed7f06e69f820e9cc0d8ac8352dd7410.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shard_float.ogg b/audio/sounds/shard_float.ogg new file mode 100644 index 0000000..c07daa5 Binary files /dev/null and b/audio/sounds/shard_float.ogg differ diff --git a/audio/sounds/shard_float.ogg.import b/audio/sounds/shard_float.ogg.import new file mode 100644 index 0000000..dbbab8f --- /dev/null +++ b/audio/sounds/shard_float.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shard_float.ogg-7af3a7d7ee37bae26e0091ca3a291b05.oggstr" + +[deps] + +source_file="res://audio/sounds/shard_float.ogg" +dest_files=[ "res://.import/shard_float.ogg-7af3a7d7ee37bae26e0091ca3a291b05.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shard_get.ogg b/audio/sounds/shard_get.ogg new file mode 100644 index 0000000..3e6bb47 Binary files /dev/null and b/audio/sounds/shard_get.ogg differ diff --git a/audio/sounds/shard_get.ogg.import b/audio/sounds/shard_get.ogg.import new file mode 100644 index 0000000..d5eaabd --- /dev/null +++ b/audio/sounds/shard_get.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shard_get.ogg-a18bec7b7dd395a2d36d41bfd5cbbacd.oggstr" + +[deps] + +source_file="res://audio/sounds/shard_get.ogg" +dest_files=[ "res://.import/shard_get.ogg-a18bec7b7dd395a2d36d41bfd5cbbacd.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shard_results.ogg b/audio/sounds/shard_results.ogg new file mode 100644 index 0000000..5719577 Binary files /dev/null and b/audio/sounds/shard_results.ogg differ diff --git a/audio/sounds/shard_results.ogg.import b/audio/sounds/shard_results.ogg.import new file mode 100644 index 0000000..8d964a6 --- /dev/null +++ b/audio/sounds/shard_results.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shard_results.ogg-e4052319e009d469e906bde9026be412.oggstr" + +[deps] + +source_file="res://audio/sounds/shard_results.ogg" +dest_files=[ "res://.import/shard_results.ogg-e4052319e009d469e906bde9026be412.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shell.ogg b/audio/sounds/shell.ogg new file mode 100644 index 0000000..a1aa6ae Binary files /dev/null and b/audio/sounds/shell.ogg differ diff --git a/audio/sounds/shell.ogg.import b/audio/sounds/shell.ogg.import new file mode 100644 index 0000000..90fbd66 --- /dev/null +++ b/audio/sounds/shell.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shell.ogg-33573c264b05fde91faa4b27d4763823.oggstr" + +[deps] + +source_file="res://audio/sounds/shell.ogg" +dest_files=[ "res://.import/shell.ogg-33573c264b05fde91faa4b27d4763823.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shoot_arrow.ogg b/audio/sounds/shoot_arrow.ogg new file mode 100644 index 0000000..8de0d72 Binary files /dev/null and b/audio/sounds/shoot_arrow.ogg differ diff --git a/audio/sounds/shoot_arrow.ogg.import b/audio/sounds/shoot_arrow.ogg.import new file mode 100644 index 0000000..04c825f --- /dev/null +++ b/audio/sounds/shoot_arrow.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shoot_arrow.ogg-ba808bde18beb6a17914b29392aff543.oggstr" + +[deps] + +source_file="res://audio/sounds/shoot_arrow.ogg" +dest_files=[ "res://.import/shoot_arrow.ogg-ba808bde18beb6a17914b29392aff543.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/spaghetti.ogg b/audio/sounds/spaghetti.ogg new file mode 100644 index 0000000..8ff6906 Binary files /dev/null and b/audio/sounds/spaghetti.ogg differ diff --git a/audio/sounds/spaghetti.ogg.import b/audio/sounds/spaghetti.ogg.import new file mode 100644 index 0000000..cc6e0f6 --- /dev/null +++ b/audio/sounds/spaghetti.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/spaghetti.ogg-0dfe2ae68627ff9bd860326d9e7db1b5.oggstr" + +[deps] + +source_file="res://audio/sounds/spaghetti.ogg" +dest_files=[ "res://.import/spaghetti.ogg-0dfe2ae68627ff9bd860326d9e7db1b5.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/spark.ogg b/audio/sounds/spark.ogg new file mode 100644 index 0000000..633da5b Binary files /dev/null and b/audio/sounds/spark.ogg differ diff --git a/audio/sounds/spark.ogg.import b/audio/sounds/spark.ogg.import new file mode 100644 index 0000000..00eb7b5 --- /dev/null +++ b/audio/sounds/spark.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/spark.ogg-b7b98b79b91c05a5d1dee21f4057c115.oggstr" + +[deps] + +source_file="res://audio/sounds/spark.ogg" +dest_files=[ "res://.import/spark.ogg-b7b98b79b91c05a5d1dee21f4057c115.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/splash.ogg b/audio/sounds/splash.ogg new file mode 100644 index 0000000..cb21ee0 Binary files /dev/null and b/audio/sounds/splash.ogg differ diff --git a/audio/sounds/splash.ogg.import b/audio/sounds/splash.ogg.import new file mode 100644 index 0000000..0882f3e --- /dev/null +++ b/audio/sounds/splash.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/splash.ogg-610acd136c9f7a4784c72cb5bafa1983.oggstr" + +[deps] + +source_file="res://audio/sounds/splash.ogg" +dest_files=[ "res://.import/splash.ogg-610acd136c9f7a4784c72cb5bafa1983.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/stab.wav b/audio/sounds/stab.wav new file mode 100644 index 0000000..665e7e2 Binary files /dev/null and b/audio/sounds/stab.wav differ diff --git a/audio/sounds/stab.wav.import b/audio/sounds/stab.wav.import new file mode 100644 index 0000000..c019167 --- /dev/null +++ b/audio/sounds/stab.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/stab.wav-c201d15cc0a56178959694372eb53d41.sample" + +[deps] + +source_file="res://audio/sounds/stab.wav" +dest_files=[ "res://.import/stab.wav-c201d15cc0a56178959694372eb53d41.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/audio/sounds/star.ogg b/audio/sounds/star.ogg new file mode 100644 index 0000000..f1a2582 Binary files /dev/null and b/audio/sounds/star.ogg differ diff --git a/audio/sounds/star.ogg.import b/audio/sounds/star.ogg.import new file mode 100644 index 0000000..e8f618d --- /dev/null +++ b/audio/sounds/star.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/star.ogg-3c40a7e30baf45a40bf911884791334e.oggstr" + +[deps] + +source_file="res://audio/sounds/star.ogg" +dest_files=[ "res://.import/star.ogg-3c40a7e30baf45a40bf911884791334e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/sword.ogg b/audio/sounds/sword.ogg index ee8eec6..b393549 100644 Binary files a/audio/sounds/sword.ogg and b/audio/sounds/sword.ogg differ diff --git a/audio/sounds/talking.ogg b/audio/sounds/talking.ogg new file mode 100644 index 0000000..247bdc9 Binary files /dev/null and b/audio/sounds/talking.ogg differ diff --git a/audio/sounds/talking.ogg.import b/audio/sounds/talking.ogg.import new file mode 100644 index 0000000..aac63c1 --- /dev/null +++ b/audio/sounds/talking.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/talking.ogg-fc3a33c101799175c752c54065877385.oggstr" + +[deps] + +source_file="res://audio/sounds/talking.ogg" +dest_files=[ "res://.import/talking.ogg-fc3a33c101799175c752c54065877385.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/teleport.ogg b/audio/sounds/teleport.ogg new file mode 100644 index 0000000..6da5159 Binary files /dev/null and b/audio/sounds/teleport.ogg differ diff --git a/audio/sounds/teleport.ogg.import b/audio/sounds/teleport.ogg.import new file mode 100644 index 0000000..a0199d8 --- /dev/null +++ b/audio/sounds/teleport.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/teleport.ogg-50cf00eaef258b8003f9ab9ed6265018.oggstr" + +[deps] + +source_file="res://audio/sounds/teleport.ogg" +dest_files=[ "res://.import/teleport.ogg-50cf00eaef258b8003f9ab9ed6265018.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/victory.ogg b/audio/sounds/victory.ogg new file mode 100644 index 0000000..22fa7af Binary files /dev/null and b/audio/sounds/victory.ogg differ diff --git a/audio/sounds/victory.ogg.import b/audio/sounds/victory.ogg.import new file mode 100644 index 0000000..6cf7f31 --- /dev/null +++ b/audio/sounds/victory.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/victory.ogg-ae7a84262871a5770722a95b21a7cb57.oggstr" + +[deps] + +source_file="res://audio/sounds/victory.ogg" +dest_files=[ "res://.import/victory.ogg-ae7a84262871a5770722a95b21a7cb57.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/victory_dog.ogg b/audio/sounds/victory_dog.ogg new file mode 100644 index 0000000..07b2627 Binary files /dev/null and b/audio/sounds/victory_dog.ogg differ diff --git a/audio/sounds/victory_dog.ogg.import b/audio/sounds/victory_dog.ogg.import new file mode 100644 index 0000000..9ac2372 --- /dev/null +++ b/audio/sounds/victory_dog.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/victory_dog.ogg-8fc11c95546e6908c2b2cec0ace6c1df.oggstr" + +[deps] + +source_file="res://audio/sounds/victory_dog.ogg" +dest_files=[ "res://.import/victory_dog.ogg-8fc11c95546e6908c2b2cec0ace6c1df.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/victory_haze.ogg b/audio/sounds/victory_haze.ogg new file mode 100644 index 0000000..d4f074b Binary files /dev/null and b/audio/sounds/victory_haze.ogg differ diff --git a/audio/sounds/victory_haze.ogg.import b/audio/sounds/victory_haze.ogg.import new file mode 100644 index 0000000..06c0d28 --- /dev/null +++ b/audio/sounds/victory_haze.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/victory_haze.ogg-027025335f41e37625eab4e085744640.oggstr" + +[deps] + +source_file="res://audio/sounds/victory_haze.ogg" +dest_files=[ "res://.import/victory_haze.ogg-027025335f41e37625eab4e085744640.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/victory_ivy.ogg b/audio/sounds/victory_ivy.ogg new file mode 100644 index 0000000..5523fa6 Binary files /dev/null and b/audio/sounds/victory_ivy.ogg differ diff --git a/audio/sounds/victory_ivy.ogg.import b/audio/sounds/victory_ivy.ogg.import new file mode 100644 index 0000000..4ceb344 --- /dev/null +++ b/audio/sounds/victory_ivy.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/victory_ivy.ogg-90d79b449a26224d7ebee3d1a8729882.oggstr" + +[deps] + +source_file="res://audio/sounds/victory_ivy.ogg" +dest_files=[ "res://.import/victory_ivy.ogg-90d79b449a26224d7ebee3d1a8729882.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/victory_nobonus.ogg b/audio/sounds/victory_nobonus.ogg new file mode 100644 index 0000000..7a09090 Binary files /dev/null and b/audio/sounds/victory_nobonus.ogg differ diff --git a/audio/sounds/victory_nobonus.ogg.import b/audio/sounds/victory_nobonus.ogg.import new file mode 100644 index 0000000..a32c7af --- /dev/null +++ b/audio/sounds/victory_nobonus.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/victory_nobonus.ogg-13f05df78c075383aaddddec05e2dada.oggstr" + +[deps] + +source_file="res://audio/sounds/victory_nobonus.ogg" +dest_files=[ "res://.import/victory_nobonus.ogg-13f05df78c075383aaddddec05e2dada.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/victory_penny.ogg b/audio/sounds/victory_penny.ogg new file mode 100644 index 0000000..4932824 Binary files /dev/null and b/audio/sounds/victory_penny.ogg differ diff --git a/audio/sounds/victory_penny.ogg.import b/audio/sounds/victory_penny.ogg.import new file mode 100644 index 0000000..03db62b --- /dev/null +++ b/audio/sounds/victory_penny.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/victory_penny.ogg-1bf363727ea69db0c09326ac2a97f43a.oggstr" + +[deps] + +source_file="res://audio/sounds/victory_penny.ogg" +dest_files=[ "res://.import/victory_penny.ogg-1bf363727ea69db0c09326ac2a97f43a.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/vulcan.ogg b/audio/sounds/vulcan.ogg new file mode 100644 index 0000000..a037ec6 Binary files /dev/null and b/audio/sounds/vulcan.ogg differ diff --git a/audio/sounds/vulcan.ogg.import b/audio/sounds/vulcan.ogg.import new file mode 100644 index 0000000..7771e65 --- /dev/null +++ b/audio/sounds/vulcan.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/vulcan.ogg-3f1fcecf4fe0d3cd99da6f19e4e3f50a.oggstr" + +[deps] + +source_file="res://audio/sounds/vulcan.ogg" +dest_files=[ "res://.import/vulcan.ogg-3f1fcecf4fe0d3cd99da6f19e4e3f50a.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/zap_wip.ogg b/audio/sounds/zap_wip.ogg new file mode 100644 index 0000000..259e173 Binary files /dev/null and b/audio/sounds/zap_wip.ogg differ diff --git a/audio/sounds/zap_wip.ogg.import b/audio/sounds/zap_wip.ogg.import new file mode 100644 index 0000000..c28ec25 --- /dev/null +++ b/audio/sounds/zap_wip.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/zap_wip.ogg-51e4569934565cf93f128910a5e31bee.oggstr" + +[deps] + +source_file="res://audio/sounds/zap_wip.ogg" +dest_files=[ "res://.import/zap_wip.ogg-51e4569934565cf93f128910a5e31bee.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/autoloads/audio.gd b/autoloads/audio.gd new file mode 100644 index 0000000..f7314a9 --- /dev/null +++ b/autoloads/audio.gd @@ -0,0 +1,141 @@ +extends Node + +#Audio Channels +onready var ac_jump = $JumpSound +onready var ac_collectible = $CollectibleSound +onready var ac_climb = $ClimbSound +onready var ac_die = $DieSound +onready var ac_music = $Music +onready var ac_cheat = $CodeEntrySound +onready var ac_boss = $BossSound +onready var ac_shard = $ShardSound +onready var ac_pause_music = $PauseMusic +onready var ac_menu = $MenuSound +onready var ac_land = $LandSound +onready var ac_voice = $Voice +onready var ac_small_explosion = $SmallExplosion +onready var ac_mech_hurt = $MechHurt +onready var ac_mech_shoot = $MechShoot +#Sounds +const a_key = preload("res://audio/sounds/key.ogg") +const a_arrow = preload("res://audio/sounds/arrow_collect.ogg") +const a_jump = preload("res://audio/sounds/jump.ogg") +const a_star = preload("res://audio/sounds/star.ogg") +const a_shard = preload("res://audio/sounds/shard_get.ogg") +const a_climb_up = preload("res://audio/sounds/a_climb.ogg") +const a_climb_down = preload("res://audio/sounds/a_bmilc.ogg") +const a_sword = preload("res://audio/sounds/sword.ogg") +const a_doublejump = preload("res://audio/sounds/double_jump.ogg") +const a_shoot = preload("res://audio/sounds/shoot_arrow.ogg") +const a_die = preload("res://audio/sounds/die.ogg") +const a_die_splash = preload("res://audio/sounds/splash.ogg") +const a_die_zap = preload("res://audio/sounds/spark.ogg") +const a_die_skeleton = preload("res://audio/sounds/die_skeleton.ogg") +const a_scrump_die = preload("res://audio/sounds/scrump_die.ogg") +const a_explosion = preload("res://audio/sounds/explosion.ogg") +const a_game_over = preload("res://audio/sounds/gover.ogg") +const a_scrump_hurt = preload("res://audio/sounds/scrump_hurt.ogg") +const a_bubble = preload("res://audio/sounds/bubble.ogg") +const a_select = preload("res://audio/sounds/select.ogg") +const a_confirm = preload("res://audio/sounds/confirm.ogg") +const a_bullet_barrage = preload("res://audio/sounds/bullet_barrage.ogg") +const a_rainbow_laser = preload("res://audio/sounds/rainbow_laser.ogg") +const a_spaghetti = preload("res://audio/sounds/spaghetti.ogg") +const a_good_job_penny = preload("res://audio/sounds/good_job_penny.ogg") +const a_good_job_haze = preload("res://audio/sounds/good_job_haze.ogg") +const a_good_job_ivy = preload("res://audio/sounds/good_job_ivy.ogg") +const a_good_job_dog = preload("res://audio/sounds/good_job_dog.ogg") +const a_great_job_penny = preload("res://audio/sounds/great_job_penny.ogg") +const a_great_job_haze = preload("res://audio/sounds/great_job_haze.ogg") +const a_great_job_ivy = preload("res://audio/sounds/great_job_ivy.ogg") +const a_great_job_dog = preload("res://audio/sounds/great_job_dog.ogg") +const a_2600_charge = preload("res://audio/sounds/2600_charge.ogg") +const a_victory = preload("res://audio/sounds/victory_nobonus.ogg") +const a_time_bonus = preload("res://audio/sounds/victory_haze.ogg") +const a_shard_results = preload("res://audio/sounds/shard_results.ogg") +const a_fail_shard = preload("res://audio/sounds/fail_shard.ogg") +const a_final_score = preload("res://audio/sounds/final_score.ogg") +const a_land = preload("res://audio/sounds/land.ogg") +const a_teleport = preload("res://audio/sounds/teleport.ogg") +const a_mkey = preload("res://audio/sounds/mkey.ogg") +const a_msx_die = preload("res://audio/sounds/msx_die.ogg") +const a_famira = preload("res://audio/sounds/famira.ogg") +const a_vulcan = preload("res://audio/sounds/vulcan.ogg") +const a_grumble = preload("res://audio/sounds/fami_grumble.ogg") +const a_laser_ready = preload("res://audio/sounds/laser_ready.ogg") +const a_copsquash = preload("res://audio/sounds/copsquash.ogg") +const a_copsquash2 = preload("res://audio/sounds/cop_splat.ogg") +const a_fami_transform = preload("res://audio/sounds/fami_transform.ogg") +const a_ominous = preload("res://audio/sounds/ominous.ogg") +const a_bullet_casing = preload("res://audio/sounds/shell.ogg") +const a_gun_cock = preload("res://audio/sounds/gun_cock.ogg") +const a_famira_die = preload("res://audio/sounds/famira_die.ogg") +const a_small_explosion = preload("res://audio/sounds/explosion_small.ogg") +const a_mech_hurt_1 = preload("res://audio/sounds/mech_hurt_1.ogg") +const a_mech_hurt_2 = preload("res://audio/sounds/mech_hurt_2.ogg") +const a_mech_hurt_3 = preload("res://audio/sounds/mech_hurt_3.ogg") +const a_critical_heat = preload("res://audio/sounds/critical_heat.ogg") +const a_glass_crack = preload("res://audio/glass_crack.ogg") +const a_glass_break = preload("res://audio/glass_break.ogg") +const a_shield = preload("res://audio/sounds/stab.wav") +const a_shield_cooldown = preload("res://audio/sounds/coin.wav") + +var loop_section = null +var has_looped = false +var r = 0 + +#Plays a sound +func play_sound(snd: AudioStream, player: AudioStreamPlayer, pitch: float = 1.0): + player.stream = snd + player.pitch_scale = pitch + player.play() + +#Play music, if same track is already playing do nothing +func play_music(song): + if Audio.ac_music.stream != song or Audio.ac_music.playing == false: + play_sound(song,ac_music) + +#Play shard sound, this silences all other sounds including music until the sound ends +func play_shard_sound(): + var idx = AudioServer.get_bus_index("sound") + AudioServer.set_bus_mute(idx, true) + ac_music.set_stream_paused(true) + ac_pause_music.set_stream_paused(true) + var r = 0 + if Game.deaths == 0: + if Game.shards == 4: + r = 40 + else: + r = 40 + if r <= 30: play_sound(a_good_job_penny,ac_shard) + if r > 30 && r <= 60: play_sound(a_good_job_haze,ac_shard) + if r > 60 && r <= 90: play_sound(a_good_job_ivy,ac_shard) + if r > 90: play_sound(a_good_job_dog,ac_shard) + + + else: + play_sound(a_shard,ac_shard) + +func _on_ShardSound_finished(): + var idx = AudioServer.get_bus_index("sound") + AudioServer.set_bus_mute(idx, false) + if !get_tree().paused: ac_music.set_stream_paused(false) + ac_pause_music.set_stream_paused(false) + +func great_job(): + var idx = AudioServer.get_bus_index("sound") + AudioServer.set_bus_mute(idx, true) + ac_music.set_stream_paused(true) + ac_pause_music.set_stream_paused(true) + if Game.deaths == 0: + r = 40 + else: + r = 40 + if r <= 30: play_sound(a_great_job_penny,ac_shard) + if r > 30 && r <= 60: play_sound(a_great_job_haze,ac_shard) + if r > 60 && r <= 90: play_sound(a_great_job_ivy,ac_shard) + if r > 90: play_sound(a_great_job_dog,ac_shard) + +func pause_all(paused: bool) -> void: + for player in get_children(): + player.stream_paused = paused diff --git a/autoloads/audio.tscn b/autoloads/audio.tscn new file mode 100644 index 0000000..eab6342 --- /dev/null +++ b/autoloads/audio.tscn @@ -0,0 +1,65 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://autoloads/audio.gd" type="Script" id=1] +[ext_resource path="res://audio/sounds/shard.ogg" type="AudioStream" id=2] +[ext_resource path="res://audio/music/pause.ogg" type="AudioStream" id=3] + +[node name="Audio" type="Node"] +pause_mode = 2 +script = ExtResource( 1 ) + +[node name="Music" type="AudioStreamPlayer" parent="."] +volume_db = -13.5 +bus = "music" + +[node name="CollectibleSound" type="AudioStreamPlayer" parent="."] +volume_db = -8.0 +bus = "sound" + +[node name="ShardSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 2 ) +volume_db = -8.0 + +[node name="JumpSound" type="AudioStreamPlayer" parent="."] +volume_db = -12.0 +bus = "sound" + +[node name="ClimbSound" type="AudioStreamPlayer" parent="."] +volume_db = -12.0 +bus = "sound" + +[node name="DieSound" type="AudioStreamPlayer" parent="."] +volume_db = -12.0 +bus = "sound" + +[node name="CodeEntrySound" type="AudioStreamPlayer" parent="."] +volume_db = -12.0 +bus = "sound" + +[node name="BossSound" type="AudioStreamPlayer" parent="."] +volume_db = -12.0 +bus = "sound" + +[node name="PauseMusic" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 3 ) +volume_db = -12.0 +bus = "music" + +[node name="MenuSound" type="AudioStreamPlayer" parent="."] +volume_db = -15.0 + +[node name="LandSound" type="AudioStreamPlayer" parent="."] + +[node name="Voice" type="AudioStreamPlayer" parent="."] +volume_db = -5.0 + +[node name="SmallExplosion" type="AudioStreamPlayer" parent="."] +volume_db = -24.0 + +[node name="MechHurt" type="AudioStreamPlayer" parent="."] +volume_db = -10.0 + +[node name="MechShoot" type="AudioStreamPlayer" parent="."] +volume_db = -20.0 + +[connection signal="finished" from="ShardSound" to="." method="_on_ShardSound_finished"] diff --git a/autoloads/border.gd b/autoloads/border.gd new file mode 100644 index 0000000..c0dcabb --- /dev/null +++ b/autoloads/border.gd @@ -0,0 +1,22 @@ +extends TextureRect + + +export (Array, Texture) var borders: Array = [] +export (Array, String) var names: Array = [] + + +var current_border: int = 0 setget _set_current_border + + +func _ready() -> void: + texture = borders[current_border] + get_tree().connect("screen_resized", self, "_on_screen_resized") + _on_screen_resized() + + +func _set_current_border(value: int) -> void: + current_border = posmod(value, borders.size()) + texture = borders[current_border] + +func _on_screen_resized() -> void: + rect_size = OS.window_size diff --git a/autoloads/border.tscn b/autoloads/border.tscn new file mode 100644 index 0000000..5b8f39e --- /dev/null +++ b/autoloads/border.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=14 format=2] + +[ext_resource path="res://autoloads/border.gd" type="Script" id=1] +[ext_resource path="res://graphics/borders/mosaic.png" type="Texture" id=2] +[ext_resource path="res://graphics/borders/prideborder.png" type="Texture" id=3] +[ext_resource path="res://graphics/borders/bodhi_sg_border.png" type="Texture" id=4] +[ext_resource path="res://graphics/borders/enby_border.png" type="Texture" id=5] +[ext_resource path="res://graphics/borders/the_gays_border.png" type="Texture" id=6] +[ext_resource path="res://graphics/borders/revolution_border.png" type="Texture" id=7] +[ext_resource path="res://graphics/borders/black_bars.png" type="Texture" id=8] +[ext_resource path="res://graphics/borders/skaborder.png" type="Texture" id=9] +[ext_resource path="res://graphics/borders/infiltration.png" type="Texture" id=10] +[ext_resource path="res://graphics/borders/copper.png" type="Texture" id=11] +[ext_resource path="res://graphics/borders/endless_revolution.png" type="Texture" id=12] +[ext_resource path="res://graphics/borders/static.png" type="Texture" id=13] + +[node name="Border" type="TextureRect"] +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 7 ) +expand = true +stretch_mode = 7 +script = ExtResource( 1 ) +borders = [ ExtResource( 8 ), ExtResource( 7 ), ExtResource( 10 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 6 ), ExtResource( 5 ), ExtResource( 9 ), ExtResource( 2 ), ExtResource( 11 ), ExtResource( 12 ), ExtResource( 13 ) ] +names = [ "None", "Change The Future", "Infiltration", "Got Shards?", "Trans Rights", "Here Come The Gays", "Fuck The Binary", "It's Ska Time", "Mosaic", "Copper", "Endless Revolution", "Static" ] diff --git a/autoloads/console.gd b/autoloads/console.gd new file mode 100644 index 0000000..0f090c0 --- /dev/null +++ b/autoloads/console.gd @@ -0,0 +1,29 @@ +extends CanvasLayer + +export var opacity: float = 0.5 + +var lines: int = 0 + +onready var label: Label = $Label + +func _ready() -> void: + label.visible = false + label.modulate.a = opacity + $Label/Panel.modulate.a = opacity + +func _physics_process(delta: float) -> void: + if Input.is_action_just_pressed("debug_show"): + label.visible = not label.visible + +func print(text) -> void: + lines += 1 + if lines > 1: + label.text += "\n" + if lines > 10: + var n = label.text.find("\n") + var t = label.text + t.erase(0, n+1) + lines -= 1 + label.text = t + str(text) + else: + label.text += str(text) diff --git a/autoloads/console.tscn b/autoloads/console.tscn new file mode 100644 index 0000000..20cf7ec --- /dev/null +++ b/autoloads/console.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://autoloads/console.gd" type="Script" id=1] + +[node name="Console" type="CanvasLayer"] +layer = 128 +script = ExtResource( 1 ) + +[node name="Label" type="Label" parent="."] +anchor_right = 1.0 +margin_bottom = 14.0 +size_flags_vertical = 2 + +[node name="Panel" type="Panel" parent="Label"] +show_behind_parent = true +anchor_right = 1.0 +anchor_bottom = 1.0 diff --git a/autoloads/controls.gd b/autoloads/controls.gd new file mode 100644 index 0000000..c394522 --- /dev/null +++ b/autoloads/controls.gd @@ -0,0 +1,134 @@ +extends Node + + +const CFG_PATH := "user://controls.pr" +const ACTIONS := [ + "move_left", "move_right", + "move_up", "move_down", + "jump", "shoot", + "ui_accept", "ui_cancel", +] +const LINKED_ACTIONS := { + move_left = "ui_left", + move_right = "ui_right", + move_up = "ui_up", + move_down = "ui_down", +# jump = "ui_accept", +# shoot = "ui_cancel", +} + + +var cfg := ConfigFile.new() + + +func _init() -> void: + cfg.load(CFG_PATH) + _apply_saved_bindings() + + +func get_key(action: String) -> int: + var scancode = cfg.get_value(action, "keyboard", -1) + if scancode == -1: + scancode = _get_default_key(action) + return scancode + + +func get_button(action: String) -> int: + var button_index = cfg.get_value(action, "gamepad", -1) + if button_index == -1: + button_index = _get_default_button(action) + return button_index + + +func set_key(action: String, scancode: int) -> void: + cfg.set_value(action, "keyboard", scancode) + _configure_action_key(action) + _save_bindings() + + +func set_button(action: String, button_index: int) -> void: + cfg.set_value(action, "gamepad", button_index) + _configure_action_button(action) + _save_bindings() + + +func default_controls() -> void: + for action in ACTIONS: + set_key(action, _get_default_key(action)) + set_button(action, _get_default_button(action)) + for button in get_tree().get_nodes_in_group("controls_buttons"): + button._update_text() + + +func _save_bindings() -> void: + cfg.save(CFG_PATH) + + +func _apply_saved_bindings() -> void: + for action in ACTIONS: + _configure_action_key(action) + _configure_action_button(action) + + +func _configure_action_key(action: String) -> void: + var scancode = cfg.get_value(action, "keyboard", -1) + if scancode == -1: + scancode = _get_default_key(action) + _apply_action_key(action, scancode) + var linked_action = LINKED_ACTIONS.get(action) + if linked_action: + _apply_action_key(linked_action, scancode) + + +func _configure_action_button(action: String) -> void: + var button_index = cfg.get_value(action, "gamepad", -1) + if button_index == -1: + button_index = _get_default_button(action) + _apply_action_button(action, button_index) + var linked_action = LINKED_ACTIONS.get(action) + if linked_action: + _apply_action_button(linked_action, button_index) + + +## applies saved keyboard binding for action +func _apply_action_key(action: String, scancode: int) -> void: + # erase key and button events + for event in InputMap.get_action_list(action): + if event is InputEventKey and event.physical_scancode != 0: + InputMap.action_erase_event(action, event) + # apply keyboard binding + var key := InputEventKey.new() + key.physical_scancode = scancode + key.pressed = true + InputMap.action_add_event(action, key) + + +## applies saved gamepad binding for action +func _apply_action_button(action: String, button_index: int) -> void: + # erase button events + for event in InputMap.get_action_list(action): + if event is InputEventJoypadButton: + InputMap.action_erase_event(action, event) + # apply gamepad binding + var button := InputEventJoypadButton.new() + button.button_index = button_index + button.pressed = true + InputMap.action_add_event(action, button) + + +## get first key input from projectsettings +func _get_default_key(action: String) -> int: + var events: Array = ProjectSettings.get("input/" + action).events + for event in events: + if event is InputEventKey: + return event.physical_scancode + return -1 + + +## get first button input from projectsettings +func _get_default_button(action: String) -> int: + var events: Array = ProjectSettings.get("input/" + action).events + for event in events: + if event is InputEventJoypadButton: + return event.button_index + return -1 diff --git a/autoloads/debug.gd b/autoloads/debug.gd new file mode 100644 index 0000000..2e9f962 --- /dev/null +++ b/autoloads/debug.gd @@ -0,0 +1,245 @@ +extends CanvasLayer + +#Console by hazel +#Const +const ENTRY_SEQUENCE = ["4", "1", "5"] +#Export + +#Onready +onready var code_label = $CheatLabel +##Runtime +var lines: int = 0 +var time: float = 0.0 +var n: int = 0 +var debug = false +var is_cheating = false +var reset_is_cheating = false + +var allow_sword = false +var moon_jump = false +var cfox_mode = false +var infinite_arrows = false +var prey_slaughtered = false +var sus_monster = false +var fast_punishment = 0 +# cheat code entry +var entry_index = 0 +var entry = false +var code = "" + + +func _ready(): + #Auto do debug when playtesting + if not OS.is_debug_build(): + debug = false + else: + debug = true + +func _physics_process(delta): + #DEBUG + if debug == true && !entry && !entry_index > 0 && !Options.entry: + #Move player to mouse + if Input.is_action_just_pressed("debug_move_player"): + Audio.play_sound(Audio.a_mkey,Audio.ac_jump) + if Input.is_action_pressed("debug_move_player"): + var nodes = get_tree().get_nodes_in_group("player") + if not nodes.empty(): + var player = nodes[0] + var mouse_position = SceneManager.viewport.get_mouse_position() / SceneManager.viewport_container.rect_scale + mouse_position.x = clamp(mouse_position.x, 8.0, Game.RESOLUTION.x - 8.0) + mouse_position.y = clamp(mouse_position.y, 8.0, Game.RESOLUTION.y - 8.0) + var world_position = mouse_position + Game.current_sector * Game.RESOLUTION + player.position = world_position + +# Game.get_map().get_node("Player").position = get_viewport().get_mouse_position() +# Console.print(get_viewport().get_mouse_position()) + #Test room + if Input.is_action_just_pressed("debug_testroom"): + Game.change_map(load("res://maps/test_room.tscn")) + #Debug 1 + if Input.is_action_just_pressed("debug_1"): + if Game.can_pause: + Game.change_map(load("res://maps/level_select.tscn")) + #Debug 2 + if Input.is_action_just_pressed("debug_2"): + Game.freeze_frame(1.0) + #Infinite arrows + if infinite_arrows: Game.arrows = 99 + +func _input(event): + if Options.entry: + return + + if event is InputEventKey && event.is_pressed(): + var character = OS.get_scancode_string(event.scancode) + if character.length() > 1: + character = "" + + if entry: + if event.scancode == KEY_ENTER: + _enter_code() + Game.set_deferred("can_pause",true) + entry = false + code = "" + elif event.scancode == KEY_BACKSPACE: + code.erase(code.length() - 1, 1) + else: + code += character + code_label.text = code + else: + if character == ENTRY_SEQUENCE[entry_index]: + entry_index += 1 + if entry_index >= ENTRY_SEQUENCE.size(): + entry = true + entry_index = 0 + _on_entry() + +func _on_entry(): + Audio.play_sound(Audio.a_star, Audio.ac_cheat) + Game.can_pause = false + +func _enter_code(): + match code: + "30385": + for gold in get_tree().get_nodes_in_group("gold"): + var goldsprite = gold.get_node("AnimatedSprite") + goldsprite.play("30385") + goldsprite.position.y -= 1 + goldsprite.light_mask = 0 + #goldsprite.material.set_shader_param("palette",load("res://graphics/collectibles/pal_star_green.png")) + "1989": + for enemy in get_tree().get_nodes_in_group("enemy"): + enemy.die() + is_cheating = true + reset_is_cheating = true + "PEN": + debug = true + is_cheating = true + reset_is_cheating = false + "6DOUBLOONS": + Console.print(get_tree().get_nodes_in_group("gold").size()) + #Doesnt work + "EVILSBANE": + allow_sword = true + Input.action_press("sword") + is_cheating = true + reset_is_cheating = false + "REDFEATHER": + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: + player.state_chart.set_guard_property("red_feather", true) + is_cheating = true + reset_is_cheating = false + "NIGHTCORE": + Engine.time_scale = 2 + Audio.ac_music.pitch_scale = 2 + "UPUPANDAWAY": + get_tree().call_group("mountain_easter_egg","play","liftoff") + "MACOSX": + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: Game.instance_node(load("res://objects/environment/beach_ball/beach_ball.tscn"),player.global_position.x,player.global_position.y - 8,Game.get_map()) + "CANYOUDUNK": + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: Game.instance_node(preload("res://objects/environment/zball/zball.tscn"),player.global_position.x,player.global_position.y - 18.0,Game.get_map()) + is_cheating = true + reset_is_cheating = true + "YUMMY": + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: + Game.instance_node( + preload("res://objects/environment/spaghetti/spaghetti.tscn"), + player.global_position.x, player.global_position.y - 12.0, + Game.get_map() + ) + "YUCKY": + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: + var strand = preload("res://objects/environment/spaghetti/spaghetti.tscn").instance() + strand.global_position = player.global_position + Vector2(0.0, -12.0) + strand.get_node("Segment/Joint").disable_collision = false + strand.get_node("Segment/Line").default_color = Color(0xf53342ff) + Game.get_map().add_child(strand) + "JUSTE": + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: player.sprite.material.set_shader_param("border_color",Color.blue) + "BEESKNEES": + Game.get_map().rotation_degrees = -2 + is_cheating = true + reset_is_cheating = true + #doesnt work + "CFOX": + var player = get_tree().get_nodes_in_group("player").pop_back() + player.sprite.visible = false + player.cfox.visible = true + "BANDANA": + infinite_arrows = true + is_cheating = true + reset_is_cheating = false + "ESCARGOD": + var player = get_tree().get_nodes_in_group("player").pop_back() + player.state_chart.send_event("become_invulnerable") + is_cheating = true + reset_is_cheating = false + "GILLS": + var player = get_tree().get_nodes_in_group("player").pop_back() + player.underwater = false + is_cheating = true + reset_is_cheating = false + "CHORUS": + var music = AudioServer.get_bus_index("music") + AudioServer.set_bus_effect_enabled(music,0,true) + "HYDROCITY": + var player = get_tree().get_nodes_in_group("player").pop_back() + player.oxygen_timer.start(0.001) + "FLUX": + var player = get_tree().get_nodes_in_group("player").pop_back() + # set up tween + var tween = create_tween().set_loops() + # open palettes directory for listing + var dir = Directory.new() + if dir.open("res://graphics/player/palettes/") == OK: + # loop through files in directory + dir.list_dir_begin(true, true) + var file_name = dir.get_next() + while file_name != "": + # act on any pngs + if file_name.ends_with(".png"): + # load the texture + var texture = load("res://graphics/player/palettes/" + file_name) + # add step to the tween for that texture + tween.tween_property(player.sprite, "material:shader_param/palette", texture, 0.0) + tween.tween_property(player.cfox, "material:shader_param/palette", texture, 0.0) + tween.tween_interval(0.2) + file_name = dir.get_next() + dir.list_dir_end() + "SKELETON": + Game.keys = 50 + is_cheating = true + reset_is_cheating = true + "WHATSTHATSMELL": + prey_slaughtered = true + "SUS": + var scrump = get_tree().get_nodes_in_group("scrump").pop_back() + if scrump != null: scrump.sus_monster() + sus_monster = true + "FASTPUNISHMENT": + fast_punishment = 1 + "FASTERPUNISHMENT": + fast_punishment = 2 + "LBUG": + var player = get_tree().get_nodes_in_group("player").pop_back() + player.sprite.material.set_shader_param("palette", load("res://graphics/player/palettes/costume_wriggle.tex")) + player.sprite.set_texture(load("res://graphics/player/costume_wriggle.png")) + "BLOOPER": + var silhouette = load("res://objects/hud/silhouette.tscn").instance() + Game.get_map().add_child(silhouette) + "IMPATIENT": + Game.change_map(load("res://menus/credits.tscn")) + "SLOWPOKE": + Game.time = 99999 + "LASERTAG": + Game.can_use_shield = true + is_cheating = true + "INCREDIBLE": + var cat = load("res://objects/enemy/uncanny_cat.tscn").instance() + Game.get_map().add_child(cat) diff --git a/autoloads/debug.tscn b/autoloads/debug.tscn new file mode 100644 index 0000000..8ae9104 --- /dev/null +++ b/autoloads/debug.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://autoloads/debug.gd" type="Script" id=1] +[ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=2] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=3] + +[node name="Debug" type="CanvasLayer" groups=["viewport_autoload"]] +layer = 128 +script = ExtResource( 1 ) + +[node name="CheatLabel" type="Label" parent="."] +material = ExtResource( 3 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +custom_fonts/font = ExtResource( 2 ) +align = 2 +valign = 2 diff --git a/autoloads/fade.gd b/autoloads/fade.gd new file mode 100644 index 0000000..d49f379 --- /dev/null +++ b/autoloads/fade.gd @@ -0,0 +1,19 @@ +extends CanvasLayer + +signal fade_finished + +func fade_in(time: float = NAN, reverse: bool = false, color: Color = Color.black) -> void: + var rect = $TextureRect + rect.material.set_shader_param("color", color) + rect.material.set_shader_param("reverse", reverse) + $AnimationPlayer.play("FadeIn", -1, 1.0 / time) + +func fade_out(time: float = NAN, reverse: bool = false, color: Color = Color.black) -> void: + var rect = $TextureRect + rect.material.set_shader_param("color", color) + rect.material.set_shader_param("reverse", reverse) + $AnimationPlayer.play("FadeOut", -1, 1.0 / time) + + +func _fade_finished(anim_name) -> void: + emit_signal("fade_finished") diff --git a/autoloads/fade.tscn b/autoloads/fade.tscn new file mode 100644 index 0000000..46eb839 --- /dev/null +++ b/autoloads/fade.tscn @@ -0,0 +1,61 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://graphics/fade_patterns/diamonds2.png" type="Texture" id=1] +[ext_resource path="res://autoloads/fade.gd" type="Script" id=2] +[ext_resource path="res://shaders/fade.gdshader" type="Shader" id=3] + +[sub_resource type="ShaderMaterial" id=6] +shader = ExtResource( 3 ) +shader_param/color = Color( 0, 0, 0, 1 ) +shader_param/smooth_mode = false +shader_param/reverse = false +shader_param/opacity = 0.0 + +[sub_resource type="Animation" id=7] +resource_name = "FadeIn" +tracks/0/type = "value" +tracks/0/path = NodePath("TextureRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 1.0, 0.0 ] +} + +[sub_resource type="Animation" id=8] +resource_name = "FadeOut" +tracks/0/type = "value" +tracks/0/path = NodePath("TextureRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0 ] +} + +[node name="Fade" type="CanvasLayer" groups=["viewport_autoload"]] +pause_mode = 2 +layer = 125 +script = ExtResource( 2 ) + +[node name="TextureRect" type="TextureRect" parent="."] +material = SubResource( 6 ) +margin_right = 256.0 +margin_bottom = 192.0 +texture = ExtResource( 1 ) +expand = true +stretch_mode = 6 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/FadeIn = SubResource( 7 ) +anims/FadeOut = SubResource( 8 ) + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_fade_finished"] diff --git a/autoloads/game.gd b/autoloads/game.gd new file mode 100644 index 0000000..1f3e1c9 --- /dev/null +++ b/autoloads/game.gd @@ -0,0 +1,365 @@ +extends Node + + +## difficulty levels +enum Difficulty { + SWEET, # slower enemies, infinite lives + SALTY, # normal enemies, infinite lives + SPICY, # normal enemies, 3 lives, DEFAULT + PUNGENT, # faster enemies, 3 lives +} + +# score multiplier for easy mode +const EASY_DIFFICULTY_MODIFIER: float = 0.75 + + +## resolution the game renders at +const RESOLUTION := Vector2(256,192) +const DIFFICULTY_NAMES := ["Sweet","Salty","Spicy","Pungent"] + + +#== collectibles ==# +var keys: int = 0 # collected keys +## which stars are collected +var stars_collected := [false,false,false,false,false] +var stars : int setget , _get_stars # total stars +## which stars are collected +var shards_collected := [false,false,false,false,false,false,false,false] +## how many shards collected +var shards: int setget , _get_shards # total shards +var arrows: int = 0 # current arrows +#== stats ==# +var lives: int = 2 +var deaths: int = 0 +var time: float = 0.0 +#== score ==# +var score: int = 0 +var arrows_bonus: int = 0 +var collection_bonus: int = 0 +var time_bonus: int = 0 +var life_bonus: int = 0 +var perfect_bonus: int = 0 +var final_score: int = 0 +var old_high_score: int = 0 +#== state ==# +var current_sector := Vector2.ZERO +var respawn_point := Vector2(32,166) +var current_level: int = 0 +var difficulty: int = Difficulty.SPICY setget _set_difficulty +var enemy_speed_factor: float = 1.0 # multiplier of enemy speed +var is_easy_mode: bool = false # whether to do easy-specific behaviors +var use_lives: bool = false +var can_pause: bool = true +var can_restart: bool = true +var current_palette: String = "default" +var still_playing: bool = false +var last_mm_button = null +var alternate_death = null +var can_use_shield: bool = false +#== marathon mode ==# +var marathon_mode: bool = false +var marathon_score: int = 0 +var marathon_lives: int = 0 +var marathon_shards: int = 0 +var marathon_deaths: int = 0 + + +func _get_stars() -> int: + return stars_collected.count(true) + + +func _get_shards() -> int: + return shards_collected.count(true) + + +# stuff to change when setting difficulty +func _set_difficulty(value: int) -> void: + difficulty = value + match difficulty: + Difficulty.SWEET: + is_easy_mode = true + enemy_speed_factor = 0.75 + use_lives = false + Difficulty.SALTY: + is_easy_mode = false + enemy_speed_factor = 1.0 + use_lives = false + Difficulty.SPICY: + is_easy_mode = false + enemy_speed_factor = 1.0 + use_lives = true + Difficulty.PUNGENT: + is_easy_mode = false + enemy_speed_factor = 1.25 + use_lives = true + +#Instances a node +func instance_node(node:PackedScene,x:float,y:float,parent): + var Instance = node.instance() + Instance.global_position = Vector2(x,y) + parent.call_deferred("add_child", Instance) + +#Get position in sectors +func get_sector(pos): + return (pos / RESOLUTION).floor() + +#Return the current Map +func get_map(): + return get_tree().get_nodes_in_group("map").front() + + +## tally up scores +func tally_scores() -> void: + var map = get_map() + # arrows bonus + arrows_bonus = arrows * 100 + # collection bonus + if keys >= 50: + collection_bonus += 500 + if _get_shards() >= 5: + collection_bonus += 500 + # 100% collection + if keys >= 50 and _get_shards() >= 5: + collection_bonus += 250 + shards_collected[5] = true + # 100% time bonus + if time < map.target_time_100: + time_bonus = max(2500 - int(2500.0 * time / map.target_time_100), 0) as int + shards_collected[6] = true + else: + # any% time bonus + if time < map.target_time_any: + time_bonus = max(2500 - int(2500.0 * time / map.target_time_any), 0) as int + shards_collected[6] = true + # life bonus + if deaths == 0: + life_bonus = 1500 + shards_collected[7] = true + elif deaths == 1: + life_bonus = 500 + # perfect bonus + if shards_collected[5] and shards_collected[6] and shards_collected[7]: + perfect_bonus += 1000 + # final score + final_score = score + arrows_bonus + collection_bonus + time_bonus + life_bonus + perfect_bonus + # easy mode modifier + if difficulty == Difficulty.SWEET: + final_score *= EASY_DIFFICULTY_MODIFIER + if marathon_mode: + marathon_shards += shards_collected.count(true) + marathon_score += final_score + else: + Game.save() + + +#Go to new map +func change_map(map: PackedScene) -> void: + get_tree().paused = true + can_pause = false + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + can_pause = true + # save deaths + if not marathon_mode: + var save_id = LevelData.levels[current_level].save_id + var save_data: Save.LevelSaveData = Save.current_file.levels[save_id] + save_data.deaths += deaths + Save.current_file.play_time += time + Save.current_file.save_to_file() + # clear + clear_collectibles() + StainLayer.reset() + #Loop is so no more than one level is loaded at a time + SceneManager.current_scene = map.instance() + +#Clear data +func clear_collectibles() -> void: + # collectibles + keys = 0 + stars_collected.fill(false) + shards_collected.fill(false) + arrows = 0 + if not marathon_mode: + lives = 2 + deaths = 0 + # score + score = 0 + collection_bonus = 0 + time_bonus = 0 + life_bonus = 0 + perfect_bonus = 0 + final_score = 0 + +#Save +func save(): + if marathon_mode: + return + + var new_super := Save.current_file.is_super_player() + + # get level's save data object + var save_id = LevelData.levels[current_level].save_id + var save_data: Save.LevelSaveData = Save.current_file.levels[save_id] + + old_high_score = max(save_data.score_100, save_data.score_any) + + # save score and time depending on completion + if _get_shards() >= 5 && keys >= 50: + save_data.score_100 = max(save_data.score_100, final_score) as int + save_data.time_100 = min(save_data.time_100, time) + else: + save_data.score_any = max(save_data.score_any, final_score) as int + save_data.time_any = min(save_data.time_any, time) + + # set shards + for i in 8: + if shards_collected[i]: + save_data.shards_collected[i] = true + + # set keys + save_data.keys_collected = max(save_data.keys_collected, keys) as int + + # mark as completed + save_data.completed = true + + # add to playtime + Save.current_file.play_time += time + + if new_super and Save.current_file.is_super_player(): + Save.current_file.palette = "super_player" + + # save the file + Save.current_file.save_to_file() + + +# smaller save function for bosses +func save_boss() -> void: + if marathon_mode: + return + + var new_super := not Save.current_file.is_super_player() + + var save_id = LevelData.levels[current_level].save_id + var save_data: Save.LevelSaveData = Save.current_file.levels[save_id] + + save_data.time_any = min(save_data.time_any, time) + save_data.completed = true + + Save.current_file.play_time += time + + if new_super and Save.current_file.is_super_player(): + Save.current_file.palette = "super_player" + + Save.current_file.save_to_file() + + +# !!DEPRECATED!! convert milliseconds into M:SS:MS +func timeify(input): + if input <= 5999099: + var seconds = fmod(Game.time / 1000,60) + var minutes = floor((Game.time / 1000) / 60) + var centiseconds = fmod(floor(seconds * 100),100) + return ("%02d" % minutes) + ":" + ("%02d" % seconds) + "." + ("%02d" % centiseconds) + elif input == INF: + return "-:--.--" + else: + return "99:59.99" + +# convert seconds into M:SS.MS +func format_time(seconds: float) -> String: + if is_inf(seconds) or is_nan(seconds): # infinite + return "--:--.--" + elif seconds >= 6000.0: # 10 minutes or greater + return "99:99.99" + else: + var minutes = floor(seconds / 60.0) + var centiseconds = fmod(floor(seconds * 100.0), 100.0) + return "%02d:%02d.%02d" % [minutes, fmod(seconds, 60.0), centiseconds] + +#Restart level +func restart_level(): + if can_restart: + Save.current_file.play_time += time + Save.current_file.levels[LevelData.levels[current_level].save_id].deaths += deaths + Save.current_file.save_to_file() + clear_collectibles() + Audio.ac_climb.stop() + Audio.ac_die.stop() + Engine.time_scale = 1.0 + for tween in get_tree().get_processed_tweens(): + tween.kill() + change_map(load(get_map().filename)) + Audio.ac_music.stream_paused = false + +#Freeze frame +func freeze_frame(freeze_time): + get_tree().paused = true + var timer = get_tree().create_timer(freeze_time, true) + timer.connect("timeout", get_tree(), "set_pause", [false]) + return timer + +#Check if 100%ed +func has_collection_bonus(): + return _get_shards() == 5 && keys == 50 + +# called when player dies +func _on_player_died() -> void: + deaths += 1 + if marathon_mode: + marathon_deaths += 1 + if use_lives and lives <= 0: + still_playing = false + can_restart = false + can_pause = false + if not marathon_mode: + Save.current_file.play_time += time + Save.current_file.levels[LevelData.levels[current_level].save_id].deaths += deaths + Save.current_file.save_to_file() + clear_collectibles() + Audio.play_sound(Audio.a_game_over, Audio.ac_die) + get_tree().get_nodes_in_group("player")[0].queue_free() + var time_tween = create_tween() + time_tween.tween_property(Engine, "time_scale", 0.1, 0.3) + Audio.ac_music.stream_paused = true + yield(time_tween, "finished") + yield(get_tree().create_timer(1.0 * 0.1), "timeout") + Engine.time_scale = 1.0 + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + if marathon_mode: + SceneManager.current_scene = load("res://menus/main_menu.tscn").instance() + else: + var map = get_map() + var gover = load("res://menus/game_over.tscn").instance() + map.add_child(gover) + can_restart = true + can_pause = true + else: + # count death + lives -= 1 + # play death sound + if alternate_death: + Audio.play_sound(alternate_death, Audio.ac_die) + else: + Audio.play_sound(Audio.a_die, Audio.ac_die) + alternate_death = null + # death score penalty + if use_lives == false && lives < 0: + score = max(0, score - 500) as int + # freezeframe + Game.freeze_frame(0.3) + +func check_time_bonus(): + var map = get_map() + if keys >= 50 and _get_shards() >= 5: + # 100% time bonus + if time < map.target_time_100: + return true + else: + return false + else: + # any% time bonus + if time < map.target_time_any: + return true + else: + return false diff --git a/autoloads/level_data.gd b/autoloads/level_data.gd new file mode 100644 index 0000000..67990f6 --- /dev/null +++ b/autoloads/level_data.gd @@ -0,0 +1,13 @@ +tool +extends Node + +export var marathon_start: int = 0 +export var marathon_end: int = 11 +export var levels: Array = [] setget set_levels + +func set_levels(value): + levels = value + for i in levels.size(): + if !levels[i]: + levels[i] = LevelEntry.new() + levels[i].resource_name = "New Entry" diff --git a/autoloads/level_data.tscn b/autoloads/level_data.tscn new file mode 100644 index 0000000..fe92a6f --- /dev/null +++ b/autoloads/level_data.tscn @@ -0,0 +1,232 @@ +[gd_scene load_steps=31 format=2] + +[ext_resource path="res://autoloads/level_data.gd" type="Script" id=1] +[ext_resource path="res://maps/hills_scholar.tscn" type="PackedScene" id=2] +[ext_resource path="res://maps/canopy.tscn" type="PackedScene" id=3] +[ext_resource path="res://maps/cave.tscn" type="PackedScene" id=4] +[ext_resource path="res://scripts/level_entry.gd" type="Script" id=5] +[ext_resource path="res://maps/mountain.tscn" type="PackedScene" id=6] +[ext_resource path="res://maps/abyss_scholar.tscn" type="PackedScene" id=7] +[ext_resource path="res://maps/boss/boss1_arena.tscn" type="PackedScene" id=8] +[ext_resource path="res://maps/rust.tscn" type="PackedScene" id=9] +[ext_resource path="res://maps/station.tscn" type="PackedScene" id=10] +[ext_resource path="res://maps/graveyard.tscn" type="PackedScene" id=11] +[ext_resource path="res://maps/lab.tscn" type="PackedScene" id=12] +[ext_resource path="res://maps/boss/boss2_arena.tscn" type="PackedScene" id=13] +[ext_resource path="res://maps/cave_scholar.tscn" type="PackedScene" id=14] +[ext_resource path="res://maps/hills.tscn" type="PackedScene" id=15] +[ext_resource path="res://maps/boss/boss3_arena.tscn" type="PackedScene" id=16] + +[sub_resource type="Resource" id=1] +resource_name = "Verdant Hills" +script = ExtResource( 5 ) +title = "Verdant Hills" +shard_titles = [ "Climb to the top", "The obstacle course", "The smallest platform", "Energetic eviscerator", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "hills" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "" +boss = false +has_scoreboard = true +scene = ExtResource( 2 ) + +[sub_resource type="Resource" id=2] +resource_name = "Shady Canopy" +script = ExtResource( 5 ) +title = "Shady Canopy" +shard_titles = [ "Archer and His Friend", "Thirsty Spiders", "Spider's Den", "Dancing Above the Pond", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "canopy" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "" +boss = false +has_scoreboard = true +scene = ExtResource( 3 ) + +[sub_resource type="Resource" id=4] +resource_name = "Echo Mountain" +script = ExtResource( 5 ) +title = "Echo Mountain" +shard_titles = [ "Push the Rock", "Twin Rolling Fiends", "Beware! Moving Platforms", "Crafty CatBat", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "mountain" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "" +boss = false +has_scoreboard = true +scene = ExtResource( 6 ) + +[sub_resource type="Resource" id=6] +resource_name = "VS The Scrump" +script = ExtResource( 5 ) +title = "VS The Scrump" +shard_titles = [ "-w-", "owo", "uwu", "o3o", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "boss1" +shards_required_sweet = 8 +shards_required_salty = 12 +shards_required_spicy = 16 +shards_required_pungent = 24 +boss_required = "" +boss = true +has_scoreboard = false +scene = ExtResource( 8 ) + +[sub_resource type="Resource" id=3] +resource_name = "Blue Ray Cavern" +script = ExtResource( 5 ) +title = "Blue Ray Cavern" +shard_titles = [ "Dynamic Duo", "Stalactite Scramble", "OverHead Obstacle Course", "Sneaky Snail", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "cave" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "boss1" +boss = false +has_scoreboard = true +scene = ExtResource( 14 ) + +[sub_resource type="Resource" id=10] +resource_name = "Crater of the Abyss" +script = ExtResource( 5 ) +title = "Crater of the Abyss" +shard_titles = [ "Follow the minnow", "Beel enclosure", "Turchin jump", "Drop Down Mine Jump", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "abyss" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "boss1" +boss = false +has_scoreboard = true +scene = ExtResource( 7 ) + +[sub_resource type="Resource" id=9] +resource_name = "ArlingWood Graveyard" +script = ExtResource( 5 ) +title = "ArlingWood Graveyard" +shard_titles = [ "Bone Climb", "Soul Graze", "Bow Happy Hellarcher", "Look out for spikes!", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "graveyard" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "boss1" +boss = false +has_scoreboard = true +scene = ExtResource( 11 ) + +[sub_resource type="Resource" id=12] +resource_name = "VS. STG-2600" +script = ExtResource( 5 ) +title = "VS. STG-2600" +shard_titles = [ "", "", "", "", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "boss2" +shards_required_sweet = 20 +shards_required_salty = 24 +shards_required_spicy = 32 +shards_required_pungent = 40 +boss_required = "" +boss = true +has_scoreboard = false +scene = ExtResource( 13 ) + +[sub_resource type="Resource" id=8] +resource_name = "Dread PD" +script = ExtResource( 5 ) +title = "Dread PD" +shard_titles = [ "All Cops Are Bastards", "Save Ms.X", "Treacherous Climb", "Dodge the lasers", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "station" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "boss2" +boss = false +has_scoreboard = true +scene = ExtResource( 10 ) + +[sub_resource type="Resource" id=7] +resource_name = "Rust Inc." +script = ExtResource( 5 ) +title = "Rust Inc." +shard_titles = [ "Precarious Block", "Beside the button", "Saws and bullets", "Beyond the Steam", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "rust" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "boss2" +boss = false +has_scoreboard = true +scene = ExtResource( 9 ) + +[sub_resource type="Resource" id=11] +resource_name = "Fami's Lab" +script = ExtResource( 5 ) +title = "Fami's Lab" +shard_titles = [ "Spikes Can't Stop You", "Final Obstacle Course", "5-Finger Discount", "Good Job!", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "lab" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "boss2" +boss = false +has_scoreboard = true +scene = ExtResource( 12 ) + +[sub_resource type="Resource" id=15] +resource_name = "VS. Fami" +script = ExtResource( 5 ) +title = "VS. Fami" +shard_titles = [ "", "", "", "", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "boss3" +shards_required_sweet = 30 +shards_required_salty = 40 +shards_required_spicy = 50 +shards_required_pungent = 60 +boss_required = "" +boss = true +has_scoreboard = false +scene = ExtResource( 16 ) + +[sub_resource type="Resource" id=14] +resource_name = "Beta Blue Ray Cavern" +script = ExtResource( 5 ) +title = "Beta Blue Ray Cavern" +shard_titles = [ "Star-Crossed Lovers", "The Snail Cave", "Members Only!", "OverHead Obstacle Course", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "beta_cave" +shards_required_sweet = 72 +shards_required_salty = 72 +shards_required_spicy = 72 +shards_required_pungent = 72 +boss_required = "boss3" +boss = false +has_scoreboard = false +scene = ExtResource( 4 ) + +[sub_resource type="Resource" id=13] +resource_name = "Beta Verdant Hills" +script = ExtResource( 5 ) +title = "Beta Verdant Hills" +shard_titles = [ "Climb the Big Vine", "Next to the Lone Tree", "Slime's Treasure", "The Snake Pit", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "beta_hills" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "" +boss = false +has_scoreboard = false +scene = ExtResource( 15 ) + +[node name="LevelData" type="Node"] +script = ExtResource( 1 ) +levels = [ SubResource( 1 ), SubResource( 2 ), SubResource( 4 ), SubResource( 6 ), SubResource( 3 ), SubResource( 10 ), SubResource( 9 ), SubResource( 12 ), SubResource( 8 ), SubResource( 7 ), SubResource( 11 ), SubResource( 15 ), SubResource( 14 ), SubResource( 13 ) ] diff --git a/autoloads/ngio.gd b/autoloads/ngio.gd new file mode 100644 index 0000000..6303a39 --- /dev/null +++ b/autoloads/ngio.gd @@ -0,0 +1,191 @@ +extends Node + + +const GATEWAY_URI: String = "https://newgrounds.io/gateway_v3.php" +const SESSION_FILE: String = "user://ngio.pr" +const EMPTY_SESSION: Dictionary = { + expired = true, + id = "", + passport_url = "", + remember = false, + user = null, +} + + +var app_id: String = "" # app id on newgrounds +var aes_key := PoolByteArray([]) # AES-128/Base64 encryption key +var session: Dictionary = EMPTY_SESSION +var keys_loaded: bool = false # whether id and key have been loaded from ini file + +var http := HTTPRequest.new() # http request node +var aes := AESContext.new() # aes encryption +var rng := RandomNumberGenerator.new() + + +var _response: Dictionary = {} + + +func _ready() -> void: + # load app id from ngio.ini + var ini = ConfigFile.new() + var err = ini.load("res://ngio.ini") + if err != OK: + push_error("Failed to load ngio data. Will not be able to access scoreboards.") + return + app_id = ini.get_value("ngio", "id", "") + if app_id == "": + push_error("Failed to load ngio data. Will not be able to access scoreboards.") + keys_loaded = false + return + else: + keys_loaded = true + + # attempt to load aes key + var key = Marshalls.base64_to_raw(ini.get_value("ngio", "key", "")) + if key.size() == 16: + aes_key = key + + # initialize HTTPRequest + add_child(http) + http.connect("request_completed", self, "_http_request_completed") + + # initialize rng for encryption + rng.randomize() + + # try to load saved session + if not yield(load_saved_session(), "completed"): + yield(start_new_session(), "completed") + + +## attempts to load a saved newgrounds.io session +## returns true if the loaded session is valid +func load_saved_session() -> bool: + var ini = ConfigFile.new() + var err = ini.load(SESSION_FILE) + # fail if can't load ngio.pr + if err != OK: + session = EMPTY_SESSION + session.id = ini.get_value("ngio", "session_id", "") + #const url = new URL(location.href); + #this.session_id = url.searchParams.get('ngio_session_id'); + if OS.has_feature('JavaScript'): + var sp_session = JavaScript.eval(""" + new URL(window.location.href).searchParams.get('ngio_session_id') + """) + if sp_session != null: + session.id = sp_session + # check session is valid + var response = yield(request_execute("App.checkSession"), "completed") + if has_result(response): + var result = response.result + if result.data.success and not result.data.session.expired: + session = result.data.session + return true + session = EMPTY_SESSION + ini.set_value("ngio", "session_id", "") + ini.save(SESSION_FILE) + return false + + +## start new session +func start_new_session() -> bool: + var response = yield(request_execute("App.startSession"), "completed") + if has_result(response): + var result = response.result + if result.data.success and not result.data.session.expired: + session = result.data.session + return true + session = EMPTY_SESSION + return false + + +## repeatedly checks session until it is logged in or cancelled +func passport_check() -> bool: + # attempt for maximum of 5 minutes + var attempts = 60 + while attempts > 0: + attempts -= 1 + yield(get_tree().create_timer(5.0), "timeout") + var response = yield(request_execute("App.checkSession"), "completed") + if has_result(response): + var result = response.result + if result.data.success: + if result.data.session.user: + session = result.data.session + if session.remember: + var ini = ConfigFile.new() + ini.set_value("ngio", "session_id", session.id) + ini.save(SESSION_FILE) + return true + else: + return false + return false + + +## checks if a response is valid and succeeded +func has_result(response: Dictionary) -> bool: + return "success" in response and response.success + + +## requests the provided component be executed, do not call async :/ +# may call with either single or multiple components +func request_execute(component: String, parameters: Dictionary = {}, echo: String = "", encrypt: bool = false) -> Dictionary: + # build request headers + var headers = [ + "Content-Type: application/x-www-form-urlencoded", + ] + # build execute object + var execute = { + component = component, + parameters = parameters, + echo = echo, + } + # use encryption if a valid key is available + # TODO: implementation messed up in some way. encryption is fine, but + # formatting is wrong in some way that newgrounds can not understand +# if encrypt and aes_key.size() == 16: + if false: + # convert to bytes + var data = to_json(execute).to_utf8() + # pad to 16 bytes alignment + var padding = PoolByteArray([]) + padding.resize((16 - data.size() % 16) % 16) + padding.fill(0) + data.append_array(padding) + # generate random initialization vector + var iv = PoolByteArray([]) + iv.resize(16) + for i in iv.size(): + iv[i] = rng.randi() % 0xFF + # encrypt data + aes.start(AESContext.MODE_CBC_ENCRYPT, aes_key, iv) + var encrypted = aes.update(data) + aes.finish() + # compose secure execute object + execute = { + secure = Marshalls.raw_to_base64(iv + encrypted) + } + # compose request body + var request = { + app_id = app_id, + session_id = session.id, + execute = execute, + } + var body = "input=" + to_json(request).percent_encode() + # make request + var err = http.request(GATEWAY_URI, headers, true, HTTPClient.METHOD_POST, body) + if err != OK: + push_error("Invalid HTTP request") + # yield response + yield(http, "request_completed") + return _response + + +## called when the HTTPRequest gets a responce +func _http_request_completed(result: int, response_code: int, headers: PoolStringArray, body: PoolByteArray) -> void: + if response_code == 200: + var dict = parse_json(body.get_string_from_utf8()) + if typeof(dict) == TYPE_DICTIONARY: + _response = dict + return + _response = {success = false} diff --git a/autoloads/options.gd b/autoloads/options.gd new file mode 100644 index 0000000..fbb7655 --- /dev/null +++ b/autoloads/options.gd @@ -0,0 +1,199 @@ +extends Node + + +#Enums +enum ScalingMode {INTEGER, ASPECT, STRETCH} +enum Filter {NONE, CRT, LCD, BILINEAR} +enum RumbleMode {NONE, DEATHS, FULL} +enum TransSpeed {SLOW, NORMAL, FAST, INSTANT} +enum ScanlineType {NONE, LCD, CRT} +enum Gore {NONE, NO_STAINS, FULL} +enum Section {GAME, VIDEO, AUDIO, ALL} + + +#Constants +const TRANS_SPEEDS := [0.8, 0.4, 0.2, 0.0000001] + + +#Game +var rumble: int = RumbleMode.FULL +var gore: int = Gore.FULL +var speedrun_timer: bool = false setget _set_speedrun_timer +var speccy_help: bool = false +var scoreboard_name: String = "" setget _set_scoreboard_name +var scoreboard_id: int = -1 + +#Video +var fullscreen: bool = false setget _set_fullscreen +var window_size: float = 2.0 setget _set_window_size +var scaling_mode: int = ScalingMode.INTEGER setget _set_scaling_mode +var transition_speed: int = TransSpeed.NORMAL setget _set_transition_speed +var transition_speed_secs setget , _get_transition_speed_sex +var border: int = 0 setget _set_border +var scanlines: int = ScanlineType.NONE setget _set_scanlines + +#Audio +var master_volume: float = 1.0 setget _set_master_volume +var music_volume: float = 1.0 setget _set_music_volume +var sound_volume: float = 1.0 setget _set_sound_volume +var landing_sound: bool = true setget _set_landing_sound + +# last played file +var last_file: int = 0 + +# default values +var defaults = null + +# text is being entered +var entry: bool = false + +func _ready() -> void: + pause_mode = PAUSE_MODE_PROCESS + + # clone self into defaults before loading stored values + if defaults == null: + defaults = duplicate() + load_options() + +func _unhandled_input(event: InputEvent) -> void: + if not Debug.entry and not entry: + if event.is_action_pressed("fullscreen"): + OS.window_fullscreen = not OS.window_fullscreen + +func load_options() -> void: + var file = ConfigFile.new() + file.load("user://options.pr") + # game + rumble = file.get_value("game", "rumble", defaults.rumble) + gore = file.get_value("game", "gore", defaults.gore) + _set_speedrun_timer(file.get_value("game", "speedrun_timer", defaults.speedrun_timer)) + speccy_help = file.get_value("game", "speccy_help", defaults.speccy_help) + _set_scoreboard_name(file.get_value("game", "scoreboard_name", "")) + randomize() + scoreboard_id = file.get_value("game", "scoreboard_id", randi()) + # video + _set_fullscreen(file.get_value("video", "fullscreen", defaults.fullscreen)) + _set_window_size(file.get_value("video", "window_size", defaults.window_size)) + _set_scaling_mode(file.get_value("video", "scaling_mode", defaults.scaling_mode)) + _set_transition_speed(file.get_value("video", "transition_speed", defaults.transition_speed)) + _set_border(file.get_value("video", "border", defaults.border)) + _set_scanlines(file.get_value("video", "scanlines", defaults.scanlines)) + # audio + _set_master_volume(file.get_value("audio", "master_volume", 1.0)) + _set_music_volume(file.get_value("audio", "music_volume", 1.0)) + _set_sound_volume(file.get_value("audio", "sound_volume", 1.0)) + _set_landing_sound(file.get_value("audio", "landing_sound", defaults.landing_sound)) + # last played file + last_file = file.get_value("save", "last_file", 0) + +func load_defaults(section: int = Section.ALL) -> void: + match section: + Section.GAME, Section.ALL: + rumble = defaults.rumble + gore = defaults.gore + speedrun_timer = defaults.speedrun_timer + speccy_help = defaults.speccy_help + scoreboard_name = defaults.scoreboard_name + scoreboard_id = randi() + Section.VIDEO, Section.ALL: + fullscreen = defaults.fullscreen + window_size = defaults.window_size + scaling_mode = defaults.scaling_mode + transition_speed = defaults.transition_speed + border = defaults.border + scanlines = defaults.scanlines + Section.AUDIO, Section.ALL: + master_volume = defaults.master_volume + music_volume = defaults.music_volume + sound_volume = defaults.sound_volume + landing_sound = defaults.landing_sound + +func save_options() -> void: + var file = ConfigFile.new() + #Game + file.set_value("game", "rumble", rumble) + file.set_value("game", "gore", gore) + file.set_value("game", "speedrun_timer", speedrun_timer) + file.set_value("game", "speccy_help", speccy_help) + file.set_value("game", "scoreboard_name", scoreboard_name) + file.set_value("game", "scoreboard_id", scoreboard_id) + #Video + file.set_value("video", "fullscreen", fullscreen) + file.set_value("video", "window_size", window_size) + file.set_value("video", "scaling_mode", scaling_mode) + file.set_value("video", "transition_speed", transition_speed) + file.set_value("video", "border", border) + file.set_value("video", "scanlines", scanlines) + #Audio + file.set_value("audio", "master_volume", master_volume) + file.set_value("audio", "music_volume", music_volume) + file.set_value("audio", "sound_volume", sound_volume) + file.set_value("audio", "landing_sound", landing_sound) + # last played file + file.set_value("save", "last_file", last_file) + # save the options to file + file.save("user://options.pr") + +# Setters + +# game setters +func _set_speedrun_timer(value: bool) -> void: + speedrun_timer = value + if not speedrun_timer: + SpeedrunTimer.visible = false + SpeedrunTimer.timer_running = false + +func _set_scoreboard_name(value: String) -> void: + scoreboard_name = value.substr(0, 10).to_lower() + + +# video setters +func _set_fullscreen(value: bool) -> void: + fullscreen = value + if Engine.get_idle_frames() == 0: + OS.window_fullscreen = fullscreen + +func _set_window_size(value: float) -> void: + window_size = value + OS.window_size = Game.RESOLUTION * window_size + +func _set_scaling_mode(value: int) -> void: + scaling_mode = value + SceneManager.scaling_mode = scaling_mode + get_tree().emit_signal("screen_resized") # force screen size update + +func _set_transition_speed(value: int) -> void: + transition_speed = value + +func _get_transition_speed_sex() -> float: + return TRANS_SPEEDS[transition_speed] + +func _set_border(value: int) -> void: + border = value + Border.current_border = border + +func _set_scanlines(value: int) -> void: + scanlines = value + SceneManager.set_scanlines(scanlines) + + +# audio setters +func _set_master_volume(value: float) -> void: + master_volume = value + AudioServer.set_bus_volume_db(0, linear2db(value)) + +func _set_music_volume(value: float) -> void: + music_volume = value + var idx = AudioServer.get_bus_index("music") + AudioServer.set_bus_volume_db(idx, linear2db(value)) + +func _set_sound_volume(value: float) -> void: + sound_volume = value + var idx = AudioServer.get_bus_index("sound") + AudioServer.set_bus_volume_db(idx, linear2db(value)) + idx = AudioServer.get_bus_index("shard") + AudioServer.set_bus_volume_db(idx, linear2db(value)) + +func _set_landing_sound(value: bool) -> void: + landing_sound = value + Audio.ac_land.volume_db = -15.0 if landing_sound else -INF diff --git a/autoloads/save.gd b/autoloads/save.gd new file mode 100644 index 0000000..a865cb4 --- /dev/null +++ b/autoloads/save.gd @@ -0,0 +1,180 @@ +extends Node + +# currently-used compatible format version +const FORMAT_VERSION: int = 1 + +# contains the save data for a single level +class LevelSaveData: + # save file category to use for this level + var save_id: String + # scores + var score_any: int = 0 + var score_100: int = 0 + # times + var time_any: float = INF + var time_100: float = INF + # times died in that level + var deaths: int + # collectibles + var keys_collected: int = 0 + var shards_collected: Array + # whether level has been beaten at all + var completed: bool = false + + func _init(id: String) -> void: + save_id = id + # initialize shards array + shards_collected = [] + shards_collected.resize(8) + for i in 8: + shards_collected[i] = false + + ## save the level data to the given ConfigFile + func save_to_file(file: ConfigFile) -> void: + # set scores + file.set_value(save_id, "score_any", score_any) + file.set_value(save_id, "score_100", score_100) + # set times + file.set_value(save_id, "time_any", time_any) + file.set_value(save_id, "time_100", time_100) + # set deaths + file.set_value(save_id, "deaths", deaths) + # set collected keys + file.set_value(save_id, "keys", keys_collected) + # set collected shards + for i in 8: + file.set_value(save_id, "shard_%d" % i, shards_collected[i]) + # set completion status + file.set_value(save_id, "completed", completed) + + ## loads level data from the given ConfigFile + func load_from_file(file: ConfigFile) -> void: + # get scores + score_any = file.get_value(save_id, "score_any", 0) + score_100 = file.get_value(save_id, "score_100", 0) + # get times + time_any = file.get_value(save_id, "time_any", INF) + time_100 = file.get_value(save_id, "time_100", INF) + # get deaths + deaths = file.get_value(save_id, "deaths", 0) + # get collected keys + keys_collected = file.get_value(save_id, "keys", keys_collected) + # get collected shards + for i in 8: + shards_collected[i] = file.get_value(save_id, "shard_%d" % i, false) + # get completion status + completed = file.get_value(save_id, "completed", false) + +# contains data of one save file +class SaveFile: + # path of file to load/save from + var file_path: String + # version of save file format + var version: int = FORMAT_VERSION + # name of the save file + var name: String = "" + # difficulty chosen for the file + var difficulty: int = Game.Difficulty.SPICY + # total play time + var play_time: float = 0.0 + # dictionary of levels' save data + var levels: Dictionary + # whether is debug save + var debug: bool = false + # palette the save file is using + var palette: String = "default" + + func _init(path: String, debug_save: bool = false) -> void: + debug = debug_save + file_path = path + # initialize level save data dictionary + levels = {} + for level in LevelData.levels: + var data := LevelSaveData.new(level.save_id) + if debug: + data.completed = true + levels[level.save_id] = data + + # return total number of shards + func get_total_shards() -> int: + if debug: + return 999 + var total = 0 + for level in levels.values(): + total += level.shards_collected.count(true) + return total + + # return total number of keys + func get_total_keys() -> int: + var total = 0 + for level in levels.values(): + total += level.keys_collected + return total + + # return total number of deaths + func get_total_deaths() -> int: + var total = 0 + for level in levels.values(): + total += level.deaths + return total + + func is_super_player() -> bool: + return get_total_shards() >= 72 and levels["boss3"].completed + + # loads data from the file at `path` + func load_from_file() -> void: + var file = ConfigFile.new() + file.load(file_path) + # get save format version + version = file.get_value("options", "version", 0) + # load name + name = file.get_value("options", "name", "SG") + # load difficulty + difficulty = file.get_value("options", "difficulty", Game.Difficulty.SPICY) + # load playtime + play_time = file.get_value("options", "play_time", 0.0) + palette = file.get_value("options", "palette", "default") + # TODO: load bought palettes + # TODO: load selected palette + # load level save data + for level_save in levels.values(): + level_save.load_from_file(file) + + func save_to_file() -> void: + var file = ConfigFile.new() + # use current format version + file.set_value("options", "version", FORMAT_VERSION) + # save name + file.set_value("options", "name", name) + # save difficulty + file.set_value("options", "difficulty", difficulty) + # save playtime + file.set_value("options", "play_time", play_time) + file.set_value("options", "palette", palette) + # TODO: save bought palettes + # TODO: save selected palette + # save level data + for level in levels.values(): + level.save_to_file(file) + file.save(file_path) + + +## currently used save file +var current_file: SaveFile = null + +func _ready() -> void: + if OS.is_debug_build(): + current_file = SaveFile.new("user://debug_save.pr", true) + else: + current_file = load_file("user://file%d.pr" % Options.last_file) + if current_file: + Game.difficulty = current_file.difficulty + +## shortcut for loading a save file from specific path +func load_file(path: String) -> SaveFile: + if File.new().file_exists(path): + var file = SaveFile.new(path) + file.load_from_file() + return file + else: + return null diff --git a/autoloads/scene_manager.gd b/autoloads/scene_manager.gd new file mode 100644 index 0000000..f6c8a67 --- /dev/null +++ b/autoloads/scene_manager.gd @@ -0,0 +1,105 @@ +## manages current scene and viewport scaling +extends Node + +# methods of scaling viewport +enum ScalingMode { + INTEGER, # maintain aspect ratio and scale by whole numbers + ASPECT, # maintain aspect ratio + STRETCH, # stretch to fill screen +} + +## method used to scale game viewport +export (ScalingMode) var scaling_mode: int = ScalingMode.INTEGER + +# node references # +onready var viewport_container: ViewportContainer = $ViewportContainer +onready var viewport: Viewport = $ViewportContainer/Viewport + +var resolution: Vector2 + +var current_scene: Node setget change_scene + +var last_input_gamepad: bool = true + +func _input(event: InputEvent) -> void: + if event is InputEventJoypadButton: + last_input_gamepad = true + elif event is InputEventKey: + last_input_gamepad = false + +## change the current scene +func change_scene(new_scene: Node) -> void: + # remove current scene if it exists + if current_scene != null: + viewport.remove_child(current_scene) + current_scene.queue_free() + # remove child from parent if it has one + if new_scene.is_inside_tree(): + new_scene.get_parent().call_deferred("remove_child", new_scene) + # add new scene to tree + viewport.call_deferred("add_child", new_scene) + current_scene = new_scene + +func set_scanlines(type: int) -> void: + yield(get_tree(), "idle_frame") + match type: + Options.ScanlineType.NONE: + viewport_container.material.set_shader_param("enabled", false) + Options.ScanlineType.CRT: + viewport_container.material.set_shader_param("enabled", true) + viewport_container.material.set_shader_param("scanline_opacity", Vector2(0.2, 0.0)) + viewport_container.material.set_shader_param("brightness", 1.1) + Options.ScanlineType.LCD: + viewport_container.material.set_shader_param("enabled", true) + viewport_container.material.set_shader_param("scanline_opacity", Vector2(0.2, 0.2)) + viewport_container.material.set_shader_param("brightness", 1.2) + +func _ready() -> void: + var tree := get_tree() + # capture initial scene + if tree.current_scene != self: + change_scene(tree.current_scene) + tree.current_scene = self + # capture autoloads in the group "viewport_autoload" + for node in tree.get_nodes_in_group("viewport_autoload"): + node.get_parent().call_deferred("remove_child", node) + viewport.call_deferred("add_child", node) + + # get design resolution from project settings + var project_resolution := Vector2( + ProjectSettings.get_setting("display/window/size/width"), + ProjectSettings.get_setting("display/window/size/height") + ) + viewport.size = project_resolution + resolution = project_resolution + # size container and pivot on center + viewport_container.rect_size = resolution + viewport_container.rect_pivot_offset = resolution / 2.0 + # fix viewportcontainer input bug + viewport.set_deferred("handle_input_locally", true) + # connect resized signal + tree.connect("screen_resized", self, "_on_screen_resized") + _on_screen_resized() + +func _process(delta: float) -> void: + if Debug.entry == false: + #CRT FILTER + if Input.is_action_just_pressed("crt"): + viewport_container.material.set_shader_param("enabled", not viewport_container.material.get_shader_param("enabled")) + +func _on_screen_resized() -> void: + var screen_size := OS.window_size + var scale_delta := screen_size / resolution + + match scaling_mode: + ScalingMode.INTEGER: + # find smaller scale difference, floor to integer + var scale = floor(min(scale_delta.x, scale_delta.y)) + viewport_container.rect_scale = Vector2(scale, scale) + ScalingMode.ASPECT: + # find smaller scale difference + var scale = min(scale_delta.x, scale_delta.y) + viewport_container.rect_scale = Vector2(scale, scale) + ScalingMode.STRETCH: + # simply use scale difference + viewport_container.rect_scale = scale_delta diff --git a/autoloads/scene_manager.tscn b/autoloads/scene_manager.tscn new file mode 100644 index 0000000..4c6aaa6 --- /dev/null +++ b/autoloads/scene_manager.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://autoloads/scene_manager.gd" type="Script" id=1] +[ext_resource path="res://shaders/lcd.gdshader" type="Shader" id=2] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/enabled = true +shader_param/resolution = Vector2( 256, 192 ) +shader_param/curvature = Vector2( 0, 0 ) +shader_param/scanline_opacity = Vector2( 0.1, 0.1 ) +shader_param/brightness = 1.0 + +[node name="SceneManager" type="Node"] +pause_mode = 2 +script = ExtResource( 1 ) + +[node name="ViewportContainer" type="ViewportContainer" parent="."] +material = SubResource( 1 ) +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -128.0 +margin_top = -96.0 +margin_right = 128.0 +margin_bottom = 96.0 +mouse_filter = 1 + +[node name="Viewport" type="Viewport" parent="ViewportContainer"] +size = Vector2( 256, 192 ) +handle_input_locally = false +usage = 0 +render_target_update_mode = 3 diff --git a/autoloads/scoreboard.gd b/autoloads/scoreboard.gd new file mode 100644 index 0000000..0b15f8c --- /dev/null +++ b/autoloads/scoreboard.gd @@ -0,0 +1,124 @@ +extends Node + + +signal _response_received + + +const CHECK_INTERVAL: float = 60.0 +const POLL_INTERVAL: float = 0.5 + + +var server_host: String = "" +var http: HTTPRequest = null +## True if there is currently a request processing. +var waiting_for_response: bool = false +## True if the last request failed and the result is not valid. +var errored: bool = false + +var _response_code: int = -1 +var _response_body: String = "" + + +class ScoreEntry: + var score: int + var time: int + var difficulty: int + + func _init(score: int, time: int, difficulty: int) -> void: + self.score = score + self.time = time + self.difficulty = difficulty + + static func from_dict(dict: Dictionary) -> ScoreEntry: + return ScoreEntry.new(dict.score, dict.time, dict.difficulty) + + +func _ready() -> void: + var file = File.new() + var result = file.open("res://scoreboard_host.txt", File.READ) + if result == OK: + server_host = file.get_line() + file.close() + + http = HTTPRequest.new() + http.download_chunk_size = 4096 + http.timeout = 30.0 + http.use_threads = OS.get_name() != "HTML5" + http.connect("request_completed", self, "_on_request_completed") + add_child(http) + +func _on_request_completed(result: int, response_code: int, headers: PoolStringArray, body: PoolByteArray) -> void: + if result != OK: + errored = true + else: + errored = false + _response_code = response_code + _response_body = body.get_string_from_utf8() + waiting_for_response = false + emit_signal("_response_received") + + +func is_name_free(player_name: String, id: int) -> bool: + if waiting_for_response: + yield(self, "_response_received") + var err = http.request(server_host + "/api/players/" + player_name) + if err != OK: + errored = true + return false + waiting_for_response = true + + yield(self, "_response_received") + if _response_code == HTTPClient.RESPONSE_NOT_FOUND or _response_body.to_int() == id: + return true + return false + + +func touch_name(player_name: String, id: int) -> void: + if waiting_for_response: + yield(self, "_response_received") + var err = http.request( + server_host + "/api/players/%s/%d" % [player_name, id], + [], true, HTTPClient.METHOD_POST + ) + if err != OK: + errored = true + return + waiting_for_response = true + + +func submit_score(level: String, entry: ScoreEntry) -> bool: + if waiting_for_response: + yield(self, "_response_received") + var err = http.request( + server_host + "/api/scores/%s/%s/%d/%d/%d" % [ + level, Options.scoreboard_name, + entry.score, entry.time, entry.difficulty + ], + [], true, HTTPClient.METHOD_POST + ) + if err != OK: + errored = true + return false + waiting_for_response = true + yield(self, "_response_received") + if errored or _response_code != HTTPClient.RESPONSE_OK: + return false + return true + + +func get_scores(level: String) -> Dictionary: + if waiting_for_response: + yield(self, "_response_received") + var err = http.request(server_host + "/api/scores/%s" % level) + if err != OK: + errored = true + return {} + waiting_for_response = true + yield(self, "_response_received") + if not errored and _response_code == HTTPClient.RESPONSE_OK: + var dict = parse_json(_response_body) + var scores = {} + for player in dict.keys(): + scores[player] = ScoreEntry.from_dict(dict[player]) + return scores + return {} diff --git a/autoloads/speedrun_timer.gd b/autoloads/speedrun_timer.gd new file mode 100644 index 0000000..5a3c4ff --- /dev/null +++ b/autoloads/speedrun_timer.gd @@ -0,0 +1,29 @@ +extends CanvasLayer + + +export var bonus_color: Color + + +var time: float = 0.0 +var timer_running: bool = false + + +onready var time_counter: Label = $Box/TimeCounter + + +func _physics_process(delta: float) -> void: + if timer_running: + time += delta + + +func _process(delta: float) -> void: + if visible: + time_counter.text = Game.format_time(time) + + if timer_running: + var map = Game.get_map() + if is_instance_valid(map): + if (Game.has_collection_bonus() && Game.time <= map.target_time_100) or (!Game.has_collection_bonus() && Game.time <= map.target_time_any): + time_counter.modulate = bonus_color + return + time_counter.modulate = Color.white diff --git a/autoloads/speedrun_timer.tscn b/autoloads/speedrun_timer.tscn new file mode 100644 index 0000000..45be8be --- /dev/null +++ b/autoloads/speedrun_timer.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://autoloads/speedrun_timer.gd" type="Script" id=1] +[ext_resource path="res://graphics/hud/hud.png" type="Texture" id=2] +[ext_resource path="res://ui/theme.tres" type="Theme" id=3] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 180, 58, 12 ) + +[node name="CanvasLayer" type="CanvasLayer" groups=["viewport_autoload"]] +pause_mode = 2 +layer = 127 +visible = false +script = ExtResource( 1 ) +bonus_color = Color( 0.478431, 1, 0.47451, 1 ) + +[node name="Box" type="TextureRect" parent="."] +anchor_top = 1.0 +anchor_bottom = 1.0 +margin_top = -12.0 +margin_right = 58.0 +texture = SubResource( 1 ) + +[node name="TimeCounter" type="Label" parent="Box"] +modulate = Color( 0.478431, 1, 0.47451, 1 ) +margin_left = 1.0 +margin_top = 1.0 +margin_right = 57.0 +margin_bottom = 11.0 +theme = ExtResource( 3 ) +text = "00:00:00" diff --git a/autoloads/stain_layer.gd b/autoloads/stain_layer.gd new file mode 100644 index 0000000..5c701d9 --- /dev/null +++ b/autoloads/stain_layer.gd @@ -0,0 +1,27 @@ +extends Light2D + + +onready var viewport: Viewport = $Viewport + + +func _ready() -> void: + texture = viewport.get_texture() + + +func _process(delta: float) -> void: + var main_viewport = get_viewport() + if viewport.canvas_transform != main_viewport.canvas_transform: + viewport.canvas_transform = main_viewport.canvas_transform + transform = main_viewport.canvas_transform.inverse() + viewport.render_target_update_mode = Viewport.UPDATE_ONCE + + +func add_stain(stain: Node2D) -> void: + viewport.add_child(stain) + viewport.render_target_update_mode = Viewport.UPDATE_ONCE + + +func reset() -> void: + for child in viewport.get_children(): + child.queue_free() + viewport.render_target_update_mode = Viewport.UPDATE_ONCE diff --git a/autoloads/stain_layer.tscn b/autoloads/stain_layer.tscn new file mode 100644 index 0000000..238cbfa --- /dev/null +++ b/autoloads/stain_layer.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://autoloads/stain_layer.gd" type="Script" id=1] + +[node name="StainLight" type="Light2D" groups=["viewport_autoload"]] +offset = Vector2( 128, 96 ) +mode = 2 +range_item_cull_mask = 2 +script = ExtResource( 1 ) + +[node name="Viewport" type="Viewport" parent="."] +size = Vector2( 256, 192 ) +transparent_bg = true +disable_3d = true +usage = 1 +render_target_v_flip = true +render_target_update_mode = 1 diff --git a/autoloads/touch_controls.gd b/autoloads/touch_controls.gd new file mode 100644 index 0000000..fa7d9e8 --- /dev/null +++ b/autoloads/touch_controls.gd @@ -0,0 +1,14 @@ +extends CanvasLayer + +export var opacity = 0.5 + +func _ready(): + if !OS.has_feature("mobile"): + visible = false + $CanvasModulate.color = Color(1.0, 1.0, 1.0, opacity) + _reposition() + get_tree().connect("screen_resized", self, "_reposition") + +func _reposition(): + $Directions.position = Vector2(0.0, get_viewport().size.y) + $Actions.position = get_viewport().size diff --git a/autoloads/touch_controls.tscn b/autoloads/touch_controls.tscn new file mode 100644 index 0000000..fe115f9 --- /dev/null +++ b/autoloads/touch_controls.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=17 format=2] + +[ext_resource path="res://autoloads/touch_controls.gd" type="Script" id=1] +[ext_resource path="res://graphics/hud/touch/touch_left.png" type="Texture" id=2] +[ext_resource path="res://graphics/hud/touch/touch_down_pressed.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/touch/touch_right_pressed.png" type="Texture" id=4] +[ext_resource path="res://graphics/hud/touch/touch_up.png" type="Texture" id=5] +[ext_resource path="res://graphics/hud/touch/touch_up_pressed.png" type="Texture" id=6] +[ext_resource path="res://graphics/hud/touch/touch_left_pressed.png" type="Texture" id=7] +[ext_resource path="res://graphics/hud/touch/touch_down.png" type="Texture" id=8] +[ext_resource path="res://graphics/hud/touch/touch_right.png" type="Texture" id=9] +[ext_resource path="res://graphics/hud/touch/touch_jump.png" type="Texture" id=10] +[ext_resource path="res://graphics/hud/touch/touch_shoot.png" type="Texture" id=11] +[ext_resource path="res://graphics/hud/touch/touch_jump_pressed.png" type="Texture" id=12] +[ext_resource path="res://graphics/hud/touch/touch_shoot_pressed.png" type="Texture" id=13] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 40, 120 ) + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 120, 40 ) + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 40, 40 ) + +[node name="TouchControls" type="CanvasLayer"] +pause_mode = 2 +layer = 128 +script = ExtResource( 1 ) + +[node name="CanvasModulate" type="CanvasModulate" parent="."] + +[node name="Directions" type="Node2D" parent="."] + +[node name="LeftButton" type="TouchScreenButton" parent="Directions"] +position = Vector2( 0, -160 ) +normal = ExtResource( 2 ) +pressed = ExtResource( 7 ) +shape = SubResource( 1 ) +passby_press = true +action = "ui_left" + +[node name="RightButton" type="TouchScreenButton" parent="Directions"] +position = Vector2( 160, -160 ) +normal = ExtResource( 9 ) +pressed = ExtResource( 4 ) +shape = SubResource( 1 ) +passby_press = true +action = "ui_right" + +[node name="UpButton" type="TouchScreenButton" parent="Directions"] +position = Vector2( 80, -240 ) +normal = ExtResource( 5 ) +pressed = ExtResource( 6 ) +shape = SubResource( 2 ) +passby_press = true +action = "ui_up" + +[node name="DownButton" type="TouchScreenButton" parent="Directions"] +position = Vector2( 80, -80 ) +normal = ExtResource( 8 ) +pressed = ExtResource( 3 ) +shape = SubResource( 2 ) +passby_press = true +action = "ui_down" + +[node name="Actions" type="Node2D" parent="."] + +[node name="JumpButton" type="TouchScreenButton" parent="Actions"] +position = Vector2( -80, -120 ) +normal = ExtResource( 10 ) +pressed = ExtResource( 12 ) +shape = SubResource( 3 ) +passby_press = true +action = "jump" + +[node name="AcceptButton" type="TouchScreenButton" parent="Actions"] +position = Vector2( -80, -120 ) +shape = SubResource( 3 ) +passby_press = true +action = "ui_accept" + +[node name="ShootButton" type="TouchScreenButton" parent="Actions"] +position = Vector2( -200, -120 ) +normal = ExtResource( 11 ) +pressed = ExtResource( 13 ) +shape = SubResource( 3 ) +passby_press = true +action = "shoot" + +[node name="CancelButton" type="TouchScreenButton" parent="Actions"] +position = Vector2( -200, -120 ) +shape = SubResource( 3 ) +passby_press = true +action = "ui_cancel" + +[node name="PauseButton" type="TouchScreenButton" parent="Actions"] +position = Vector2( 0, -400 ) +rotation = 1.5708 +normal = ExtResource( 11 ) +pressed = ExtResource( 12 ) +shape = SubResource( 3 ) +passby_press = true +action = "pause" diff --git a/control.tscn b/control.tscn deleted file mode 100644 index 767fd50..0000000 --- a/control.tscn +++ /dev/null @@ -1,63 +0,0 @@ -[gd_scene load_steps=7 format=2] - -[ext_resource path="res://scripts/scaling.gd" type="Script" id=1] -[ext_resource path="res://graphics/borders/prideborder.png" type="Texture" id=2] -[ext_resource path="res://maps/level_select.tscn" type="PackedScene" id=3] -[ext_resource path="res://scripts/crt.gdshader" type="Shader" id=4] -[ext_resource path="res://scripts/theme.tres" type="Theme" id=5] - -[sub_resource type="ShaderMaterial" id=1] -shader = ExtResource( 4 ) -shader_param/enabled = false -shader_param/resolution = Vector2( 256, 192 ) -shader_param/curvature = Vector2( 6, 6 ) -shader_param/scanline_opacity = Vector2( 0.4, 0.05 ) -shader_param/brightness = 1.25 - -[node name="Control" type="Control"] -pause_mode = 2 -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_right = -16.0 -margin_bottom = -48.0 -rect_pivot_offset = Vector2( 128, 96 ) -size_flags_horizontal = 2 -size_flags_vertical = 2 -script = ExtResource( 1 ) - -[node name="TextureRect" type="TextureRect" parent="."] -anchor_right = 1.0 -anchor_bottom = 1.0 -texture = ExtResource( 2 ) -expand = true - -[node name="ViewportContainer" type="ViewportContainer" parent="."] -material = SubResource( 1 ) -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -margin_left = -120.0 -margin_top = -72.0 -margin_right = 136.0 -margin_bottom = 120.0 -rect_pivot_offset = Vector2( 128, 96 ) - -[node name="Viewport" type="Viewport" parent="ViewportContainer"] -size = Vector2( 256, 192 ) -handle_input_locally = false -render_target_update_mode = 3 - -[node name="LevelSelect" parent="ViewportContainer/Viewport" instance=ExtResource( 3 )] - -[node name="CheatLayer" type="CanvasLayer" parent="ViewportContainer/Viewport"] -layer = 127 - -[node name="CheatLabel" type="Label" parent="ViewportContainer/Viewport/CheatLayer"] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_right = -1.0 -margin_bottom = -5.0 -theme = ExtResource( 5 ) -align = 2 -valign = 2 diff --git a/credits.txt b/credits.txt index 4a6674d..66b51f7 100644 --- a/credits.txt +++ b/credits.txt @@ -1,3 +1,3 @@ Game by Penny Rigate -Music by Ivy Snyder (https://ivysnyder.newgrounds.com/) -Shaders and code help by Haze \ No newline at end of file +Music by Scarlett Sylvistrix (https://ivysnyder.newgrounds.com/) +Shaders and code help by Haze diff --git a/cutscenes/ending_future.tscn b/cutscenes/ending_future.tscn new file mode 100644 index 0000000..33e099a --- /dev/null +++ b/cutscenes/ending_future.tscn @@ -0,0 +1,204 @@ +[gd_scene load_steps=18 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://tilesets/t_grass.tres" type="TileSet" id=2] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=3] +[ext_resource path="res://shaders/color_noise.gdshader" type="Shader" id=4] +[ext_resource path="res://graphics/backgrounds/hills.png" type="Texture" id=5] +[ext_resource path="res://graphics/npc/msx_future.png" type="Texture" id=6] +[ext_resource path="res://graphics/npc/speccy_future.png" type="Texture" id=7] +[ext_resource path="res://graphics/npc/sg_future.png" type="Texture" id=8] +[ext_resource path="res://graphics/ending/picnic_table.png" type="Texture" id=9] +[ext_resource path="res://graphics/npc/sms.png" type="Texture" id=10] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=11] +[ext_resource path="res://cutscenes/intro_story.gd" type="Script" id=12] +[ext_resource path="res://graphics/ending/end.png" type="Texture" id=13] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/color_1 = Color( 0, 0, 0, 1 ) +shader_param/color_2 = Color( 0.486275, 0, 0, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 16, 0 ) +shader_param/cycle_speed = Vector2( 4, 4 ) +shader_param/cycle_alternation = Vector2( 4, 4 ) +shader_param/uv_transform = Transform2D( 0, 1, 1, 0, 0, 0 ) + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 192 ) ] +} + +[sub_resource type="Animation" id=3] +resource_name = "scroll" +length = 67.0 +step = 0.25 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 50, 55 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 8, 200 ), Vector2( 8, -437.742 ), Vector2( 8, -437.742 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Static:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 50 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("White:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 57.75, 58, 58.25, 58.5, 58.75, 59, 59.25, 59.5, 59.75, 60, 60.25, 60.5, 60.75, 61, 61.25, 61.5, 61.75, 62, 62.25, 62.5, 62.75 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.95 ), Color( 1, 1, 1, 0.9 ), Color( 1, 1, 1, 0.85 ), Color( 1, 1, 1, 0.8 ), Color( 1, 1, 1, 0.75 ), Color( 1, 1, 1, 0.7 ), Color( 1, 1, 1, 0.65 ), Color( 1, 1, 1, 0.6 ), Color( 1, 1, 1, 0.55 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.45 ), Color( 1, 1, 1, 0.4 ), Color( 1, 1, 1, 0.35 ), Color( 1, 1, 1, 0.3 ), Color( 1, 1, 1, 0.25 ), Color( 1, 1, 1, 0.2 ), Color( 1, 1, 1, 0.15 ), Color( 1, 1, 1, 0.1 ), Color( 1, 1, 1, 0.05 ), Color( 1, 1, 1, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Label:modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.75, 50, 50.25, 50.5, 50.75, 51, 51.25, 51.5, 51.75, 52, 52.25, 52.5, 52.75, 53, 53.25, 53.5, 53.75, 54, 54.25, 54.5, 54.75, 55 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.95 ), Color( 1, 1, 1, 0.9 ), Color( 1, 1, 1, 0.85 ), Color( 1, 1, 1, 0.8 ), Color( 1, 1, 1, 0.75 ), Color( 1, 1, 1, 0.7 ), Color( 1, 1, 1, 0.65 ), Color( 1, 1, 1, 0.6 ), Color( 1, 1, 1, 0.55 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.45 ), Color( 1, 1, 1, 0.4 ), Color( 1, 1, 1, 0.35 ), Color( 1, 1, 1, 0.3 ), Color( 1, 1, 1, 0.25 ), Color( 1, 1, 1, 0.2 ), Color( 1, 1, 1, 0.15 ), Color( 1, 1, 1, 0.1 ), Color( 1, 1, 1, 0.05 ), Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 4 ) +shader_param/animate_noise = true +shader_param/noise_intensity = 6.0 +shader_param/fps = 12.0 + +[node name="IntroStory" type="Node2D"] +script = ExtResource( 12 ) +is_intro = false + +[node name="ColorRect" type="ColorRect" parent="."] +visible = false +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "scroll" +anims/RESET = SubResource( 2 ) +anims/scroll = SubResource( 3 ) + +[node name="VoiceOver" type="AudioStreamPlayer" parent="."] + +[node name="TimeskipScene" type="Node2D" parent="."] +z_index = -1 + +[node name="Sprite" type="Sprite" parent="TimeskipScene"] +position = Vector2( 128, 96 ) +z_index = -2 +texture = ExtResource( 5 ) + +[node name="TileMap" type="TileMap" parent="TimeskipScene"] +tile_set = ExtResource( 2 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 1507327, 3, 1, 1441792, 3, 2, 1441793, 3, 2, 1441794, 3, 2, 1441795, 3, 2, 1441796, 3, 2, 1441797, 3, 2, 1441798, 3, 2, 1441799, 3, 2, 1441800, 3, 2, 1441801, 3, 2, 1441802, 3, 2, 1441803, 3, 2, 1441804, 3, 2, 1441805, 3, 2, 1441806, 3, 2, 1441807, 3, 2, 1441808, 3, 2, 1441809, 3, 2, 1441810, 3, 2, 1441811, 3, 2, 1441812, 3, 2, 1441813, 3, 2, 1441814, 3, 2, 1441815, 3, 2, 1441816, 3, 2, 1441817, 3, 2, 1441818, 3, 2, 1441819, 3, 2, 1441820, 3, 2, 1441821, 3, 2, 1441822, 3, 2, 1441823, 3, 2, 1441824, 3, 3, 1572863, 3, 65537, 1507328, 3, 65538, 1507329, 3, 65538, 1507330, 3, 65538, 1507331, 3, 65538, 1507332, 3, 65538, 1507333, 3, 65538, 1507334, 3, 65538, 1507335, 3, 65538, 1507336, 3, 65538, 1507337, 3, 65538, 1507338, 3, 65538, 1507339, 3, 65538, 1507340, 3, 65538, 1507341, 3, 65538, 1507342, 3, 65538, 1507343, 3, 65538, 1507344, 3, 65538, 1507345, 3, 65538, 1507346, 3, 65538, 1507347, 3, 65538, 1507348, 3, 65538, 1507349, 3, 65538, 1507350, 3, 65538, 1507351, 3, 65538, 1507352, 3, 65538, 1507353, 3, 65538, 1507354, 3, 65538, 1507355, 3, 65538, 1507356, 3, 65538, 1507357, 3, 65538, 1507358, 3, 65538, 1507359, 3, 65538, 1507360, 3, 65539, 1638399, 3, 131073, 1572864, 3, 131074, 1572865, 3, 131074, 1572866, 3, 131074, 1572867, 3, 131074, 1572868, 3, 131074, 1572869, 3, 131074, 1572870, 3, 131074, 1572871, 3, 131074, 1572872, 3, 131074, 1572873, 3, 131074, 1572874, 3, 131074, 1572875, 3, 131074, 1572876, 3, 131074, 1572877, 3, 131074, 1572878, 3, 131074, 1572879, 3, 131074, 1572880, 3, 131074, 1572881, 3, 131074, 1572882, 3, 131074, 1572883, 3, 131074, 1572884, 3, 131074, 1572885, 3, 131074, 1572886, 3, 131074, 1572887, 3, 131074, 1572888, 3, 131074, 1572889, 3, 131074, 1572890, 3, 131074, 1572891, 3, 131074, 1572892, 3, 131074, 1572893, 3, 131074, 1572894, 3, 131074, 1572895, 3, 131074, 1572896, 3, 131075 ) + +[node name="SgFuture" type="Sprite" parent="TimeskipScene"] +position = Vector2( 96, 166 ) +texture = ExtResource( 8 ) + +[node name="MsxFuture" type="Sprite" parent="TimeskipScene"] +position = Vector2( 161, 166 ) +scale = Vector2( -1, 1 ) +texture = ExtResource( 6 ) + +[node name="SpeccyFuture" type="Sprite" parent="TimeskipScene"] +position = Vector2( 176, 164 ) +scale = Vector2( -1, 1 ) +texture = ExtResource( 7 ) + +[node name="Sms" type="Sprite" parent="TimeskipScene"] +position = Vector2( 80, 164 ) +texture = ExtResource( 10 ) + +[node name="PicnicTable" type="Sprite" parent="TimeskipScene"] +position = Vector2( 128, 167 ) +texture = ExtResource( 9 ) + +[node name="Sprite2" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +texture = ExtResource( 13 ) + +[node name="White" type="ColorRect" parent="."] +margin_right = 256.0 +margin_bottom = 192.0 +color = Color( 1, 0.952941, 0.933333, 1 ) + +[node name="Static" type="ColorRect" parent="."] +material = SubResource( 4 ) +margin_right = 256.0 +margin_bottom = 192.0 +color = Color( 0.662745, 0.8, 0.996078, 1 ) + +[node name="Label" type="Label" parent="."] +material = ExtResource( 11 ) +margin_left = 8.0 +margin_top = 192.0 +margin_right = 248.0 +margin_bottom = 1294.0 +theme = ExtResource( 1 ) +text = "With Fami and all of the other corruptive forces of the world taken out, a new future is born. + +The Shards had +turned Fami into Super Famira, one of the most powerful beings in the entire universe, a monster only bested by SG's +heroic courage. + +SG and Speccy realized that kind of power should not be able to rest in the hands of anyone. +The heroes plan to collect the shards again next year to find a way to get rid of them forever. + +The freedom fighters plan to create a new future in the ashes of old virginia. +A world that doesn't revolve around money and power, +where everyone works together to the best of their ability to support each other and share resources. +It will take a lot of work to create this future, and it will take a lot of work to keep it running. + + + + + +Congratulations! +You are a super player!! +The future is bright thanks to you!!! +Rest well until the time comes again!!!! + + +" +align = 1 +autowrap = true + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] diff --git a/cutscenes/ending_present.tscn b/cutscenes/ending_present.tscn new file mode 100644 index 0000000..f980956 --- /dev/null +++ b/cutscenes/ending_present.tscn @@ -0,0 +1,92 @@ +[gd_scene load_steps=9 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=2] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=3] +[ext_resource path="res://audio/sounds/intro_voiceover.ogg" type="AudioStream" id=4] +[ext_resource path="res://cutscenes/intro_story.gd" type="Script" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/color_1 = Color( 0, 0, 0, 1 ) +shader_param/color_2 = Color( 0.486275, 0, 0, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 16, 0 ) +shader_param/cycle_speed = Vector2( 4, 4 ) +shader_param/cycle_alternation = Vector2( 4, 4 ) +shader_param/uv_transform = Transform2D( 0, 1, 1, 0, 0, 0 ) + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 192 ) ] +} + +[sub_resource type="Animation" id=3] +resource_name = "scroll" +length = 80.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 80 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 8, 182 ), Vector2( 8, -528 ) ] +} + +[node name="IntroStory" type="Node2D"] +script = ExtResource( 5 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="Label" type="Label" parent="."] +material = ExtResource( 2 ) +margin_left = 8.0 +margin_top = 192.0 +margin_right = 248.0 +margin_bottom = 722.0 +theme = ExtResource( 1 ) +text = "And so with Fami and all the other corruptive forces of the world taken out, a new future is born. + +The Shards had +turned Fami into Famira, one of the most powerful beings in the entire universe, a monster only bested by SG's +heroic courage. + +SG and the other freedom fighters realized that kind of power should not be able to rest in the hands of anyone, +and so a year later, the heroes collected the shards again and sent them to planet x, never to be found again. + +SG and their friends plan to create a utopia where everyone shares resources and works together to support each other, a future without +coercive hierarchies or money. + + It will take a lot of work for this plan to come to fruition but it's easier now but with +the capitalist order dismantled. It'll take the work of many people not only to establish this utopia, but to keep it alive. + +It's thanks to everyone that the world is saved, not only SG, but their friends as well, and you, the player!" +align = 1 +autowrap = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "scroll" +anims/RESET = SubResource( 2 ) +anims/scroll = SubResource( 3 ) + +[node name="VoiceOver" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 4 ) + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] diff --git a/cutscenes/fami_cutscene.gd b/cutscenes/fami_cutscene.gd new file mode 100644 index 0000000..fb18afb --- /dev/null +++ b/cutscenes/fami_cutscene.gd @@ -0,0 +1,59 @@ +extends Node2D + +signal cutscene_finished + +const DeathParticles = preload("res://objects/enemy/death_particles.tscn") + +export var cutscene_skip: float = 78.5 + +onready var animation_player: AnimationPlayer = $AnimationPlayer + +func _init() -> void: + connect("cutscene_finished", self, "_on_cutscene_finished") + Game.can_restart = false + +func _on_cutscene_finished() -> void: + Audio.play_sound(Audio.a_fami_transform,Audio.ac_voice) + +func _physics_process(delta: float) -> void: + if animation_player.current_animation_position < cutscene_skip: + Game.can_pause = false + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("jump") and animation_player.current_animation_position < (cutscene_skip - Options.transition_speed_secs * 2.0): + skip_cutscene() + if event.is_action_pressed("debug_2"): + animation_player.seek(60) + +func skip_cutscene() -> void: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + animation_player.seek(cutscene_skip) + $Label.rect_position.y = -99999 # stupid 1.1 stuff + Fade.fade_in(Options.transition_speed_secs) + +func kill_cop() -> void: + var splatter := DeathParticles.instance() + splatter.global_position = $Cop.global_position + splatter.emitting = true + Audio.play_sound(Audio.a_copsquash,Audio.ac_land) + Audio.play_sound(Audio.a_copsquash2,Audio.ac_voice) + add_child(splatter) + $Cop.queue_free() + +func stop_music(): + Audio.ac_music.playing = false + +func play_rumble_intro(): + Audio.play_music(load("res://audio/music/rumble_revolution_intro.ogg")) + +func _notification(what: int) -> void: + match what: + NOTIFICATION_WM_FOCUS_OUT: + animation_player.playback_active = false + $FamiVoice.stream_paused = true + Audio.ac_music.stream_paused = true + NOTIFICATION_WM_FOCUS_IN: + animation_player.playback_active = true + $FamiVoice.stream_paused = false + Audio.ac_music.stream_paused = false diff --git a/cutscenes/fami_cutscene.tscn b/cutscenes/fami_cutscene.tscn new file mode 100644 index 0000000..14034bf --- /dev/null +++ b/cutscenes/fami_cutscene.tscn @@ -0,0 +1,812 @@ +[gd_scene load_steps=47 format=2] + +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=2] +[ext_resource path="res://ui/theme.tres" type="Theme" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] +[ext_resource path="res://scripts/sg_palette.gd" type="Script" id=5] +[ext_resource path="res://graphics/player/sg.png" type="Texture" id=6] +[ext_resource path="res://tilesets/t_station.tres" type="TileSet" id=7] +[ext_resource path="res://tilesets/t_laboratory.tres" type="TileSet" id=8] +[ext_resource path="res://graphics/npc/fami_human.png" type="Texture" id=9] +[ext_resource path="res://cutscenes/fami_cutscene.gd" type="Script" id=10] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=12] +[ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=13] +[ext_resource path="res://graphics/enemy/cop/scope_walk.png" type="Texture" id=14] +[ext_resource path="res://graphics/enemy/cop/scope_shoot.png" type="Texture" id=15] +[ext_resource path="res://graphics/npc/fami_human_walk.png" type="Texture" id=16] +[ext_resource path="res://graphics/npc/fami_human_punch.png" type="Texture" id=17] +[ext_resource path="res://graphics/npc/fami_human_transform.png" type="Texture" id=18] +[ext_resource path="res://objects/enemy/boss/fami_transform.material" type="Material" id=19] +[ext_resource path="res://audio/sounds/absorb_shard.ogg" type="AudioStream" id=20] +[ext_resource path="res://audio/sounds/shard_expel.ogg" type="AudioStream" id=21] +[ext_resource path="res://audio/sounds/shard_float.ogg" type="AudioStream" id=22] +[ext_resource path="res://audio/sounds/gun_cock.ogg" type="AudioStream" id=23] + +[sub_resource type="AtlasTexture" id=17] +atlas = ExtResource( 18 ) +region = Rect2( 42, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=18] +atlas = ExtResource( 18 ) +region = Rect2( 56, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=19] +atlas = ExtResource( 18 ) +region = Rect2( 70, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=20] +atlas = ExtResource( 18 ) +region = Rect2( 0, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=21] +atlas = ExtResource( 18 ) +region = Rect2( 14, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=22] +atlas = ExtResource( 18 ) +region = Rect2( 28, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 16 ) +region = Rect2( 0, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 16 ) +region = Rect2( 14, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 16 ) +region = Rect2( 28, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 16 ) +region = Rect2( 42, 0, 14, 24 ) + +[sub_resource type="SpriteFrames" id=7] +animations = [ { +"frames": [ ExtResource( 9 ) ], +"loop": true, +"name": "idle", +"speed": 5.0 +}, { +"frames": [ SubResource( 17 ), SubResource( 18 ), SubResource( 19 ) ], +"loop": true, +"name": "orb", +"speed": 8.0 +}, { +"frames": [ ExtResource( 17 ) ], +"loop": true, +"name": "punch", +"speed": 5.0 +}, { +"frames": [ SubResource( 20 ), SubResource( 21 ), SubResource( 22 ) ], +"loop": false, +"name": "shrink", +"speed": 8.0 +}, { +"frames": [ SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ) ], +"loop": true, +"name": "walk", +"speed": 5.0 +} ] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 2 ) + +[sub_resource type="Animation" id=16] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ShardRain:emitting") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ShardParticles:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("FamiVoice:playing") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("FamiHuman:material:shader_param/background_color") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("FamiHuman:material:shader_param/arc_color") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Label:text") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "" ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("FamiHuman:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 160, 167 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("SgIdle:frame_coords") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("SgIdle:flip_h") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("FamiHuman:animation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "idle" ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Cop:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -8, 169 ) ] +} + +[sub_resource type="Animation" id=2] +resource_name = "cutscene" +length = 100.0 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:text") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = false +tracks/0/keys = { +"times": PoolRealArray( 0, 4.5, 9.5, 13.5, 18.5, 22.5, 26.5, 30.5, 34.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 2, +"values": [ "So you've made it this far... too bad your efforts are all in vain.", "You see, SG, +I plan to use the shards to power my spaceship, its exhaust will be so powerful, you peasants will all be vaporized. ", "Me and all of the wonderful billionaires of the world will head to planet X, the newly discovered planet beyond pluto.", "You plan to hijack my wonderful future, eh? Whaddya kids call it? A revolution?", "Ha! I already started my own revolution in 2068.", "You know what they say, the freer the market, the freer the people! Ever since then, I never felt so free!", "You're such a fool. The perfect tool for the reconstruction of the Zircon Ultima.", "While you've been on your gay little adventure collecting shards I've been waiting for this very moment to take them all from you!", "Have at you!!!" ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("FamiVoice:playing") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.25, 96 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Cop:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.25, 76.5, 78 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -8, 169 ), Vector2( -8, 169 ), Vector2( 72, 169 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Cop:animation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 76.5, 78 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ "gun", "walk", "gun" ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("FamiHuman:animation") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0.25, 79, 81, 81.5, 87, 89, 93, 93.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ "idle", "walk", "idle", "punch", "walk", "idle", "shrink", "orb" ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("FamiHuman:position") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0.25, 79, 81, 87, 89, 93, 95, 96 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 160, 167 ), Vector2( 160, 167 ), Vector2( 105, 167 ), Vector2( 105, 167 ), Vector2( 160, 167 ), Vector2( 160, 167 ), Vector2( 160, 167 ), Vector2( 160, 83 ) ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("ShardParticles:emitting") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0.5, 82.8, 88 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("ShardRain:emitting") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0.25, 90, 93 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("FamiHuman:material:shader_param/background_color") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0.25, 92, 93 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 1 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("FamiHuman:material:shader_param/arc_color") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0.25, 92, 93 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 1 ) ] +} +tracks/10/type = "method" +tracks/10/path = NodePath(".") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 96 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "cutscene_finished" ], +"method": "emit_signal" +} ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("ShardAbsorb:playing") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 90 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("ShardExpel:playing") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 82.8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("ShardFloat:playing") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 93.8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("SgIdle:frame_coords") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 2.6, 2.7, 2.8, 8, 8.1, 8.2, 12.4, 12.5, 13, 17.1092, 17.2092, 18.3092, 22.25, 24.25, 30.25, 30.5, 32.5, 40.25, 40.75, 41.25, 41.5, 48, 48.75, 49.25, 49.75, 50.25, 51, 51.5, 52, 52.5, 53.25, 53.75, 54.25, 54.75, 55.5, 56, 56.5, 57, 57.75, 58.25, 58.75, 60.75, 61.5, 62, 62.5, 63, 63.75, 64.25, 64.75, 65.25, 66, 66.5, 67, 67.5, 68.25, 68.75, 69.25, 69.75, 70.5, 71, 71.5, 72.25, 73, 73.5, 74, 74.5, 78, 78.15, 78.3, 78.45, 89.8, 90, 90.2, 90.3, 90.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03526, 1, 1, 1.03526, 1, 1.03526, 1, 1.03526, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 0, 19 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 0, 17 ), Vector2( 0, 0 ), Vector2( 0, 16 ), Vector2( 0, 17 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 12 ), Vector2( 0, 16 ), Vector2( 0, 0 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("SgIdle:flip_h") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 50.75, 78.45, 90.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ false, false, true, false ] +} +tracks/16/type = "method" +tracks/16/path = NodePath(".") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 81.5, 82.8 ), +"transitions": PoolRealArray( 1, 1 ), +"values": [ { +"args": [ ], +"method": "stop_music" +}, { +"args": [ ], +"method": "play_rumble_intro" +} ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("GunCock:playing") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( -0.1, 78 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Label:percent_visible") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = false +tracks/18/keys = { +"times": PoolRealArray( 0, 3, 4, 4.5, 8, 9, 9.5, 12, 13, 13.5, 17, 18, 18.5, 21, 22, 22.5, 25, 26, 26.5, 29, 30, 30.5, 33, 34, 34.5, 37 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0 ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Label:visible") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = false +tracks/19/keys = { +"times": PoolRealArray( 0, 4, 4.5, 9, 9.5, 13, 13.5, 18, 18.5, 22, 22.5, 26, 26.5, 30, 30.5, 34, 34.5, 39 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false ] +} + +[sub_resource type="Animation" id=27] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ShardRain:emitting") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ShardParticles:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("FamiVoice:playing") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("FamiHuman:material:shader_param/background_color") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("FamiHuman:material:shader_param/arc_color") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Label:text") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "" ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("FamiHuman:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 160, 167 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("SgIdle:frame_coords") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("SgIdle:flip_h") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("FamiHuman:animation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "idle" ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Cop:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -8, 169 ) ] +} + +[sub_resource type="Animation" id=28] +resource_name = "cutscene" +length = 93.0 +step = 0.25 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:text") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 4.5, 9.5, 13.5, 18.5, 22.5, 26.5, 30.5, 34.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 2, +"values": [ "So you've made it this far... too bad your efforts are all in vain.", "You see, SG, +I plan to use the shards to power my spaceship, its exhaust will be so powerful, you peasants will all be vaporized. ", "Me and all of the wonderful billionaires of the world will head to planet X, the newly discovered planet beyond pluto.", "You plan to hijack my wonderful future, eh? Whaddya kids call it? A revolution?", "Ha! I already started my own revolution in 2068.", "You know what they say, the freer the market, the freer the people! Ever since then, I never felt so free!", "You're such a fool. The perfect tool for the reconstruction of the Zircon Ultima.", "While you've been on your gay little adventure collecting shards, I've been waiting for this very moment to take them all from you!", "Have at you!!!" ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Label:percent_visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 3, 4, 4.5, 8, 9, 9.5, 12, 13, 13.5, 17, 18, 18.5, 21, 22, 22.5, 25, 26, 26.5, 29, 30, 30.5, 33, 34, 34.5, 35.25 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Label:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 4, 4.5, 9, 9.5, 13, 13.5, 18, 18.5, 22, 22.5, 26, 26.5, 30, 30.5, 34, 34.5, 37 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false ] +} + +[sub_resource type="ShaderMaterial" id=8] +shader = ExtResource( 12 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=23] +atlas = ExtResource( 14 ) +region = Rect2( 0, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=24] +atlas = ExtResource( 14 ) +region = Rect2( 20, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=25] +atlas = ExtResource( 14 ) +region = Rect2( 40, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=26] +atlas = ExtResource( 14 ) +region = Rect2( 60, 0, 20, 21 ) + +[sub_resource type="SpriteFrames" id=13] +animations = [ { +"frames": [ ExtResource( 15 ) ], +"loop": true, +"name": "gun", +"speed": 5.0 +}, { +"frames": [ SubResource( 23 ), SubResource( 24 ), SubResource( 25 ), SubResource( 26 ) ], +"loop": true, +"name": "walk", +"speed": 10.0 +} ] + +[sub_resource type="ShaderMaterial" id=14] +shader = ExtResource( 12 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="ShaderMaterial" id=15] +shader = ExtResource( 12 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[node name="FamiCutscene" type="Node2D"] +script = ExtResource( 10 ) +cutscene_skip = 78.75 + +[node name="TileMap" type="TileMap" parent="."] +tile_set = ExtResource( 7 ) +cell_size = Vector2( 8, 8 ) +format = 1 + +[node name="TileMap" type="TileMap" parent="TileMap"] +tile_set = ExtResource( 8 ) +cell_size = Vector2( 8, 8 ) +format = 1 + +[node name="Label" type="Label" parent="."] +material = ExtResource( 4 ) +margin_left = 16.0 +margin_top = 48.0 +margin_right = 240.0 +margin_bottom = 136.0 +theme = ExtResource( 3 ) +align = 1 +valign = 1 +autowrap = true +percent_visible = 0.0 + +[node name="FamiHuman" type="AnimatedSprite" parent="."] +material = ExtResource( 19 ) +position = Vector2( 160, 167 ) +rotation = 3.14159 +scale = Vector2( 1, -1 ) +frames = SubResource( 7 ) +animation = "idle" +playing = true + +[node name="SgIdle" type="Sprite" parent="."] +material = SubResource( 1 ) +position = Vector2( 97, 163 ) +texture = ExtResource( 6 ) +hframes = 8 +vframes = 20 +script = ExtResource( 5 ) + +[node name="FamiVoice" type="AudioStreamPlayer" parent="."] + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "cutscene" +playback_process_mode = 0 +anims/RESET = SubResource( 16 ) +anims/cutscene = SubResource( 2 ) + +[node name="labelanim" type="AnimationPlayer" parent="."] +autoplay = "cutscene" +playback_process_mode = 0 +playback_speed = 0.5 +anims/RESET = SubResource( 27 ) +anims/cutscene = SubResource( 28 ) + +[node name="Cop" type="AnimatedSprite" parent="."] +material = SubResource( 8 ) +position = Vector2( -8, 169 ) +frames = SubResource( 13 ) +animation = "gun" +playing = true + +[node name="ShardParticles" type="CPUParticles2D" parent="."] +material = SubResource( 14 ) +position = Vector2( 97, 160 ) +emitting = false +amount = 72 +lifetime = 2.5 +texture = ExtResource( 13 ) +direction = Vector2( 0, -2 ) +gravity = Vector2( 0, 42 ) +initial_velocity = 250.0 +initial_velocity_random = 0.35 +linear_accel = -30.19 + +[node name="ShardRain" type="CPUParticles2D" parent="."] +material = SubResource( 15 ) +position = Vector2( 163, -4 ) +emitting = false +amount = 72 +lifetime = 2.0 +texture = ExtResource( 13 ) +direction = Vector2( 0, 1 ) +initial_velocity = 18.0 +angular_velocity = 2.5 + +[node name="ShardAbsorb" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 20 ) +volume_db = -10.0 + +[node name="ShardFloat" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 22 ) +volume_db = -10.0 + +[node name="ShardExpel" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 21 ) +volume_db = -10.0 + +[node name="GunCock" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 23 ) +volume_db = -10.0 diff --git a/cutscenes/intro_story.gd b/cutscenes/intro_story.gd new file mode 100644 index 0000000..c9b9c8c --- /dev/null +++ b/cutscenes/intro_story.gd @@ -0,0 +1,41 @@ +extends Node2D + +export var is_intro = true + +func _ready(): + Fade.fade_in(Options.transition_speed_secs) + yield(Fade, "fade_finished") + Audio.ac_music.set_volume_db(-13.5) + if is_intro: + Audio.play_music(load("res://audio/music/intro.ogg")) + else: + Audio.play_music(load("res://audio/music/empty_motel.ogg")) + $VoiceOver.play() + +func _input(event): + if Input.is_action_just_pressed("ui_accept") && is_intro: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + if is_intro: + SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() + else: + SceneManager.current_scene = load("res://menus/credits.tscn").instance() + +func _notification(what: int) -> void: + match what: + NOTIFICATION_WM_FOCUS_OUT: + $AnimationPlayer.playback_active = false + $VoiceOver.stream_paused = true + Audio.ac_music.stream_paused = true + NOTIFICATION_WM_FOCUS_IN: + $AnimationPlayer.playback_active = true + $VoiceOver.stream_paused = false + Audio.ac_music.stream_paused = false + +func _on_AnimationPlayer_animation_finished(anim_name): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + if is_intro: + SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() + else: + SceneManager.current_scene = load("res://menus/credits.tscn").instance() diff --git a/cutscenes/intro_story.tscn b/cutscenes/intro_story.tscn new file mode 100644 index 0000000..d1826f3 --- /dev/null +++ b/cutscenes/intro_story.tscn @@ -0,0 +1,88 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=2] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=3] +[ext_resource path="res://cutscenes/intro_story.gd" type="Script" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/color_1 = Color( 0, 0, 0, 1 ) +shader_param/color_2 = Color( 0.1188, 0.1188, 0.22, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 16, 0 ) +shader_param/cycle_speed = Vector2( 4, 4 ) +shader_param/cycle_alternation = Vector2( 4, 4 ) +shader_param/uv_transform = Transform2D( 0, 1, 1, 0, 0, 0 ) + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 192 ) ] +} + +[sub_resource type="Animation" id=3] +resource_name = "scroll" +length = 80.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 80 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 8, 198 ), Vector2( 8, -600 ) ] +} + +[node name="IntroStory" type="Node2D"] +script = ExtResource( 5 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="Label" type="Label" parent="."] +material = ExtResource( 2 ) +margin_left = 8.0 +margin_top = 192.0 +margin_right = 248.0 +margin_bottom = 800.0 +theme = ExtResource( 1 ) +text = "The Year is 2083. +All hope seems lost. + +What's left of America has become a horrible autocracy. A man named Fami has complete control over the government, and owns most companies in America, at a time where business is more important than it's ever been. + +Fami achieved his authority through the use of monstrous chimeras - creatures made from a combination of biological materials and AI cores known as \"artificial souls\". + +The technology responsible for such machines was developed by an egotistical man named Dr. Intelli. Intelli had given up on humanity long ago, he now wishes for the world to be run by machines. + + Intelli also developed a space laser that can be powered by the shards of zircon ultima, a gem that can grant unlimited power. Fami used the laser to horribly alter the world, which scattered the shards across Virginia. Fami plans to use the shards again. the future looks bleak. + +SG, an assembly line worker at one of Intelli's factories, is fed up with their endless toil. +After learning of Fami's plan from their best friend Speccy, they realize they need to take matters into their own hands. SG vows to change the future, they have made it their mission to keep the shards from Fami as well as bring an end to his reign. +" +align = 1 +autowrap = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "scroll" +anims/RESET = SubResource( 2 ) +anims/scroll = SubResource( 3 ) + +[node name="VoiceOver" type="AudioStreamPlayer" parent="."] + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] diff --git a/default_bus_layout.tres b/default_bus_layout.tres new file mode 100644 index 0000000..0588eaf --- /dev/null +++ b/default_bus_layout.tres @@ -0,0 +1,38 @@ +[gd_resource type="AudioBusLayout" load_steps=4 format=2] + +[sub_resource type="AudioEffectLowPassFilter" id=2] +resource_name = "LowPassFilter" +cutoff_hz = 1000.0 + +[sub_resource type="AudioEffectReverb" id=3] +resource_name = "Reverb" +room_size = 0.11 + +[sub_resource type="AudioEffectChorus" id=4] +resource_name = "Chorus" + +[resource] +bus/0/effect/0/effect = SubResource( 2 ) +bus/0/effect/0/enabled = false +bus/0/effect/1/effect = SubResource( 3 ) +bus/0/effect/1/enabled = false +bus/1/name = "music" +bus/1/solo = false +bus/1/mute = false +bus/1/bypass_fx = false +bus/1/volume_db = 0.0 +bus/1/send = "Master" +bus/1/effect/0/effect = SubResource( 4 ) +bus/1/effect/0/enabled = false +bus/2/name = "sound" +bus/2/solo = false +bus/2/mute = false +bus/2/bypass_fx = false +bus/2/volume_db = 0.0 +bus/2/send = "Master" +bus/3/name = "shard" +bus/3/solo = false +bus/3/mute = false +bus/3/bypass_fx = false +bus/3/volume_db = 0.0 +bus/3/send = "sound" diff --git a/export_presets.cfg b/export_presets.cfg index 7a13acc..168510f 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -5,9 +5,9 @@ platform="Windows Desktop" runnable=true custom_features="" export_filter="all_resources" -include_filter="" +include_filter="scoreboard_host.txt" exclude_filter="" -export_path="build/windows/Hero Mark 2.exe" +export_path="build/windows/Revolution 2083.exe" script_export_mode=1 script_encryption_key="" @@ -16,7 +16,7 @@ script_encryption_key="" custom_template/debug="" custom_template/release="" binary_format/64_bits=true -binary_format/embed_pck=true +binary_format/embed_pck=false texture_format/bptc=false texture_format/s3tc=true texture_format/etc=false @@ -31,14 +31,15 @@ codesign/timestamp_server_url="" codesign/digest_algorithm=1 codesign/description="" codesign/custom_options=PoolStringArray( ) -application/modify_resources=false -application/icon="" -application/file_version="" -application/product_version="" -application/company_name="" -application/product_name="" -application/file_description="" -application/copyright="" +application/modify_resources=true +application/icon="res://icon.ico" +application/icon_interpolation=0 +application/file_version="1.1.0.0" +application/product_version="1.1.0.0" +application/company_name="Team SG" +application/product_name="Revolution 2083" +application/file_description="Change the future!" +application/copyright="Team SG" application/trademarks="" [preset.1] @@ -48,9 +49,9 @@ platform="Linux/X11" runnable=true custom_features="" export_filter="all_resources" -include_filter="" +include_filter="scoreboard_host.txt" exclude_filter="" -export_path="build/linux/Hero Mark 2.x86_64" +export_path="build/linux/Revolution 2083.x86_64" script_export_mode=1 script_encryption_key="" @@ -58,8 +59,8 @@ script_encryption_key="" custom_template/debug="" custom_template/release="" -binary_format/64_bits=true -binary_format/embed_pck=true +binary_format/architecture="x86_64" +binary_format/embed_pck=false texture_format/bptc=false texture_format/s3tc=true texture_format/etc=false @@ -73,7 +74,7 @@ platform="HTML5" runnable=true custom_features="" export_filter="all_resources" -include_filter="" +include_filter="scoreboard_host.txt" exclude_filter="" export_path="build/html5/index.html" script_export_mode=1 @@ -100,3 +101,90 @@ progressive_web_app/icon_144x144="" progressive_web_app/icon_180x180="" progressive_web_app/icon_512x512="" progressive_web_app/background_color=Color( 0, 0, 0, 1 ) + +[preset.3] + +name="Mac OSX" +platform="Mac OSX" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="build/macos/Revolution 2083.zip" +script_export_mode=1 +script_encryption_key="" + +[preset.3.options] + +export/distribution_type=1 +custom_template/debug="" +custom_template/release="" +application/name="Revolution 2083" +application/icon="res://icon.png" +application/icon_interpolation=4 +application/identifier="club.teamsg.hero-mark-2" +application/signature="" +application/app_category="Arcade-games" +application/short_version="1.0" +application/version="1.0" +application/copyright="" +application/min_macos_version="10.12" +display/high_res=false +xcode/platform_build="14C18" +xcode/sdk_version="13.1" +xcode/sdk_build="22C55" +xcode/sdk_name="macosx13.1" +xcode/xcode_version="1420" +xcode/xcode_build="14C18" +codesign/codesign=1 +codesign/installer_identity="" +codesign/apple_team_id="" +codesign/identity="" +codesign/certificate_file="" +codesign/certificate_password="" +codesign/provisioning_profile="" +codesign/entitlements/custom_file="" +codesign/entitlements/allow_jit_code_execution=false +codesign/entitlements/allow_unsigned_executable_memory=false +codesign/entitlements/allow_dyld_environment_variables=false +codesign/entitlements/disable_library_validation=false +codesign/entitlements/audio_input=false +codesign/entitlements/camera=false +codesign/entitlements/location=false +codesign/entitlements/address_book=false +codesign/entitlements/calendars=false +codesign/entitlements/photos_library=false +codesign/entitlements/apple_events=false +codesign/entitlements/debugging=false +codesign/entitlements/app_sandbox/enabled=false +codesign/entitlements/app_sandbox/network_server=false +codesign/entitlements/app_sandbox/network_client=false +codesign/entitlements/app_sandbox/device_usb=false +codesign/entitlements/app_sandbox/device_bluetooth=false +codesign/entitlements/app_sandbox/files_downloads=0 +codesign/entitlements/app_sandbox/files_pictures=0 +codesign/entitlements/app_sandbox/files_music=0 +codesign/entitlements/app_sandbox/files_movies=0 +codesign/entitlements/app_sandbox/files_user_selected=0 +codesign/custom_options=PoolStringArray( ) +notarization/notarization=0 +notarization/apple_id_name="" +notarization/apple_id_password="" +notarization/api_uuid="" +notarization/api_key="" +notarization/api_key_id="" +privacy/microphone_usage_description="" +privacy/camera_usage_description="" +privacy/location_usage_description="" +privacy/address_book_usage_description="" +privacy/calendar_usage_description="" +privacy/photos_library_usage_description="" +privacy/desktop_folder_usage_description="" +privacy/documents_folder_usage_description="" +privacy/downloads_folder_usage_description="" +privacy/network_volumes_usage_description="" +privacy/removable_volumes_usage_description="" +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false diff --git a/fonts/2ndpuberty..fnt b/fonts/2ndpuberty..fnt deleted file mode 100644 index 89d88e8..0000000 --- a/fonts/2ndpuberty..fnt +++ /dev/null @@ -1,102 +0,0 @@ -info face="2ndPubertyMono" size=16 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,2,1 spacing=-2,0 -common lineHeight=7 base=12 scaleW=512 scaleH=512 pages=1 packed=0 -page id=0 file="2ndpuberty..png" -chars count=97 -char id=0 x=108 y=20 width=8 height=20 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=0 -char id=10 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=0 page=0 chnl=0 -char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=7 page=0 chnl=0 -char id=33 x=333 y=0 width=9 height=20 xoffset=2 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=34 x=324 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=35 x=63 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=36 x=18 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=37 x=36 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=38 x=81 y=20 width=9 height=20 xoffset=1 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=39 x=360 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=40 x=405 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=41 x=414 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=42 x=99 y=20 width=9 height=20 xoffset=1 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=43 x=45 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=44 x=378 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=45 x=27 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=46 x=369 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=47 x=486 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=48 x=315 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=49 x=234 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=50 x=243 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=51 x=252 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=52 x=261 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=53 x=270 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=54 x=279 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=55 x=288 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=56 x=297 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=57 x=306 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=58 x=396 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=59 x=387 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=60 x=459 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=61 x=54 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=62 x=468 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=63 x=351 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=64 x=495 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=65 x=0 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=66 x=9 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=67 x=18 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=68 x=27 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=69 x=36 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=70 x=45 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=71 x=54 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=72 x=63 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=73 x=72 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=74 x=81 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=75 x=90 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=76 x=99 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=77 x=108 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=78 x=117 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=79 x=126 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=80 x=135 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=81 x=144 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=82 x=153 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=83 x=162 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=84 x=171 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=85 x=180 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=86 x=189 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=87 x=198 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=88 x=207 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=89 x=216 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=90 x=225 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=91 x=423 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=92 x=0 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=93 x=432 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=94 x=9 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=95 x=72 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=96 x=342 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=97 x=0 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=98 x=9 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=99 x=18 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=100 x=27 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=101 x=36 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=102 x=45 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=103 x=54 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=104 x=63 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=105 x=72 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=106 x=81 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=107 x=90 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=108 x=99 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=109 x=108 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=110 x=117 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=111 x=126 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=112 x=135 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=113 x=144 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=114 x=153 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=115 x=162 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=116 x=171 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=117 x=180 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=118 x=189 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=119 x=198 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=120 x=207 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=121 x=216 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=122 x=225 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=123 x=441 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=124 x=477 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=125 x=450 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -char id=126 x=90 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 -kernings count=0 diff --git a/fonts/2ndpuberty..png b/fonts/2ndpuberty..png deleted file mode 100644 index a0f793d..0000000 Binary files a/fonts/2ndpuberty..png and /dev/null differ diff --git a/fonts/2ndpuberty..png.import b/fonts/2ndpuberty..png.import deleted file mode 100644 index cb38b53..0000000 --- a/fonts/2ndpuberty..png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/2ndpuberty..png-fcb093b956485853b52b89a083af493a.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://fonts/2ndpuberty..png" -dest_files=[ "res://.import/2ndpuberty..png-fcb093b956485853b52b89a083af493a.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/game.gd b/game.gd deleted file mode 100644 index 2bd7bf5..0000000 --- a/game.gd +++ /dev/null @@ -1,155 +0,0 @@ -extends Node - -var resolution = Vector2(256,192) -onready var viewport = get_parent().get_node("Main/Control/ViewportContainer/Viewport") -var current_sector = Vector2(0,0) -var fullscreen = false -#Onreadys -onready var viewport_container = get_parent().get_node("Main/Control/ViewportContainer") -#Collectibles -var golds = 0 -var stars = [false,false,false,false,false] -var shards = 0 -var arrows = 0 -var score = 0 -var high_score = 0 -var lives = 2 -var time = 0.0 -#Audio Channels -onready var ac_jump = $JumpSound -onready var ac_collectible = $CollecitbleSound -onready var ac_climb = $ClimbSound -onready var ac_die = $DieSound -onready var ac_music = $Music -onready var ac_cheat = $CodeEntrySound -#Sounds -const a_gold = preload("res://audio/sounds/gold.wav") -const a_arrow = preload("res://audio/sounds/a_egg_collect.ogg") -const a_jump = preload("res://audio/sounds/jump.ogg") -const a_star = preload("res://audio/sounds/a_jinjo.ogg") -const a_shard = preload("res://audio/sounds/shard.wav") -const a_climb_up = preload("res://audio/sounds/a_climb.ogg") -const a_climb_down = preload("res://audio/sounds/a_bmilc.ogg") -const a_sword = preload("res://audio/sounds/sword.ogg") -const a_doublejump = preload("res://audio/sounds/a_bree.wav") -const a_shoot = preload("res://audio/sounds/a_egg_shoot.ogg") -const a_die = preload("res://audio/sounds/die.wav") -const a_die_skeleton = preload("res://audio/sounds/die_skeleton.wav") -const a_gover = preload("res://audio/sounds/gover.wav") -#Objects -const block_text = preload("res://objects/hud/blocktext.tscn") -const pause_screen = preload("res://objects/hud/pause_screen.tscn") -var respawn_point = Vector2(32,166) #Respawn point -var current_level = 0 #Current level being played -var current_file = 1 #Current save file -var shards_collected = [false,false,false,false,false,false,false,false,false,false] - -func _ready(): - Save.load_file(current_file) - -#Instances a node -func instance_node(node:PackedScene,x:float,y:float,parent): - var Instance = node.instance() - Instance.global_position = Vector2(x,y) - parent.add_child(Instance) - -#Plays a sound -func play_sound(snd,player): - player.set_stream(snd) - player._set_playing(true) - -#Get position in sectors -func get_sector(pos): - return (pos / resolution).floor() - -#Return the current Map -func get_map(): - return get_tree().get_nodes_in_group("map")[0] - -#Go to new map -func change_map(map): - shards_collected = [false,false,false,false,false,false,false,false,false,false] - get_map().queue_free() - instance_node(map,0,0,viewport) - -#Clear data -func clear_collectibles(): - Game.score = 0 - Game.golds = 0 - Game.stars = [false,false,false,false,false] - Game.shards = 0 - Game.arrows = 0 - Game.lives = 2 - -#Save -func save(): - var save_id = LevelData.levels[current_level].save_id - var save_data = Save.get_level_data(save_id) - var is_100 = shards >= 5 && golds >= 50 - # set score and time depending on completion - if score > save_data["score_100" if is_100 else "score_any"]: - Save.set_score(save_id, score, is_100) - if time < save_data["time_100" if is_100 else "time_any"]: - Save.set_time(save_id, time, is_100) - # set shards - for i in 8: - if shards_collected[i]: - Save.set_shard_collected(save_id, i, true) - # save file - Save.save_file(current_file) - -#Convert seconds into M:SS:MS -func timeify(input): - if input < 600: - var minutes = str(floor(input / 60)) - var seconds = floor(fmod(input,60)) - var milliseconds := floor(fmod(input, 1) * 100) - return minutes + ":" + ("%02d" % seconds) + ":" + ("%02d" % milliseconds) - elif input == INF: - return "-:--:--" - else: - return "9:59:99" - -#Restart level -func restart_level(): - if Game.score > Game.high_score: Game.high_score = Game.score - Game.score = 0 - Game.golds = 0 - Game.stars = [false,false,false,false,false] - Game.shards = 0 - Game.arrows = 0 - Game.lives = 2 - Game.ac_climb.stop() - Game.ac_die.stop() - Engine.time_scale = 1.0 - for tween in get_tree().get_processed_tweens(): - tween.kill() - Game.change_map(load(Game.get_map().filename)) - -#Freeze frame -func freeze_frame(time): - get_tree().paused = true - var timer = get_tree().create_timer(time, true) - timer.connect("timeout", get_tree(), "set_pause", [false]) - return timer - -#Check if 100%ed -func has_collection_bonus(): - return Game.shards == 5 && Game.golds == 50 - -func _process(delta): - if Debug.entry == false: - #CRT FILTER - if Input.is_action_just_pressed("crt"): - viewport_container.material.set_shader_param("enabled",!viewport_container.material.get_shader_param("enabled")) - #Fullscreen - if Input.is_action_just_pressed("fullscreen"): - fullscreen = !fullscreen - if fullscreen: - OS.set_window_fullscreen(true) - else: - OS.set_window_fullscreen(false) - #Pause - if Input.is_action_just_pressed("pause"): - var viewport = get_parent().get_node("Main/Control/ViewportContainer/Viewport") - instance_node(pause_screen,0,0,viewport) diff --git a/game.tscn b/game.tscn deleted file mode 100644 index da0cea6..0000000 --- a/game.tscn +++ /dev/null @@ -1,25 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://game.gd" type="Script" id=1] - -[node name="Game" type="Node"] -pause_mode = 2 -script = ExtResource( 1 ) - -[node name="CollecitbleSound" type="AudioStreamPlayer" parent="."] -volume_db = -8.0 - -[node name="JumpSound" type="AudioStreamPlayer" parent="."] -volume_db = -12.0 - -[node name="ClimbSound" type="AudioStreamPlayer" parent="."] -volume_db = -12.0 - -[node name="Music" type="AudioStreamPlayer" parent="."] -volume_db = -13.5 - -[node name="DieSound" type="AudioStreamPlayer" parent="."] -volume_db = -12.0 - -[node name="CodeEntrySound" type="AudioStreamPlayer" parent="."] -volume_db = -12.0 diff --git a/global_palette.png b/global_palette.png index 8a44fb0..a77b625 100644 Binary files a/global_palette.png and b/global_palette.png differ diff --git a/graphics/backgrounds/abyss.png b/graphics/backgrounds/abyss.png new file mode 100644 index 0000000..21ccf85 Binary files /dev/null and b/graphics/backgrounds/abyss.png differ diff --git a/graphics/backgrounds/abyss.png.import b/graphics/backgrounds/abyss.png.import new file mode 100644 index 0000000..c78c57a --- /dev/null +++ b/graphics/backgrounds/abyss.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/abyss.png-ce2d2c9a469b6a1269abd6a6791bd5a0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/abyss.png" +dest_files=[ "res://.import/abyss.png-ce2d2c9a469b6a1269abd6a6791bd5a0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/canopy.png b/graphics/backgrounds/canopy.png index 01e90dc..b03152c 100644 Binary files a/graphics/backgrounds/canopy.png and b/graphics/backgrounds/canopy.png differ diff --git a/graphics/backgrounds/cave_scholar.png b/graphics/backgrounds/cave_scholar.png new file mode 100644 index 0000000..3606543 Binary files /dev/null and b/graphics/backgrounds/cave_scholar.png differ diff --git a/graphics/backgrounds/cave_scholar.png.import b/graphics/backgrounds/cave_scholar.png.import new file mode 100644 index 0000000..0bc1e56 --- /dev/null +++ b/graphics/backgrounds/cave_scholar.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cave_scholar.png-5daab0741db98d8c70cedb3ef3dbd7f3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/cave_scholar.png" +dest_files=[ "res://.import/cave_scholar.png-5daab0741db98d8c70cedb3ef3dbd7f3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/copper.png b/graphics/backgrounds/copper.png deleted file mode 100644 index 6d5e292..0000000 Binary files a/graphics/backgrounds/copper.png and /dev/null differ diff --git a/graphics/backgrounds/fami_rooftop.png b/graphics/backgrounds/fami_rooftop.png new file mode 100644 index 0000000..df5c30d Binary files /dev/null and b/graphics/backgrounds/fami_rooftop.png differ diff --git a/graphics/backgrounds/fami_rooftop.png.import b/graphics/backgrounds/fami_rooftop.png.import new file mode 100644 index 0000000..e84fc9e --- /dev/null +++ b/graphics/backgrounds/fami_rooftop.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fami_rooftop.png-ff77cafa929ebb12585d1acfffe83fe2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/fami_rooftop.png" +dest_files=[ "res://.import/fami_rooftop.png-ff77cafa929ebb12585d1acfffe83fe2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/fire.png b/graphics/backgrounds/fire.png new file mode 100644 index 0000000..e3e70ce Binary files /dev/null and b/graphics/backgrounds/fire.png differ diff --git a/graphics/backgrounds/fire.png.import b/graphics/backgrounds/fire.png.import new file mode 100644 index 0000000..216239a --- /dev/null +++ b/graphics/backgrounds/fire.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fire.png-1a6113db082c73e88b91aa92d46ef1c6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/fire.png" +dest_files=[ "res://.import/fire.png-1a6113db082c73e88b91aa92d46ef1c6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/hills.png b/graphics/backgrounds/hills.png new file mode 100644 index 0000000..8e19ea6 Binary files /dev/null and b/graphics/backgrounds/hills.png differ diff --git a/graphics/backgrounds/hills.png.import b/graphics/backgrounds/hills.png.import new file mode 100644 index 0000000..36f3fea --- /dev/null +++ b/graphics/backgrounds/hills.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hills.png-7dec5898237d30f7e14a64e4fdf326a3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/hills.png" +dest_files=[ "res://.import/hills.png-7dec5898237d30f7e14a64e4fdf326a3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/moon.png b/graphics/backgrounds/moon.png new file mode 100644 index 0000000..19e9e27 Binary files /dev/null and b/graphics/backgrounds/moon.png differ diff --git a/graphics/backgrounds/moon.png.import b/graphics/backgrounds/moon.png.import new file mode 100644 index 0000000..c3f3f99 --- /dev/null +++ b/graphics/backgrounds/moon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/moon.png-0d02dd6dd46a32e59657bae322ccdfab.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/moon.png" +dest_files=[ "res://.import/moon.png-0d02dd6dd46a32e59657bae322ccdfab.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/mountain_clouds.png b/graphics/backgrounds/mountain_clouds.png new file mode 100644 index 0000000..960e1fd Binary files /dev/null and b/graphics/backgrounds/mountain_clouds.png differ diff --git a/graphics/backgrounds/mountain_clouds.png.import b/graphics/backgrounds/mountain_clouds.png.import new file mode 100644 index 0000000..5634b60 --- /dev/null +++ b/graphics/backgrounds/mountain_clouds.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mountain_clouds.png-3cce20d1c8d3fb4da0e01c4ef2883a5a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/mountain_clouds.png" +dest_files=[ "res://.import/mountain_clouds.png-3cce20d1c8d3fb4da0e01c4ef2883a5a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/mountain_mountain.png b/graphics/backgrounds/mountain_mountain.png new file mode 100644 index 0000000..a499e95 Binary files /dev/null and b/graphics/backgrounds/mountain_mountain.png differ diff --git a/graphics/backgrounds/mountain_mountain.png.import b/graphics/backgrounds/mountain_mountain.png.import new file mode 100644 index 0000000..6aeb5b6 --- /dev/null +++ b/graphics/backgrounds/mountain_mountain.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mountain_mountain.png-b60ccc0e1dc2cad7e5e0f9b0989a8e90.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/mountain_mountain.png" +dest_files=[ "res://.import/mountain_mountain.png-b60ccc0e1dc2cad7e5e0f9b0989a8e90.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/mountain_sunset.png b/graphics/backgrounds/mountain_sunset.png new file mode 100644 index 0000000..a77e70f Binary files /dev/null and b/graphics/backgrounds/mountain_sunset.png differ diff --git a/graphics/backgrounds/mountain_sunset.png.import b/graphics/backgrounds/mountain_sunset.png.import new file mode 100644 index 0000000..c6681c1 --- /dev/null +++ b/graphics/backgrounds/mountain_sunset.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mountain_sunset.png-519fb714951bd75c9584558d94d5d245.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/mountain_sunset.png" +dest_files=[ "res://.import/mountain_sunset.png-519fb714951bd75c9584558d94d5d245.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/night.png b/graphics/backgrounds/night.png new file mode 100644 index 0000000..3e693d4 Binary files /dev/null and b/graphics/backgrounds/night.png differ diff --git a/graphics/backgrounds/night.png.import b/graphics/backgrounds/night.png.import new file mode 100644 index 0000000..eb93c10 --- /dev/null +++ b/graphics/backgrounds/night.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/night.png-bd14659ad4c7859075ba2714ac2dbbf2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/night.png" +dest_files=[ "res://.import/night.png-bd14659ad4c7859075ba2714ac2dbbf2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/rust.png b/graphics/backgrounds/rust.png new file mode 100644 index 0000000..f89d54f Binary files /dev/null and b/graphics/backgrounds/rust.png differ diff --git a/graphics/backgrounds/rust.png.import b/graphics/backgrounds/rust.png.import new file mode 100644 index 0000000..200a66e --- /dev/null +++ b/graphics/backgrounds/rust.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/rust.png-c1bb23404b8fb1787806ee30f87af3d9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/rust.png" +dest_files=[ "res://.import/rust.png-c1bb23404b8fb1787806ee30f87af3d9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/steel.png b/graphics/backgrounds/steel.png new file mode 100644 index 0000000..8a5ccc5 Binary files /dev/null and b/graphics/backgrounds/steel.png differ diff --git a/graphics/backgrounds/steel.png.import b/graphics/backgrounds/steel.png.import new file mode 100644 index 0000000..3b01f07 --- /dev/null +++ b/graphics/backgrounds/steel.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/steel.png-2632ac587d41da64a1aa822cf3846761.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/steel.png" +dest_files=[ "res://.import/steel.png-2632ac587d41da64a1aa822cf3846761.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/sun_and_clouds.png b/graphics/backgrounds/sun_and_clouds.png new file mode 100644 index 0000000..9c87617 Binary files /dev/null and b/graphics/backgrounds/sun_and_clouds.png differ diff --git a/graphics/backgrounds/sun_and_clouds.png.import b/graphics/backgrounds/sun_and_clouds.png.import new file mode 100644 index 0000000..9b85afc --- /dev/null +++ b/graphics/backgrounds/sun_and_clouds.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sun_and_clouds.png-c34ae0c7398c0c962738b6b195e403ec.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/sun_and_clouds.png" +dest_files=[ "res://.import/sun_and_clouds.png-c34ae0c7398c0c962738b6b195e403ec.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/barrier/barrier_2px.png b/graphics/barrier/barrier_2px.png index dd12d47..4f78446 100644 Binary files a/graphics/barrier/barrier_2px.png and b/graphics/barrier/barrier_2px.png differ diff --git a/graphics/barrier/jail_bars.png b/graphics/barrier/jail_bars.png new file mode 100644 index 0000000..79a192a Binary files /dev/null and b/graphics/barrier/jail_bars.png differ diff --git a/graphics/barrier/jail_bars.png.import b/graphics/barrier/jail_bars.png.import new file mode 100644 index 0000000..d27ac93 --- /dev/null +++ b/graphics/barrier/jail_bars.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/jail_bars.png-c12552d9db5ac1abb4b86393a6ffd9c8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/barrier/jail_bars.png" +dest_files=[ "res://.import/jail_bars.png-c12552d9db5ac1abb4b86393a6ffd9c8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/black_bars.png b/graphics/borders/black_bars.png new file mode 100644 index 0000000..81c8075 Binary files /dev/null and b/graphics/borders/black_bars.png differ diff --git a/graphics/borders/black_bars.png.import b/graphics/borders/black_bars.png.import new file mode 100644 index 0000000..d1976be --- /dev/null +++ b/graphics/borders/black_bars.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/black_bars.png-f561832c992d95eedd150193b627c9d7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/black_bars.png" +dest_files=[ "res://.import/black_bars.png-f561832c992d95eedd150193b627c9d7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/bodhi_sg_border.png b/graphics/borders/bodhi_sg_border.png new file mode 100644 index 0000000..81cb40c Binary files /dev/null and b/graphics/borders/bodhi_sg_border.png differ diff --git a/graphics/borders/bodhi_sg_border.png.import b/graphics/borders/bodhi_sg_border.png.import new file mode 100644 index 0000000..d81a1af --- /dev/null +++ b/graphics/borders/bodhi_sg_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bodhi_sg_border.png-3cf24d7237511d5ab9d451ff57338378.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/bodhi_sg_border.png" +dest_files=[ "res://.import/bodhi_sg_border.png-3cf24d7237511d5ab9d451ff57338378.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/copper.png b/graphics/borders/copper.png new file mode 100644 index 0000000..6225b09 Binary files /dev/null and b/graphics/borders/copper.png differ diff --git a/graphics/borders/copper.png.import b/graphics/borders/copper.png.import new file mode 100644 index 0000000..42c3eac --- /dev/null +++ b/graphics/borders/copper.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/copper.png-0b0131ce9b9cbaf1a35bcfe5384044a4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/copper.png" +dest_files=[ "res://.import/copper.png-0b0131ce9b9cbaf1a35bcfe5384044a4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/enby_border.png b/graphics/borders/enby_border.png new file mode 100644 index 0000000..ed3cc67 Binary files /dev/null and b/graphics/borders/enby_border.png differ diff --git a/graphics/borders/enby_border.png.import b/graphics/borders/enby_border.png.import new file mode 100644 index 0000000..bed31eb --- /dev/null +++ b/graphics/borders/enby_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/enby_border.png-8fe8ce46d94d5a239271b744697eea68.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/enby_border.png" +dest_files=[ "res://.import/enby_border.png-8fe8ce46d94d5a239271b744697eea68.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/endless_revolution.png b/graphics/borders/endless_revolution.png new file mode 100644 index 0000000..347d4e5 Binary files /dev/null and b/graphics/borders/endless_revolution.png differ diff --git a/graphics/borders/endless_revolution.png.import b/graphics/borders/endless_revolution.png.import new file mode 100644 index 0000000..00283ba --- /dev/null +++ b/graphics/borders/endless_revolution.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/endless_revolution.png-1d89aea8ca43103d7e9475b87f235435.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/endless_revolution.png" +dest_files=[ "res://.import/endless_revolution.png-1d89aea8ca43103d7e9475b87f235435.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/infiltration.png b/graphics/borders/infiltration.png new file mode 100644 index 0000000..8aeb0e0 Binary files /dev/null and b/graphics/borders/infiltration.png differ diff --git a/graphics/borders/infiltration.png.import b/graphics/borders/infiltration.png.import new file mode 100644 index 0000000..35c50ce --- /dev/null +++ b/graphics/borders/infiltration.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/infiltration.png-1da7899a792593280d7179886ee709d9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/infiltration.png" +dest_files=[ "res://.import/infiltration.png-1da7899a792593280d7179886ee709d9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/mosaic.png b/graphics/borders/mosaic.png new file mode 100644 index 0000000..401608f Binary files /dev/null and b/graphics/borders/mosaic.png differ diff --git a/graphics/borders/mosaic.png.import b/graphics/borders/mosaic.png.import new file mode 100644 index 0000000..b526f26 --- /dev/null +++ b/graphics/borders/mosaic.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mosaic.png-86087188dc497a73b24f23cbfd665f80.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/mosaic.png" +dest_files=[ "res://.import/mosaic.png-86087188dc497a73b24f23cbfd665f80.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/prideborder.png b/graphics/borders/prideborder.png index c4f969a..f0d47c9 100644 Binary files a/graphics/borders/prideborder.png and b/graphics/borders/prideborder.png differ diff --git a/graphics/borders/revolution_border.png b/graphics/borders/revolution_border.png new file mode 100644 index 0000000..a16611f Binary files /dev/null and b/graphics/borders/revolution_border.png differ diff --git a/graphics/borders/revolution_border.png.import b/graphics/borders/revolution_border.png.import new file mode 100644 index 0000000..fe9b5b4 --- /dev/null +++ b/graphics/borders/revolution_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/revolution_border.png-26cfcbd3fd4a8ff51b1e7e479b7e793b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/revolution_border.png" +dest_files=[ "res://.import/revolution_border.png-26cfcbd3fd4a8ff51b1e7e479b7e793b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/skaborder.png b/graphics/borders/skaborder.png new file mode 100644 index 0000000..9869734 Binary files /dev/null and b/graphics/borders/skaborder.png differ diff --git a/graphics/borders/skaborder.png.import b/graphics/borders/skaborder.png.import new file mode 100644 index 0000000..e1ae3a3 --- /dev/null +++ b/graphics/borders/skaborder.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/skaborder.png-b93f5de83ccf5fbcedd55382465c1432.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/skaborder.png" +dest_files=[ "res://.import/skaborder.png-b93f5de83ccf5fbcedd55382465c1432.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/static.png b/graphics/borders/static.png new file mode 100644 index 0000000..a1d080c Binary files /dev/null and b/graphics/borders/static.png differ diff --git a/graphics/borders/static.png.import b/graphics/borders/static.png.import new file mode 100644 index 0000000..1cd472c --- /dev/null +++ b/graphics/borders/static.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/static.png-bfbd6ab638837af161325225ae0ecc38.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/static.png" +dest_files=[ "res://.import/static.png-bfbd6ab638837af161325225ae0ecc38.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/the_gays_border.png b/graphics/borders/the_gays_border.png new file mode 100644 index 0000000..01caafd Binary files /dev/null and b/graphics/borders/the_gays_border.png differ diff --git a/graphics/borders/the_gays_border.png.import b/graphics/borders/the_gays_border.png.import new file mode 100644 index 0000000..358a16e --- /dev/null +++ b/graphics/borders/the_gays_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/the_gays_border.png-ce1ce710b5bf4d5182ecdd13d7a17fb5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/the_gays_border.png" +dest_files=[ "res://.import/the_gays_border.png-ce1ce710b5bf4d5182ecdd13d7a17fb5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/collectibles/30385.png b/graphics/collectibles/30385.png index 173f2d1..1b0793f 100644 Binary files a/graphics/collectibles/30385.png and b/graphics/collectibles/30385.png differ diff --git a/graphics/collectibles/key.png b/graphics/collectibles/key.png new file mode 100644 index 0000000..4d4e600 Binary files /dev/null and b/graphics/collectibles/key.png differ diff --git a/graphics/collectibles/key.png.import b/graphics/collectibles/key.png.import new file mode 100644 index 0000000..d3ff0a2 --- /dev/null +++ b/graphics/collectibles/key.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/key.png-224908b8fd999e59db3c3688c6a274a1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/collectibles/key.png" +dest_files=[ "res://.import/key.png-224908b8fd999e59db3c3688c6a274a1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/collectibles/pal_dime.png b/graphics/collectibles/pal_dime.png deleted file mode 100644 index 7aeee27..0000000 Binary files a/graphics/collectibles/pal_dime.png and /dev/null differ diff --git a/graphics/collectibles/pal_dime.png.import b/graphics/collectibles/pal_dime.png.import deleted file mode 100644 index e7c08f8..0000000 --- a/graphics/collectibles/pal_dime.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/pal_dime.png-c3cfda8a4b0f7f1e34b94571af5f2aff.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/collectibles/pal_dime.png" -dest_files=[ "res://.import/pal_dime.png-c3cfda8a4b0f7f1e34b94571af5f2aff.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/collectibles/pal_penny.png b/graphics/collectibles/pal_gold.png similarity index 100% rename from graphics/collectibles/pal_penny.png rename to graphics/collectibles/pal_gold.png diff --git a/graphics/collectibles/pal_gold.png.import b/graphics/collectibles/pal_gold.png.import new file mode 100644 index 0000000..2af4935 --- /dev/null +++ b/graphics/collectibles/pal_gold.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/pal_gold.png-1d32510fd65533e51861efb83f404009.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/collectibles/pal_gold.png" +dest_files=[ "res://.import/pal_gold.png-1d32510fd65533e51861efb83f404009.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/collectibles/pal_nickel.png b/graphics/collectibles/pal_nickel.png deleted file mode 100644 index faa2eb5..0000000 Binary files a/graphics/collectibles/pal_nickel.png and /dev/null differ diff --git a/graphics/collectibles/pal_nickel.png.import b/graphics/collectibles/pal_nickel.png.import deleted file mode 100644 index 076b052..0000000 --- a/graphics/collectibles/pal_nickel.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/pal_nickel.png-3d18346d4db1a8718745e6c08c14cc43.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/collectibles/pal_nickel.png" -dest_files=[ "res://.import/pal_nickel.png-3d18346d4db1a8718745e6c08c14cc43.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/collectibles/pal_penny.png.import b/graphics/collectibles/pal_penny.png.import deleted file mode 100644 index 69c6643..0000000 --- a/graphics/collectibles/pal_penny.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/pal_penny.png-2878f646b27e25b7bf3c37aa3de7b04b.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/collectibles/pal_penny.png" -dest_files=[ "res://.import/pal_penny.png-2878f646b27e25b7bf3c37aa3de7b04b.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/collectibles/shard.png b/graphics/collectibles/shard.png index fb1b4d3..4c2e263 100644 Binary files a/graphics/collectibles/shard.png and b/graphics/collectibles/shard.png differ diff --git a/graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png b/graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png new file mode 100644 index 0000000..6691630 Binary files /dev/null and b/graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png differ diff --git a/graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png.import b/graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png.import new file mode 100644 index 0000000..09fd899 --- /dev/null +++ b/graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow_sign.png-da6d10e9dfa32f0e569a1e5af2b395d9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png" +dest_files=[ "res://.import/arrow_sign.png-da6d10e9dfa32f0e569a1e5af2b395d9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/ending/end.png b/graphics/ending/end.png new file mode 100644 index 0000000..40680a4 Binary files /dev/null and b/graphics/ending/end.png differ diff --git a/graphics/ending/end.png.import b/graphics/ending/end.png.import new file mode 100644 index 0000000..0c89972 --- /dev/null +++ b/graphics/ending/end.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/end.png-086a46f85042ae90dc3a1e18c99813d0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/ending/end.png" +dest_files=[ "res://.import/end.png-086a46f85042ae90dc3a1e18c99813d0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/ending/end_egg.png b/graphics/ending/end_egg.png new file mode 100644 index 0000000..4526c02 Binary files /dev/null and b/graphics/ending/end_egg.png differ diff --git a/graphics/ending/end_egg.png.import b/graphics/ending/end_egg.png.import new file mode 100644 index 0000000..a6387ff --- /dev/null +++ b/graphics/ending/end_egg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/end_egg.png-2074c63941c3a4ac7552b725f3fe0e89.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/ending/end_egg.png" +dest_files=[ "res://.import/end_egg.png-2074c63941c3a4ac7552b725f3fe0e89.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/ending/picnic_table.png b/graphics/ending/picnic_table.png new file mode 100644 index 0000000..8acb474 Binary files /dev/null and b/graphics/ending/picnic_table.png differ diff --git a/graphics/ending/picnic_table.png.import b/graphics/ending/picnic_table.png.import new file mode 100644 index 0000000..37e63cf --- /dev/null +++ b/graphics/ending/picnic_table.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/picnic_table.png-36237cf92de6d1327e6c724100872052.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/ending/picnic_table.png" +dest_files=[ "res://.import/picnic_table.png-36237cf92de6d1327e6c724100872052.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/antlion.png b/graphics/enemy/antlion.png new file mode 100644 index 0000000..60fe466 Binary files /dev/null and b/graphics/enemy/antlion.png differ diff --git a/graphics/enemy/antlion.png.import b/graphics/enemy/antlion.png.import new file mode 100644 index 0000000..bcb21f5 --- /dev/null +++ b/graphics/enemy/antlion.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/antlion.png-d369a6b81d52bd231cbe21ebcf4a19a9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/antlion.png" +dest_files=[ "res://.import/antlion.png-d369a6b81d52bd231cbe21ebcf4a19a9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/antlion_body.png b/graphics/enemy/antlion_body.png new file mode 100644 index 0000000..370dd7e Binary files /dev/null and b/graphics/enemy/antlion_body.png differ diff --git a/graphics/enemy/antlion_body.png.import b/graphics/enemy/antlion_body.png.import new file mode 100644 index 0000000..ecea654 --- /dev/null +++ b/graphics/enemy/antlion_body.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/antlion_body.png-bcaee6ef06ac133db9c32040e4b38d32.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/antlion_body.png" +dest_files=[ "res://.import/antlion_body.png-bcaee6ef06ac133db9c32040e4b38d32.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/antlion_body_border.png b/graphics/enemy/antlion_body_border.png new file mode 100644 index 0000000..5d8d56d Binary files /dev/null and b/graphics/enemy/antlion_body_border.png differ diff --git a/graphics/enemy/antlion_body_border.png.import b/graphics/enemy/antlion_body_border.png.import new file mode 100644 index 0000000..7bc00eb --- /dev/null +++ b/graphics/enemy/antlion_body_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/antlion_body_border.png-eedaa961c8d23661449fab8f5d3562f5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/antlion_body_border.png" +dest_files=[ "res://.import/antlion_body_border.png-eedaa961c8d23661449fab8f5d3562f5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/artificial_soul.png b/graphics/enemy/artificial_soul.png new file mode 100644 index 0000000..dc4a8d5 Binary files /dev/null and b/graphics/enemy/artificial_soul.png differ diff --git a/graphics/enemy/artificial_soul.png.import b/graphics/enemy/artificial_soul.png.import new file mode 100644 index 0000000..ee47abd --- /dev/null +++ b/graphics/enemy/artificial_soul.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/artificial_soul.png-56b840ad8304c2739f473a4d5b5b0e29.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/artificial_soul.png" +dest_files=[ "res://.import/artificial_soul.png-56b840ad8304c2739f473a4d5b5b0e29.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/big_saw.png b/graphics/enemy/big_saw.png new file mode 100644 index 0000000..79a8611 Binary files /dev/null and b/graphics/enemy/big_saw.png differ diff --git a/graphics/enemy/big_saw.png.import b/graphics/enemy/big_saw.png.import new file mode 100644 index 0000000..1c3dfbc --- /dev/null +++ b/graphics/enemy/big_saw.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/big_saw.png-a44e3977b56835f580fa101393440339.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/big_saw.png" +dest_files=[ "res://.import/big_saw.png-a44e3977b56835f580fa101393440339.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/bone.png b/graphics/enemy/bone.png index f178f0e..9c8dfdf 100644 Binary files a/graphics/enemy/bone.png and b/graphics/enemy/bone.png differ diff --git a/graphics/enemy/boss/fami_parts/arm_segment.png b/graphics/enemy/boss/fami_parts/arm_segment.png new file mode 100644 index 0000000..c8528e8 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/arm_segment.png differ diff --git a/graphics/enemy/boss/fami_parts/arm_segment.png.import b/graphics/enemy/boss/fami_parts/arm_segment.png.import new file mode 100644 index 0000000..bcdcf16 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/arm_segment.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arm_segment.png-da4ef203361c0a30f2279aa0ab4f15ba.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/arm_segment.png" +dest_files=[ "res://.import/arm_segment.png-da4ef203361c0a30f2279aa0ab4f15ba.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/arm_segment_border.png b/graphics/enemy/boss/fami_parts/arm_segment_border.png new file mode 100644 index 0000000..b028667 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/arm_segment_border.png differ diff --git a/graphics/enemy/boss/fami_parts/arm_segment_border.png.import b/graphics/enemy/boss/fami_parts/arm_segment_border.png.import new file mode 100644 index 0000000..4a886f0 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/arm_segment_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arm_segment_border.png-bf3b689b225eb094d59824f85abbae78.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/arm_segment_border.png" +dest_files=[ "res://.import/arm_segment_border.png-bf3b689b225eb094d59824f85abbae78.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/body.png b/graphics/enemy/boss/fami_parts/body.png new file mode 100644 index 0000000..95ff842 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/body.png differ diff --git a/graphics/enemy/boss/fami_parts/body.png.import b/graphics/enemy/boss/fami_parts/body.png.import new file mode 100644 index 0000000..4df6019 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/body.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/body.png-df6aa24749dc789c01ae739efee96718.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/body.png" +dest_files=[ "res://.import/body.png-df6aa24749dc789c01ae739efee96718.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/body_glow_mask.png b/graphics/enemy/boss/fami_parts/body_glow_mask.png new file mode 100644 index 0000000..6d7a483 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/body_glow_mask.png differ diff --git a/graphics/enemy/boss/fami_parts/body_glow_mask.png.import b/graphics/enemy/boss/fami_parts/body_glow_mask.png.import new file mode 100644 index 0000000..e8918f1 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/body_glow_mask.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/body_glow_mask.png-5d6ebce3da83f855ce22bad6beb88258.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/body_glow_mask.png" +dest_files=[ "res://.import/body_glow_mask.png-5d6ebce3da83f855ce22bad6beb88258.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/eye.png b/graphics/enemy/boss/fami_parts/eye.png new file mode 100644 index 0000000..386dc52 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/eye.png differ diff --git a/graphics/enemy/boss/fami_parts/eye.png.import b/graphics/enemy/boss/fami_parts/eye.png.import new file mode 100644 index 0000000..08679c8 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/eye.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/eye.png-b4c7f42b6e983d4217350a9b2ac20562.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/eye.png" +dest_files=[ "res://.import/eye.png-b4c7f42b6e983d4217350a9b2ac20562.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/foot.png b/graphics/enemy/boss/fami_parts/foot.png new file mode 100644 index 0000000..7b387c6 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/foot.png differ diff --git a/graphics/enemy/boss/fami_parts/foot.png.import b/graphics/enemy/boss/fami_parts/foot.png.import new file mode 100644 index 0000000..cd8c7fb --- /dev/null +++ b/graphics/enemy/boss/fami_parts/foot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/foot.png-2e76590f0a66ba7ca91cc05a549afe87.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/foot.png" +dest_files=[ "res://.import/foot.png-2e76590f0a66ba7ca91cc05a549afe87.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/hand.png b/graphics/enemy/boss/fami_parts/hand.png new file mode 100644 index 0000000..e23d808 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/hand.png differ diff --git a/graphics/enemy/boss/fami_parts/hand.png.import b/graphics/enemy/boss/fami_parts/hand.png.import new file mode 100644 index 0000000..cc4da80 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/hand.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hand.png-c354281b38925f653c87a54040cc3a24.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/hand.png" +dest_files=[ "res://.import/hand.png-c354281b38925f653c87a54040cc3a24.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/head_back.png b/graphics/enemy/boss/fami_parts/head_back.png new file mode 100644 index 0000000..cd01095 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/head_back.png differ diff --git a/graphics/enemy/boss/fami_parts/head_back.png.import b/graphics/enemy/boss/fami_parts/head_back.png.import new file mode 100644 index 0000000..3a7eaac --- /dev/null +++ b/graphics/enemy/boss/fami_parts/head_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_back.png-1bccd614de968923411809ed0a9a47ec.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/head_back.png" +dest_files=[ "res://.import/head_back.png-1bccd614de968923411809ed0a9a47ec.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/head_back_glow_mask.png b/graphics/enemy/boss/fami_parts/head_back_glow_mask.png new file mode 100644 index 0000000..666e4c9 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/head_back_glow_mask.png differ diff --git a/graphics/enemy/boss/fami_parts/head_back_glow_mask.png.import b/graphics/enemy/boss/fami_parts/head_back_glow_mask.png.import new file mode 100644 index 0000000..528f40d --- /dev/null +++ b/graphics/enemy/boss/fami_parts/head_back_glow_mask.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_back_glow_mask.png-912947a6fac25c3b88539a342be1eaa2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/head_back_glow_mask.png" +dest_files=[ "res://.import/head_back_glow_mask.png-912947a6fac25c3b88539a342be1eaa2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/head_lower.png b/graphics/enemy/boss/fami_parts/head_lower.png new file mode 100644 index 0000000..76cf031 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/head_lower.png differ diff --git a/graphics/enemy/boss/fami_parts/head_lower.png.import b/graphics/enemy/boss/fami_parts/head_lower.png.import new file mode 100644 index 0000000..a25c2af --- /dev/null +++ b/graphics/enemy/boss/fami_parts/head_lower.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_lower.png-3f00788ef8e1fe96a9f1619728b058df.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/head_lower.png" +dest_files=[ "res://.import/head_lower.png-3f00788ef8e1fe96a9f1619728b058df.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/head_upper.png b/graphics/enemy/boss/fami_parts/head_upper.png new file mode 100644 index 0000000..1031cb2 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/head_upper.png differ diff --git a/graphics/enemy/boss/fami_parts/head_upper.png.import b/graphics/enemy/boss/fami_parts/head_upper.png.import new file mode 100644 index 0000000..663ce4c --- /dev/null +++ b/graphics/enemy/boss/fami_parts/head_upper.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_upper.png-c39f225b2583e29d199ec2fba43a0662.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/head_upper.png" +dest_files=[ "res://.import/head_upper.png-c39f225b2583e29d199ec2fba43a0662.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/head_upper_glow_mask.png b/graphics/enemy/boss/fami_parts/head_upper_glow_mask.png new file mode 100644 index 0000000..653643d Binary files /dev/null and b/graphics/enemy/boss/fami_parts/head_upper_glow_mask.png differ diff --git a/graphics/enemy/boss/fami_parts/head_upper_glow_mask.png.import b/graphics/enemy/boss/fami_parts/head_upper_glow_mask.png.import new file mode 100644 index 0000000..0787294 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/head_upper_glow_mask.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_upper_glow_mask.png-b8eac607758b521c1c339ab5fe792414.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/head_upper_glow_mask.png" +dest_files=[ "res://.import/head_upper_glow_mask.png-b8eac607758b521c1c339ab5fe792414.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/leg.png b/graphics/enemy/boss/fami_parts/leg.png new file mode 100644 index 0000000..2a326b9 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/leg.png differ diff --git a/graphics/enemy/boss/fami_parts/leg.png.import b/graphics/enemy/boss/fami_parts/leg.png.import new file mode 100644 index 0000000..acefac1 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/leg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/leg.png-b5cf2c1eb1aa8a79ae6def8820c2a75a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/leg.png" +dest_files=[ "res://.import/leg.png-b5cf2c1eb1aa8a79ae6def8820c2a75a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/leg_lower.png b/graphics/enemy/boss/fami_parts/leg_lower.png new file mode 100644 index 0000000..675e723 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/leg_lower.png differ diff --git a/graphics/enemy/boss/fami_parts/leg_lower.png.import b/graphics/enemy/boss/fami_parts/leg_lower.png.import new file mode 100644 index 0000000..7b38e09 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/leg_lower.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/leg_lower.png-9ecb53d4858a913e6ec3beaecc3411d2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/leg_lower.png" +dest_files=[ "res://.import/leg_lower.png-9ecb53d4858a913e6ec3beaecc3411d2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/mouth_tendril.png b/graphics/enemy/boss/fami_parts/mouth_tendril.png new file mode 100644 index 0000000..facee02 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/mouth_tendril.png differ diff --git a/graphics/enemy/boss/fami_parts/mouth_tendril.png.import b/graphics/enemy/boss/fami_parts/mouth_tendril.png.import new file mode 100644 index 0000000..a261f6b --- /dev/null +++ b/graphics/enemy/boss/fami_parts/mouth_tendril.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mouth_tendril.png-f6bdbcc85167f9ddb0b2ff5a81efc376.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/mouth_tendril.png" +dest_files=[ "res://.import/mouth_tendril.png-f6bdbcc85167f9ddb0b2ff5a81efc376.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/famira-wip.png b/graphics/enemy/boss/famira-wip.png new file mode 100644 index 0000000..025c5a3 Binary files /dev/null and b/graphics/enemy/boss/famira-wip.png differ diff --git a/graphics/enemy/boss/famira-wip.png.import b/graphics/enemy/boss/famira-wip.png.import new file mode 100644 index 0000000..7b6343a --- /dev/null +++ b/graphics/enemy/boss/famira-wip.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira-wip.png-724a50fc63b1b570cfdaa11733d1f42e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/famira-wip.png" +dest_files=[ "res://.import/famira-wip.png-724a50fc63b1b570cfdaa11733d1f42e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/famira_dissolve.png b/graphics/enemy/boss/famira_dissolve.png new file mode 100644 index 0000000..4f64df4 Binary files /dev/null and b/graphics/enemy/boss/famira_dissolve.png differ diff --git a/graphics/enemy/boss/famira_dissolve.png.import b/graphics/enemy/boss/famira_dissolve.png.import new file mode 100644 index 0000000..e11954d --- /dev/null +++ b/graphics/enemy/boss/famira_dissolve.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_dissolve.png-fc21beac8113424467a72a3beb454de9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/famira_dissolve.png" +dest_files=[ "res://.import/famira_dissolve.png-fc21beac8113424467a72a3beb454de9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/famira_fire.png b/graphics/enemy/boss/famira_fire.png new file mode 100644 index 0000000..bf6ff01 Binary files /dev/null and b/graphics/enemy/boss/famira_fire.png differ diff --git a/graphics/enemy/boss/famira_fire.png.import b/graphics/enemy/boss/famira_fire.png.import new file mode 100644 index 0000000..052b4a1 --- /dev/null +++ b/graphics/enemy/boss/famira_fire.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_fire.png-e17dc562be1c1f2c970eb59a9cfda450.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/famira_fire.png" +dest_files=[ "res://.import/famira_fire.png-e17dc562be1c1f2c970eb59a9cfda450.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump.png b/graphics/enemy/boss/scrump.png new file mode 100644 index 0000000..94b9db4 Binary files /dev/null and b/graphics/enemy/boss/scrump.png differ diff --git a/graphics/enemy/boss/scrump.png.import b/graphics/enemy/boss/scrump.png.import new file mode 100644 index 0000000..5305916 --- /dev/null +++ b/graphics/enemy/boss/scrump.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/scrump.png-20a0f13e9fd578f74222e8fcfeadea9c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump.png" +dest_files=[ "res://.import/scrump.png-20a0f13e9fd578f74222e8fcfeadea9c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/brain1.png b/graphics/enemy/boss/scrump_gore/brain1.png new file mode 100644 index 0000000..5593884 Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/brain1.png differ diff --git a/graphics/enemy/boss/scrump_gore/brain1.png.import b/graphics/enemy/boss/scrump_gore/brain1.png.import new file mode 100644 index 0000000..abff7b5 --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/brain1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/brain1.png-1158e09185c1ea5503436abba618a779.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/brain1.png" +dest_files=[ "res://.import/brain1.png-1158e09185c1ea5503436abba618a779.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/brain2.png b/graphics/enemy/boss/scrump_gore/brain2.png new file mode 100644 index 0000000..753e563 Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/brain2.png differ diff --git a/graphics/enemy/boss/scrump_gore/brain2.png.import b/graphics/enemy/boss/scrump_gore/brain2.png.import new file mode 100644 index 0000000..c2717f6 --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/brain2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/brain2.png-2250df685cd477f1289fb2afa9805a3b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/brain2.png" +dest_files=[ "res://.import/brain2.png-2250df685cd477f1289fb2afa9805a3b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/brain3.png b/graphics/enemy/boss/scrump_gore/brain3.png new file mode 100644 index 0000000..2100a49 Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/brain3.png differ diff --git a/graphics/enemy/boss/scrump_gore/brain3.png.import b/graphics/enemy/boss/scrump_gore/brain3.png.import new file mode 100644 index 0000000..a6b2c1f --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/brain3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/brain3.png-4d4ddcec1be58de1f6459b0ee86b2bc0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/brain3.png" +dest_files=[ "res://.import/brain3.png-4d4ddcec1be58de1f6459b0ee86b2bc0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/brain4.png b/graphics/enemy/boss/scrump_gore/brain4.png new file mode 100644 index 0000000..7360fea Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/brain4.png differ diff --git a/graphics/enemy/boss/scrump_gore/brain4.png.import b/graphics/enemy/boss/scrump_gore/brain4.png.import new file mode 100644 index 0000000..7d5a70f --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/brain4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/brain4.png-109d7c623bdbccda56ce2e16b44930f5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/brain4.png" +dest_files=[ "res://.import/brain4.png-109d7c623bdbccda56ce2e16b44930f5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/eye.png b/graphics/enemy/boss/scrump_gore/eye.png new file mode 100644 index 0000000..6a1d1fe Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/eye.png differ diff --git a/graphics/enemy/boss/scrump_gore/eye.png.import b/graphics/enemy/boss/scrump_gore/eye.png.import new file mode 100644 index 0000000..d244d7f --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/eye.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/eye.png-59017e84b7d250914b0edece5a3dbe4c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/eye.png" +dest_files=[ "res://.import/eye.png-59017e84b7d250914b0edece5a3dbe4c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/eyestalk.png b/graphics/enemy/boss/scrump_gore/eyestalk.png new file mode 100644 index 0000000..feffc04 Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/eyestalk.png differ diff --git a/graphics/enemy/boss/scrump_gore/eyestalk.png.import b/graphics/enemy/boss/scrump_gore/eyestalk.png.import new file mode 100644 index 0000000..fa0ac7e --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/eyestalk.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/eyestalk.png-4ace80160a0fb54f0cadd22cd1eefed7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/eyestalk.png" +dest_files=[ "res://.import/eyestalk.png-4ace80160a0fb54f0cadd22cd1eefed7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/headlower.png b/graphics/enemy/boss/scrump_gore/headlower.png new file mode 100644 index 0000000..917bde2 Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/headlower.png differ diff --git a/graphics/enemy/boss/scrump_gore/headlower.png.import b/graphics/enemy/boss/scrump_gore/headlower.png.import new file mode 100644 index 0000000..ce50600 --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/headlower.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/headlower.png-8a896df396494abd24a6cea552fcd875.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/headlower.png" +dest_files=[ "res://.import/headlower.png-8a896df396494abd24a6cea552fcd875.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/headupper.png b/graphics/enemy/boss/scrump_gore/headupper.png new file mode 100644 index 0000000..463fe04 Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/headupper.png differ diff --git a/graphics/enemy/boss/scrump_gore/headupper.png.import b/graphics/enemy/boss/scrump_gore/headupper.png.import new file mode 100644 index 0000000..0bb99c9 --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/headupper.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/headupper.png-4c1bc34d2bdb2eb54ca8588fd1c55ea5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/headupper.png" +dest_files=[ "res://.import/headupper.png-4c1bc34d2bdb2eb54ca8588fd1c55ea5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/tentacle1.png b/graphics/enemy/boss/scrump_gore/tentacle1.png new file mode 100644 index 0000000..e64bf40 Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/tentacle1.png differ diff --git a/graphics/enemy/boss/scrump_gore/tentacle1.png.import b/graphics/enemy/boss/scrump_gore/tentacle1.png.import new file mode 100644 index 0000000..84df8bf --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/tentacle1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tentacle1.png-1e1d4b85b51f27875445a7b33b412617.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/tentacle1.png" +dest_files=[ "res://.import/tentacle1.png-1e1d4b85b51f27875445a7b33b412617.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/tentacle2.png b/graphics/enemy/boss/scrump_gore/tentacle2.png new file mode 100644 index 0000000..782955e Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/tentacle2.png differ diff --git a/graphics/enemy/boss/scrump_gore/tentacle2.png.import b/graphics/enemy/boss/scrump_gore/tentacle2.png.import new file mode 100644 index 0000000..e7b28ff --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/tentacle2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tentacle2.png-835d05b55680976174a62f32f51ddc20.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/tentacle2.png" +dest_files=[ "res://.import/tentacle2.png-835d05b55680976174a62f32f51ddc20.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/tentacle3.png b/graphics/enemy/boss/scrump_gore/tentacle3.png new file mode 100644 index 0000000..cd2024a Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/tentacle3.png differ diff --git a/graphics/enemy/boss/scrump_gore/tentacle3.png.import b/graphics/enemy/boss/scrump_gore/tentacle3.png.import new file mode 100644 index 0000000..60ebf8b --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/tentacle3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tentacle3.png-85addbc9cd47f50ad26b6a2dc46b92a5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/tentacle3.png" +dest_files=[ "res://.import/tentacle3.png-85addbc9cd47f50ad26b6a2dc46b92a5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/tentacle4.png b/graphics/enemy/boss/scrump_gore/tentacle4.png new file mode 100644 index 0000000..63144bb Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/tentacle4.png differ diff --git a/graphics/enemy/boss/scrump_gore/tentacle4.png.import b/graphics/enemy/boss/scrump_gore/tentacle4.png.import new file mode 100644 index 0000000..68ad508 --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/tentacle4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tentacle4.png-b0a2f40eb4e9ded19420aa6b6663b1f7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/tentacle4.png" +dest_files=[ "res://.import/tentacle4.png-b0a2f40eb4e9ded19420aa6b6663b1f7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/tentacle5.png b/graphics/enemy/boss/scrump_gore/tentacle5.png new file mode 100644 index 0000000..e3e04f2 Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/tentacle5.png differ diff --git a/graphics/enemy/boss/scrump_gore/tentacle5.png.import b/graphics/enemy/boss/scrump_gore/tentacle5.png.import new file mode 100644 index 0000000..21d78d4 --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/tentacle5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tentacle5.png-8e7223bc5d1918d75d16b5098d66b7d7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/tentacle5.png" +dest_files=[ "res://.import/tentacle5.png-8e7223bc5d1918d75d16b5098d66b7d7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/scrump_gore/tentacle6.png b/graphics/enemy/boss/scrump_gore/tentacle6.png new file mode 100644 index 0000000..a441140 Binary files /dev/null and b/graphics/enemy/boss/scrump_gore/tentacle6.png differ diff --git a/graphics/enemy/boss/scrump_gore/tentacle6.png.import b/graphics/enemy/boss/scrump_gore/tentacle6.png.import new file mode 100644 index 0000000..0943b4e --- /dev/null +++ b/graphics/enemy/boss/scrump_gore/tentacle6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tentacle6.png-21ece83eb93c3f03b8142e110a83ddb3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/scrump_gore/tentacle6.png" +dest_files=[ "res://.import/tentacle6.png-21ece83eb93c3f03b8142e110a83ddb3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/beam.png b/graphics/enemy/boss/stg_2600/beam.png new file mode 100644 index 0000000..ff3ad0d Binary files /dev/null and b/graphics/enemy/boss/stg_2600/beam.png differ diff --git a/graphics/enemy/boss/stg_2600/beam.png.import b/graphics/enemy/boss/stg_2600/beam.png.import new file mode 100644 index 0000000..9ae197a --- /dev/null +++ b/graphics/enemy/boss/stg_2600/beam.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/beam.png-a6465ac769ebb2c528af0b787f682930.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/beam.png" +dest_files=[ "res://.import/beam.png-a6465ac769ebb2c528af0b787f682930.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/beam_gradient.png b/graphics/enemy/boss/stg_2600/beam_gradient.png new file mode 100644 index 0000000..4be40f8 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/beam_gradient.png differ diff --git a/graphics/enemy/boss/stg_2600/beam_gradient.png.import b/graphics/enemy/boss/stg_2600/beam_gradient.png.import new file mode 100644 index 0000000..6137a04 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/beam_gradient.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/beam_gradient.png-1b75c5d23d16832372548a1c5c3edb0d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/beam_gradient.png" +dest_files=[ "res://.import/beam_gradient.png-1b75c5d23d16832372548a1c5c3edb0d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/bold_large.xcf b/graphics/enemy/boss/stg_2600/bold_large.xcf new file mode 100644 index 0000000..8e19af6 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/bold_large.xcf differ diff --git a/graphics/enemy/boss/stg_2600/bolt_large.png b/graphics/enemy/boss/stg_2600/bolt_large.png new file mode 100644 index 0000000..302db84 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/bolt_large.png differ diff --git a/graphics/enemy/boss/stg_2600/bolt_large.png.import b/graphics/enemy/boss/stg_2600/bolt_large.png.import new file mode 100644 index 0000000..a722400 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/bolt_large.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bolt_large.png-87121a52143bd846fbb123b3634228b7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/bolt_large.png" +dest_files=[ "res://.import/bolt_large.png-87121a52143bd846fbb123b3634228b7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/bolt_large.xcf b/graphics/enemy/boss/stg_2600/bolt_large.xcf new file mode 100644 index 0000000..611c39f Binary files /dev/null and b/graphics/enemy/boss/stg_2600/bolt_large.xcf differ diff --git a/graphics/enemy/boss/stg_2600/bolt_medium.png b/graphics/enemy/boss/stg_2600/bolt_medium.png new file mode 100644 index 0000000..2e35b22 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/bolt_medium.png differ diff --git a/graphics/enemy/boss/stg_2600/bolt_medium.png.import b/graphics/enemy/boss/stg_2600/bolt_medium.png.import new file mode 100644 index 0000000..fc3b685 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/bolt_medium.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bolt_medium.png-c18f34f796165752e94c6e28216b7e6e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/bolt_medium.png" +dest_files=[ "res://.import/bolt_medium.png-c18f34f796165752e94c6e28216b7e6e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/bolt_medium.xcf b/graphics/enemy/boss/stg_2600/bolt_medium.xcf new file mode 100644 index 0000000..c1d3f4a Binary files /dev/null and b/graphics/enemy/boss/stg_2600/bolt_medium.xcf differ diff --git a/graphics/enemy/boss/stg_2600/bolt_small.xcf b/graphics/enemy/boss/stg_2600/bolt_small.xcf new file mode 100644 index 0000000..94dbe84 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/bolt_small.xcf differ diff --git a/graphics/enemy/boss/stg_2600/foot.png b/graphics/enemy/boss/stg_2600/foot.png new file mode 100644 index 0000000..d8146da Binary files /dev/null and b/graphics/enemy/boss/stg_2600/foot.png differ diff --git a/graphics/enemy/boss/stg_2600/foot.png.import b/graphics/enemy/boss/stg_2600/foot.png.import new file mode 100644 index 0000000..e56b636 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/foot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/foot.png-49e7bfc3417af16c0f1c825106e6cf3a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/foot.png" +dest_files=[ "res://.import/foot.png-49e7bfc3417af16c0f1c825106e6cf3a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/foot.xcf b/graphics/enemy/boss/stg_2600/foot.xcf new file mode 100644 index 0000000..f6ab01d Binary files /dev/null and b/graphics/enemy/boss/stg_2600/foot.xcf differ diff --git a/graphics/enemy/boss/stg_2600/head_broken.png b/graphics/enemy/boss/stg_2600/head_broken.png new file mode 100644 index 0000000..a19d4d1 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/head_broken.png differ diff --git a/graphics/enemy/boss/stg_2600/head_broken.png.import b/graphics/enemy/boss/stg_2600/head_broken.png.import new file mode 100644 index 0000000..cfb4bf2 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/head_broken.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_broken.png-cf8f0c7e5f516f4b2efbd5ac2fee134c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/head_broken.png" +dest_files=[ "res://.import/head_broken.png-cf8f0c7e5f516f4b2efbd5ac2fee134c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/head_cracked.png b/graphics/enemy/boss/stg_2600/head_cracked.png new file mode 100644 index 0000000..a81ac62 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/head_cracked.png differ diff --git a/graphics/enemy/boss/stg_2600/head_cracked.png.import b/graphics/enemy/boss/stg_2600/head_cracked.png.import new file mode 100644 index 0000000..f388cec --- /dev/null +++ b/graphics/enemy/boss/stg_2600/head_cracked.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_cracked.png-6dfa8a34ba8a3e28ec67d923de7dda93.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/head_cracked.png" +dest_files=[ "res://.import/head_cracked.png-6dfa8a34ba8a3e28ec67d923de7dda93.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/head_intact.png b/graphics/enemy/boss/stg_2600/head_intact.png new file mode 100644 index 0000000..b8255eb Binary files /dev/null and b/graphics/enemy/boss/stg_2600/head_intact.png differ diff --git a/graphics/enemy/boss/stg_2600/head_intact.png.import b/graphics/enemy/boss/stg_2600/head_intact.png.import new file mode 100644 index 0000000..a39a2d9 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/head_intact.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_intact.png-54b42888eb160863193673b5bc2d22d5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/head_intact.png" +dest_files=[ "res://.import/head_intact.png-54b42888eb160863193673b5bc2d22d5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/leg.png b/graphics/enemy/boss/stg_2600/leg.png new file mode 100644 index 0000000..4129b56 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/leg.png differ diff --git a/graphics/enemy/boss/stg_2600/leg.png.import b/graphics/enemy/boss/stg_2600/leg.png.import new file mode 100644 index 0000000..83a842e --- /dev/null +++ b/graphics/enemy/boss/stg_2600/leg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/leg.png-e82a4080bfae744da299fb320083a254.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/leg.png" +dest_files=[ "res://.import/leg.png-e82a4080bfae744da299fb320083a254.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/sg_2083.png b/graphics/enemy/boss/stg_2600/sg_2083.png new file mode 100644 index 0000000..f5b8ca0 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/sg_2083.png differ diff --git a/graphics/enemy/boss/stg_2600/sg_2083.png.import b/graphics/enemy/boss/stg_2600/sg_2083.png.import new file mode 100644 index 0000000..d00ec58 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/sg_2083.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_2083.png-e75cfae4b8483550759568a2ca940538.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/sg_2083.png" +dest_files=[ "res://.import/sg_2083.png-e75cfae4b8483550759568a2ca940538.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/tailpipes.png b/graphics/enemy/boss/stg_2600/tailpipes.png new file mode 100644 index 0000000..a384fd5 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/tailpipes.png differ diff --git a/graphics/enemy/boss/stg_2600/tailpipes.png.import b/graphics/enemy/boss/stg_2600/tailpipes.png.import new file mode 100644 index 0000000..af2089d --- /dev/null +++ b/graphics/enemy/boss/stg_2600/tailpipes.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tailpipes.png-f2cc21241c48e1d5a125f73c2b7a9f85.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/tailpipes.png" +dest_files=[ "res://.import/tailpipes.png-f2cc21241c48e1d5a125f73c2b7a9f85.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/the_scrump.png b/graphics/enemy/boss/the_scrump.png new file mode 100644 index 0000000..3668331 Binary files /dev/null and b/graphics/enemy/boss/the_scrump.png differ diff --git a/graphics/enemy/boss/the_scrump.png.import b/graphics/enemy/boss/the_scrump.png.import new file mode 100644 index 0000000..ca09b5c --- /dev/null +++ b/graphics/enemy/boss/the_scrump.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/the_scrump.png-5d6d9e8e958472079e561df8449adc91.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/the_scrump.png" +dest_files=[ "res://.import/the_scrump.png-5d6d9e8e958472079e561df8449adc91.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/chain.png b/graphics/enemy/chain.png new file mode 100644 index 0000000..eef8472 Binary files /dev/null and b/graphics/enemy/chain.png differ diff --git a/graphics/enemy/chain.png.import b/graphics/enemy/chain.png.import new file mode 100644 index 0000000..7221e6d --- /dev/null +++ b/graphics/enemy/chain.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/chain.png-418b1dbdc93cfd012f4f36fd87b0e225.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/chain.png" +dest_files=[ "res://.import/chain.png-418b1dbdc93cfd012f4f36fd87b0e225.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/cop_idle.png b/graphics/enemy/cop/cop_idle.png new file mode 100644 index 0000000..12123f5 Binary files /dev/null and b/graphics/enemy/cop/cop_idle.png differ diff --git a/graphics/enemy/cop/cop_idle.png.import b/graphics/enemy/cop/cop_idle.png.import new file mode 100644 index 0000000..147dccd --- /dev/null +++ b/graphics/enemy/cop/cop_idle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cop_idle.png-61e8342149402c57abbb7d9f292f6738.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/cop_idle.png" +dest_files=[ "res://.import/cop_idle.png-61e8342149402c57abbb7d9f292f6738.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/cop_shoot.png b/graphics/enemy/cop/cop_shoot.png new file mode 100644 index 0000000..fac96a3 Binary files /dev/null and b/graphics/enemy/cop/cop_shoot.png differ diff --git a/graphics/enemy/cop/cop_shoot.png.import b/graphics/enemy/cop/cop_shoot.png.import new file mode 100644 index 0000000..d107d39 --- /dev/null +++ b/graphics/enemy/cop/cop_shoot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cop_shoot.png-7a1b6ca4069ac0f99c04c2a88c7e4ebd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/cop_shoot.png" +dest_files=[ "res://.import/cop_shoot.png-7a1b6ca4069ac0f99c04c2a88c7e4ebd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/cop_walk.png b/graphics/enemy/cop/cop_walk.png new file mode 100644 index 0000000..48f5750 Binary files /dev/null and b/graphics/enemy/cop/cop_walk.png differ diff --git a/graphics/enemy/cop/cop_walk.png.import b/graphics/enemy/cop/cop_walk.png.import new file mode 100644 index 0000000..70f42ea --- /dev/null +++ b/graphics/enemy/cop/cop_walk.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cop_walk.png-e754cdca0ddd2cc2ab634dc56d6f10e3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/cop_walk.png" +dest_files=[ "res://.import/cop_walk.png-e754cdca0ddd2cc2ab634dc56d6f10e3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/scope_idle.png b/graphics/enemy/cop/scope_idle.png new file mode 100644 index 0000000..db98015 Binary files /dev/null and b/graphics/enemy/cop/scope_idle.png differ diff --git a/graphics/enemy/cop/scope_idle.png.import b/graphics/enemy/cop/scope_idle.png.import new file mode 100644 index 0000000..971fc9d --- /dev/null +++ b/graphics/enemy/cop/scope_idle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/scope_idle.png-edfb3b6efbf557231c79afc0b20cdc8d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/scope_idle.png" +dest_files=[ "res://.import/scope_idle.png-edfb3b6efbf557231c79afc0b20cdc8d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/scope_shoot.png b/graphics/enemy/cop/scope_shoot.png new file mode 100644 index 0000000..adca693 Binary files /dev/null and b/graphics/enemy/cop/scope_shoot.png differ diff --git a/graphics/enemy/cop/scope_shoot.png.import b/graphics/enemy/cop/scope_shoot.png.import new file mode 100644 index 0000000..074448c --- /dev/null +++ b/graphics/enemy/cop/scope_shoot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/scope_shoot.png-cb51b66a6fbf90463877cb05556866a7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/scope_shoot.png" +dest_files=[ "res://.import/scope_shoot.png-cb51b66a6fbf90463877cb05556866a7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/scope_walk.png b/graphics/enemy/cop/scope_walk.png new file mode 100644 index 0000000..5f0a09c Binary files /dev/null and b/graphics/enemy/cop/scope_walk.png differ diff --git a/graphics/enemy/cop/scope_walk.png.import b/graphics/enemy/cop/scope_walk.png.import new file mode 100644 index 0000000..fa02cb4 --- /dev/null +++ b/graphics/enemy/cop/scope_walk.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/scope_walk.png-f2c5dbb93e8a856e4d1169d185c92f99.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/scope_walk.png" +dest_files=[ "res://.import/scope_walk.png-f2c5dbb93e8a856e4d1169d185c92f99.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/the_sheriff_idle.png b/graphics/enemy/cop/the_sheriff_idle.png new file mode 100644 index 0000000..322d122 Binary files /dev/null and b/graphics/enemy/cop/the_sheriff_idle.png differ diff --git a/graphics/enemy/cop/the_sheriff_idle.png.import b/graphics/enemy/cop/the_sheriff_idle.png.import new file mode 100644 index 0000000..6d43e04 --- /dev/null +++ b/graphics/enemy/cop/the_sheriff_idle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/the_sheriff_idle.png-014665844bd2f3239eec29a093e13bfe.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/the_sheriff_idle.png" +dest_files=[ "res://.import/the_sheriff_idle.png-014665844bd2f3239eec29a093e13bfe.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/the_sheriff_shoot.png b/graphics/enemy/cop/the_sheriff_shoot.png new file mode 100644 index 0000000..7667542 Binary files /dev/null and b/graphics/enemy/cop/the_sheriff_shoot.png differ diff --git a/graphics/enemy/cop/the_sheriff_shoot.png.import b/graphics/enemy/cop/the_sheriff_shoot.png.import new file mode 100644 index 0000000..fe1d10d --- /dev/null +++ b/graphics/enemy/cop/the_sheriff_shoot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/the_sheriff_shoot.png-3125c06d508cb96e0ad5f5a9a0978451.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/the_sheriff_shoot.png" +dest_files=[ "res://.import/the_sheriff_shoot.png-3125c06d508cb96e0ad5f5a9a0978451.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/the_sheriff_walk.png b/graphics/enemy/cop/the_sheriff_walk.png new file mode 100644 index 0000000..fe8752b Binary files /dev/null and b/graphics/enemy/cop/the_sheriff_walk.png differ diff --git a/graphics/enemy/cop/the_sheriff_walk.png.import b/graphics/enemy/cop/the_sheriff_walk.png.import new file mode 100644 index 0000000..ad5940e --- /dev/null +++ b/graphics/enemy/cop/the_sheriff_walk.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/the_sheriff_walk.png-fd72a685f4b3844bdad9a7201ad253bc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/the_sheriff_walk.png" +dest_files=[ "res://.import/the_sheriff_walk.png-fd72a685f4b3844bdad9a7201ad253bc.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/eel_body.png b/graphics/enemy/eel_body.png new file mode 100644 index 0000000..58588ac Binary files /dev/null and b/graphics/enemy/eel_body.png differ diff --git a/graphics/enemy/eel_body.png.import b/graphics/enemy/eel_body.png.import new file mode 100644 index 0000000..5be4646 --- /dev/null +++ b/graphics/enemy/eel_body.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/eel_body.png-4e2a707966d6656d9260d34aba0d2f9d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/eel_body.png" +dest_files=[ "res://.import/eel_body.png-4e2a707966d6656d9260d34aba0d2f9d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/eel_head.png b/graphics/enemy/eel_head.png new file mode 100644 index 0000000..873037c Binary files /dev/null and b/graphics/enemy/eel_head.png differ diff --git a/graphics/enemy/eel_head.png.import b/graphics/enemy/eel_head.png.import new file mode 100644 index 0000000..f48ab5d --- /dev/null +++ b/graphics/enemy/eel_head.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/eel_head.png-29e1a9b9dd541b3771a77751dd32cb42.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/eel_head.png" +dest_files=[ "res://.import/eel_head.png-29e1a9b9dd541b3771a77751dd32cb42.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/eel_inner_border.png b/graphics/enemy/eel_inner_border.png new file mode 100644 index 0000000..3e33ee3 Binary files /dev/null and b/graphics/enemy/eel_inner_border.png differ diff --git a/graphics/enemy/eel_inner_border.png.import b/graphics/enemy/eel_inner_border.png.import new file mode 100644 index 0000000..c5aab61 --- /dev/null +++ b/graphics/enemy/eel_inner_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/eel_inner_border.png-ba82f5e4214fedd66b04b75d8ca636b6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/eel_inner_border.png" +dest_files=[ "res://.import/eel_inner_border.png-ba82f5e4214fedd66b04b75d8ca636b6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/eel_tail.png b/graphics/enemy/eel_tail.png new file mode 100644 index 0000000..dd08a76 Binary files /dev/null and b/graphics/enemy/eel_tail.png differ diff --git a/graphics/enemy/eel_tail.png.import b/graphics/enemy/eel_tail.png.import new file mode 100644 index 0000000..401b397 --- /dev/null +++ b/graphics/enemy/eel_tail.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/eel_tail.png-359163ddc00e2ac41549552381ce8558.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/eel_tail.png" +dest_files=[ "res://.import/eel_tail.png-359163ddc00e2ac41549552381ce8558.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/explosion.png b/graphics/enemy/explosion.png new file mode 100644 index 0000000..4870a28 Binary files /dev/null and b/graphics/enemy/explosion.png differ diff --git a/graphics/enemy/explosion.png.import b/graphics/enemy/explosion.png.import new file mode 100644 index 0000000..e275fec --- /dev/null +++ b/graphics/enemy/explosion.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/explosion.png-04c26d31be903fe5209fbb88fb2b001b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/explosion.png" +dest_files=[ "res://.import/explosion.png-04c26d31be903fe5209fbb88fb2b001b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/explosion_small.png b/graphics/enemy/explosion_small.png new file mode 100644 index 0000000..6faa8c3 Binary files /dev/null and b/graphics/enemy/explosion_small.png differ diff --git a/graphics/enemy/explosion_small.png.import b/graphics/enemy/explosion_small.png.import new file mode 100644 index 0000000..b8f4f18 --- /dev/null +++ b/graphics/enemy/explosion_small.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/explosion_small.png-ec9dc247e6022a776d8379ea2837dcb6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/explosion_small.png" +dest_files=[ "res://.import/explosion_small.png-ec9dc247e6022a776d8379ea2837dcb6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/fish.png b/graphics/enemy/fish.png new file mode 100644 index 0000000..283bd4b Binary files /dev/null and b/graphics/enemy/fish.png differ diff --git a/graphics/enemy/fish.png.import b/graphics/enemy/fish.png.import new file mode 100644 index 0000000..35bbc3d --- /dev/null +++ b/graphics/enemy/fish.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fish.png-3b834e5fe038dfff40dea010bacb8ae6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/fish.png" +dest_files=[ "res://.import/fish.png-3b834e5fe038dfff40dea010bacb8ae6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/hellarcher_shoot.png b/graphics/enemy/hellarcher_shoot.png new file mode 100644 index 0000000..8cd94b1 Binary files /dev/null and b/graphics/enemy/hellarcher_shoot.png differ diff --git a/graphics/enemy/hellarcher_shoot.png.import b/graphics/enemy/hellarcher_shoot.png.import new file mode 100644 index 0000000..b8b6ab7 --- /dev/null +++ b/graphics/enemy/hellarcher_shoot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hellarcher_shoot.png-65d7de6e316a64bf812ec4d7ecc795ab.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/hellarcher_shoot.png" +dest_files=[ "res://.import/hellarcher_shoot.png-65d7de6e316a64bf812ec4d7ecc795ab.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/jumping_spider.png b/graphics/enemy/jumping_spider.png index 8fab00a..26747cc 100644 Binary files a/graphics/enemy/jumping_spider.png and b/graphics/enemy/jumping_spider.png differ diff --git a/graphics/enemy/laser_wall.png b/graphics/enemy/laser_wall.png new file mode 100644 index 0000000..5c1ac8c Binary files /dev/null and b/graphics/enemy/laser_wall.png differ diff --git a/graphics/enemy/laser_wall.png.import b/graphics/enemy/laser_wall.png.import new file mode 100644 index 0000000..e18afef --- /dev/null +++ b/graphics/enemy/laser_wall.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/laser_wall.png-4fb7af6c3027dd56a2c4a083903f0911.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/laser_wall.png" +dest_files=[ "res://.import/laser_wall.png-4fb7af6c3027dd56a2c4a083903f0911.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/mine.png b/graphics/enemy/mine.png new file mode 100644 index 0000000..ccdd428 Binary files /dev/null and b/graphics/enemy/mine.png differ diff --git a/graphics/enemy/mine.png.import b/graphics/enemy/mine.png.import new file mode 100644 index 0000000..70ce21c --- /dev/null +++ b/graphics/enemy/mine.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mine.png-64fede174f9ce16c1380d86ae4488e55.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/mine.png" +dest_files=[ "res://.import/mine.png-64fede174f9ce16c1380d86ae4488e55.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/slime_purple.png b/graphics/enemy/pal_slime_purple.png similarity index 100% rename from graphics/enemy/slime_purple.png rename to graphics/enemy/pal_slime_purple.png diff --git a/graphics/enemy/pal_slime_purple.png.import b/graphics/enemy/pal_slime_purple.png.import new file mode 100644 index 0000000..53250cf --- /dev/null +++ b/graphics/enemy/pal_slime_purple.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/pal_slime_purple.png-d805a8245be98e61426c73599f2b2190.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/pal_slime_purple.png" +dest_files=[ "res://.import/pal_slime_purple.png-d805a8245be98e61426c73599f2b2190.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/robosnake.png b/graphics/enemy/robosnake.png new file mode 100644 index 0000000..497ad3e Binary files /dev/null and b/graphics/enemy/robosnake.png differ diff --git a/graphics/enemy/robosnake.png.import b/graphics/enemy/robosnake.png.import new file mode 100644 index 0000000..4540efb --- /dev/null +++ b/graphics/enemy/robosnake.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/robosnake.png-9628cd695b11d94f81ee466c12b59d7e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/robosnake.png" +dest_files=[ "res://.import/robosnake.png-9628cd695b11d94f81ee466c12b59d7e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/roboturret.png b/graphics/enemy/roboturret.png new file mode 100644 index 0000000..b557948 Binary files /dev/null and b/graphics/enemy/roboturret.png differ diff --git a/graphics/enemy/roboturret.png.import b/graphics/enemy/roboturret.png.import new file mode 100644 index 0000000..6cfe625 --- /dev/null +++ b/graphics/enemy/roboturret.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/roboturret.png-e07ce7c3906f2fea34c536c816695e97.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/roboturret.png" +dest_files=[ "res://.import/roboturret.png-e07ce7c3906f2fea34c536c816695e97.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/roboturret_projectile.png b/graphics/enemy/roboturret_projectile.png new file mode 100644 index 0000000..6d2c066 Binary files /dev/null and b/graphics/enemy/roboturret_projectile.png differ diff --git a/graphics/enemy/roboturret_projectile.png.import b/graphics/enemy/roboturret_projectile.png.import new file mode 100644 index 0000000..f91009a --- /dev/null +++ b/graphics/enemy/roboturret_projectile.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/roboturret_projectile.png-d7d81b85620cc134b26a04626029ce57.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/roboturret_projectile.png" +dest_files=[ "res://.import/roboturret_projectile.png-d7d81b85620cc134b26a04626029ce57.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/roller_fiend.png b/graphics/enemy/roller_fiend.png deleted file mode 100644 index 5a929ad..0000000 Binary files a/graphics/enemy/roller_fiend.png and /dev/null differ diff --git a/graphics/enemy/roller_fiend.png.import b/graphics/enemy/roller_fiend.png.import deleted file mode 100644 index 22de4d8..0000000 --- a/graphics/enemy/roller_fiend.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/roller_fiend.png-2f4ff517749815b6378d9070bb47d63f.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/enemy/roller_fiend.png" -dest_files=[ "res://.import/roller_fiend.png-2f4ff517749815b6378d9070bb47d63f.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/enemy/roller_fiend_small.png.import b/graphics/enemy/roller_fiend_small.png.import deleted file mode 100644 index 823feea..0000000 --- a/graphics/enemy/roller_fiend_small.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/roller_fiend_small.png-efb72678baec971ddc1e0966a158ebaa.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/enemy/roller_fiend_small.png" -dest_files=[ "res://.import/roller_fiend_small.png-efb72678baec971ddc1e0966a158ebaa.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/enemy/rolling_fiend.png b/graphics/enemy/rolling_fiend.png new file mode 100644 index 0000000..7b5316e Binary files /dev/null and b/graphics/enemy/rolling_fiend.png differ diff --git a/graphics/enemy/rolling_fiend.png.import b/graphics/enemy/rolling_fiend.png.import new file mode 100644 index 0000000..ee468b4 --- /dev/null +++ b/graphics/enemy/rolling_fiend.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/rolling_fiend.png-37d32239fa865317d5d7b0f286feba62.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/rolling_fiend.png" +dest_files=[ "res://.import/rolling_fiend.png-37d32239fa865317d5d7b0f286feba62.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/sawblade.png b/graphics/enemy/sawblade.png new file mode 100644 index 0000000..09c8292 Binary files /dev/null and b/graphics/enemy/sawblade.png differ diff --git a/graphics/enemy/sawblade.png.import b/graphics/enemy/sawblade.png.import new file mode 100644 index 0000000..4478346 --- /dev/null +++ b/graphics/enemy/sawblade.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sawblade.png-119b741e5fae47e2364714ec95e18dd2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/sawblade.png" +dest_files=[ "res://.import/sawblade.png-119b741e5fae47e2364714ec95e18dd2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/skelarcher_duck.png.import b/graphics/enemy/skelarcher_duck.png.import deleted file mode 100644 index cb1a6fe..0000000 --- a/graphics/enemy/skelarcher_duck.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/skelarcher_duck.png-ea842fa5209405d34f5606825e37ff96.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/enemy/skelarcher_duck.png" -dest_files=[ "res://.import/skelarcher_duck.png-ea842fa5209405d34f5606825e37ff96.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/enemy/skelarcher_idle.png b/graphics/enemy/skelarcher_idle.png deleted file mode 100644 index d7957ea..0000000 Binary files a/graphics/enemy/skelarcher_idle.png and /dev/null differ diff --git a/graphics/enemy/skelarcher_shoot.png b/graphics/enemy/skelarcher_shoot.png index 4426a65..d975d09 100644 Binary files a/graphics/enemy/skelarcher_shoot.png and b/graphics/enemy/skelarcher_shoot.png differ diff --git a/graphics/enemy/slime_blue.png b/graphics/enemy/slime_blue.png deleted file mode 100644 index 4bdb1ba..0000000 Binary files a/graphics/enemy/slime_blue.png and /dev/null differ diff --git a/graphics/enemy/slime_blue.png.import b/graphics/enemy/slime_blue.png.import deleted file mode 100644 index a010165..0000000 --- a/graphics/enemy/slime_blue.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/slime_blue.png-08b8c9d415101018014b3150d00f766f.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/enemy/slime_blue.png" -dest_files=[ "res://.import/slime_blue.png-08b8c9d415101018014b3150d00f766f.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/enemy/slime_green.png b/graphics/enemy/slime_green.png deleted file mode 100644 index 39928d2..0000000 Binary files a/graphics/enemy/slime_green.png and /dev/null differ diff --git a/graphics/enemy/slime_green.png.import b/graphics/enemy/slime_green.png.import deleted file mode 100644 index cd9ee90..0000000 --- a/graphics/enemy/slime_green.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/slime_green.png-9784384e610afbd1660a5f91be577d8f.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/enemy/slime_green.png" -dest_files=[ "res://.import/slime_green.png-9784384e610afbd1660a5f91be577d8f.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/enemy/slime_purple.png.import b/graphics/enemy/slime_purple.png.import deleted file mode 100644 index 90475d6..0000000 --- a/graphics/enemy/slime_purple.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/slime_purple.png-2e24557adf5bdd2777a17906d3867cf5.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/enemy/slime_purple.png" -dest_files=[ "res://.import/slime_purple.png-2e24557adf5bdd2777a17906d3867cf5.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/enemy/snail.png b/graphics/enemy/snail.png index 5505e20..6bfe69a 100644 Binary files a/graphics/enemy/snail.png and b/graphics/enemy/snail.png differ diff --git a/graphics/enemy/snake.png b/graphics/enemy/snake.png index b0a124d..051ad8e 100644 Binary files a/graphics/enemy/snake.png and b/graphics/enemy/snake.png differ diff --git a/graphics/enemy/squig.png b/graphics/enemy/squig.png new file mode 100644 index 0000000..00ada40 Binary files /dev/null and b/graphics/enemy/squig.png differ diff --git a/graphics/enemy/squig.png.import b/graphics/enemy/squig.png.import new file mode 100644 index 0000000..faf61b4 --- /dev/null +++ b/graphics/enemy/squig.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/squig.png-17d636ce34898af05744f4145669e9ed.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/squig.png" +dest_files=[ "res://.import/squig.png-17d636ce34898af05744f4145669e9ed.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/stg_bullet.png b/graphics/enemy/stg_bullet.png new file mode 100644 index 0000000..0d77065 Binary files /dev/null and b/graphics/enemy/stg_bullet.png differ diff --git a/graphics/enemy/stg_bullet.png.import b/graphics/enemy/stg_bullet.png.import new file mode 100644 index 0000000..d230970 --- /dev/null +++ b/graphics/enemy/stg_bullet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stg_bullet.png-3ab70a711eb012e51f77e11932f8bd02.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/stg_bullet.png" +dest_files=[ "res://.import/stg_bullet.png-3ab70a711eb012e51f77e11932f8bd02.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/tin.png b/graphics/enemy/tin.png new file mode 100644 index 0000000..a9ba19c Binary files /dev/null and b/graphics/enemy/tin.png differ diff --git a/graphics/enemy/tin.png.import b/graphics/enemy/tin.png.import new file mode 100644 index 0000000..4f33a40 --- /dev/null +++ b/graphics/enemy/tin.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tin.png-5d733ddd1f13d5cb9a4546391a220dfb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/tin.png" +dest_files=[ "res://.import/tin.png-5d733ddd1f13d5cb9a4546391a220dfb.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/tin_eye.png b/graphics/enemy/tin_eye.png new file mode 100644 index 0000000..2e8acd6 Binary files /dev/null and b/graphics/enemy/tin_eye.png differ diff --git a/graphics/enemy/tin_eye.png.import b/graphics/enemy/tin_eye.png.import new file mode 100644 index 0000000..995c231 --- /dev/null +++ b/graphics/enemy/tin_eye.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tin_eye.png-dd282f2fe6b907439d8561e8a420df07.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/tin_eye.png" +dest_files=[ "res://.import/tin_eye.png-dd282f2fe6b907439d8561e8a420df07.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/turtle.png b/graphics/enemy/turtle.png new file mode 100644 index 0000000..ad4dc39 Binary files /dev/null and b/graphics/enemy/turtle.png differ diff --git a/graphics/enemy/turtle.png.import b/graphics/enemy/turtle.png.import new file mode 100644 index 0000000..4564080 --- /dev/null +++ b/graphics/enemy/turtle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turtle.png-7f0700b33935e20aa7dac9deef68652e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/turtle.png" +dest_files=[ "res://.import/turtle.png-7f0700b33935e20aa7dac9deef68652e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/exit/exit.png b/graphics/exit/exit.png index 5974678..53c0b91 100644 Binary files a/graphics/exit/exit.png and b/graphics/exit/exit.png differ diff --git a/graphics/exit/exit_back.png b/graphics/exit/exit_back.png new file mode 100644 index 0000000..2680d36 Binary files /dev/null and b/graphics/exit/exit_back.png differ diff --git a/graphics/exit/exit_back.png.import b/graphics/exit/exit_back.png.import new file mode 100644 index 0000000..6fc7734 --- /dev/null +++ b/graphics/exit/exit_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/exit_back.png-cd39ec899573a453a62e1f55eaf2a249.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/exit/exit_back.png" +dest_files=[ "res://.import/exit_back.png-cd39ec899573a453a62e1f55eaf2a249.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/fade_patterns/diamonds.png b/graphics/fade_patterns/diamonds.png new file mode 100644 index 0000000..c7fed7a Binary files /dev/null and b/graphics/fade_patterns/diamonds.png differ diff --git a/graphics/fade_patterns/diamonds.png.import b/graphics/fade_patterns/diamonds.png.import new file mode 100644 index 0000000..ea84281 --- /dev/null +++ b/graphics/fade_patterns/diamonds.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/diamonds.png-1b6afccd789d89c964ce5cbd8de4f0ae.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/fade_patterns/diamonds.png" +dest_files=[ "res://.import/diamonds.png-1b6afccd789d89c964ce5cbd8de4f0ae.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/fade_patterns/diamonds2.png b/graphics/fade_patterns/diamonds2.png new file mode 100644 index 0000000..07c0dd9 Binary files /dev/null and b/graphics/fade_patterns/diamonds2.png differ diff --git a/graphics/fade_patterns/diamonds2.png.import b/graphics/fade_patterns/diamonds2.png.import new file mode 100644 index 0000000..a7a66ed --- /dev/null +++ b/graphics/fade_patterns/diamonds2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/diamonds2.png-6384575a151993f4e1e5204bb9fa7ccd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/fade_patterns/diamonds2.png" +dest_files=[ "res://.import/diamonds2.png-6384575a151993f4e1e5204bb9fa7ccd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/fade_patterns/spiral.png b/graphics/fade_patterns/spiral.png new file mode 100644 index 0000000..e56fb5e Binary files /dev/null and b/graphics/fade_patterns/spiral.png differ diff --git a/graphics/fade_patterns/spiral.png.import b/graphics/fade_patterns/spiral.png.import new file mode 100644 index 0000000..b1af641 --- /dev/null +++ b/graphics/fade_patterns/spiral.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/spiral.png-0cc8af891fa9e8064a38fe7b4ba16e11.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/fade_patterns/spiral.png" +dest_files=[ "res://.import/spiral.png-0cc8af891fa9e8064a38fe7b4ba16e11.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/fade_patterns/squares.png b/graphics/fade_patterns/squares.png new file mode 100644 index 0000000..2253fe5 Binary files /dev/null and b/graphics/fade_patterns/squares.png differ diff --git a/graphics/fade_patterns/squares.png.import b/graphics/fade_patterns/squares.png.import new file mode 100644 index 0000000..8827618 --- /dev/null +++ b/graphics/fade_patterns/squares.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/squares.png-9179c9007a057ecbe55c2a166ac31c9c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/fade_patterns/squares.png" +dest_files=[ "res://.import/squares.png-9179c9007a057ecbe55c2a166ac31c9c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/fade_patterns/squarescascade.png b/graphics/fade_patterns/squarescascade.png new file mode 100644 index 0000000..8b8067e Binary files /dev/null and b/graphics/fade_patterns/squarescascade.png differ diff --git a/graphics/fade_patterns/squarescascade.png.import b/graphics/fade_patterns/squarescascade.png.import new file mode 100644 index 0000000..97c0d82 --- /dev/null +++ b/graphics/fade_patterns/squarescascade.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/squarescascade.png-03b9f723f6548e48efaf22430cfd4855.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/fade_patterns/squarescascade.png" +dest_files=[ "res://.import/squarescascade.png-03b9f723f6548e48efaf22430cfd4855.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/fade_patterns/stg_explosion.png b/graphics/fade_patterns/stg_explosion.png new file mode 100644 index 0000000..2f01069 Binary files /dev/null and b/graphics/fade_patterns/stg_explosion.png differ diff --git a/graphics/fade_patterns/stg_explosion.png.import b/graphics/fade_patterns/stg_explosion.png.import new file mode 100644 index 0000000..c5c9f14 --- /dev/null +++ b/graphics/fade_patterns/stg_explosion.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stg_explosion.png-598b3ffe756e54c024ac9b9212bc795c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/fade_patterns/stg_explosion.png" +dest_files=[ "res://.import/stg_explosion.png-598b3ffe756e54c024ac9b9212bc795c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/falling_block/falling_block_cave.png b/graphics/falling_block/falling_block_cave.png index a74c260..b359269 100644 Binary files a/graphics/falling_block/falling_block_cave.png and b/graphics/falling_block/falling_block_cave.png differ diff --git a/graphics/falling_block/falling_block_lab.png b/graphics/falling_block/falling_block_lab.png new file mode 100644 index 0000000..83da745 Binary files /dev/null and b/graphics/falling_block/falling_block_lab.png differ diff --git a/graphics/falling_block/falling_block_lab.png.import b/graphics/falling_block/falling_block_lab.png.import new file mode 100644 index 0000000..8666b06 --- /dev/null +++ b/graphics/falling_block/falling_block_lab.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/falling_block_lab.png-6ebf33dbe45acfe91ee6786039182d5d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/falling_block/falling_block_lab.png" +dest_files=[ "res://.import/falling_block_lab.png-6ebf33dbe45acfe91ee6786039182d5d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/falling_block/woeful_soul.png b/graphics/falling_block/woeful_soul.png new file mode 100644 index 0000000..4ee9813 Binary files /dev/null and b/graphics/falling_block/woeful_soul.png differ diff --git a/graphics/falling_block/woeful_soul.png.import b/graphics/falling_block/woeful_soul.png.import new file mode 100644 index 0000000..fde01eb --- /dev/null +++ b/graphics/falling_block/woeful_soul.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/woeful_soul.png-965187965bd4c63511479b4beca52f66.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/falling_block/woeful_soul.png" +dest_files=[ "res://.import/woeful_soul.png-965187965bd4c63511479b4beca52f66.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/graffiti/msx.png b/graphics/graffiti/msx.png new file mode 100644 index 0000000..09feec8 Binary files /dev/null and b/graphics/graffiti/msx.png differ diff --git a/graphics/graffiti/msx.png.import b/graphics/graffiti/msx.png.import new file mode 100644 index 0000000..1128f0a --- /dev/null +++ b/graphics/graffiti/msx.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx.png-048931302361c46e2dea865ea468e7ee.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/graffiti/msx.png" +dest_files=[ "res://.import/msx.png-048931302361c46e2dea865ea468e7ee.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/graffiti/msx_was_here.png b/graphics/graffiti/msx_was_here.png new file mode 100644 index 0000000..2554723 Binary files /dev/null and b/graphics/graffiti/msx_was_here.png differ diff --git a/graphics/graffiti/msx_was_here.png.import b/graphics/graffiti/msx_was_here.png.import new file mode 100644 index 0000000..ad73f48 --- /dev/null +++ b/graphics/graffiti/msx_was_here.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_was_here.png-32f1e7652867d3f31f30cfec2a95d8c1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/graffiti/msx_was_here.png" +dest_files=[ "res://.import/msx_was_here.png-32f1e7652867d3f31f30cfec2a95d8c1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/graffiti/tgirls_rule.png b/graphics/graffiti/tgirls_rule.png new file mode 100644 index 0000000..23cd428 Binary files /dev/null and b/graphics/graffiti/tgirls_rule.png differ diff --git a/graphics/graffiti/tgirls_rule.png.import b/graphics/graffiti/tgirls_rule.png.import new file mode 100644 index 0000000..f7facc3 --- /dev/null +++ b/graphics/graffiti/tgirls_rule.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tgirls_rule.png-950e00f23b61559d8aebd3aad7c0ee33.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/graffiti/tgirls_rule.png" +dest_files=[ "res://.import/tgirls_rule.png-950e00f23b61559d8aebd3aad7c0ee33.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hatch/hatch.png b/graphics/hatch/hatch.png new file mode 100644 index 0000000..7fe68f6 Binary files /dev/null and b/graphics/hatch/hatch.png differ diff --git a/graphics/hatch/hatch.png.import b/graphics/hatch/hatch.png.import new file mode 100644 index 0000000..e3cf96f --- /dev/null +++ b/graphics/hatch/hatch.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hatch.png-e12a4a7b9a8d86a05e31be49a9422eca.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hatch/hatch.png" +dest_files=[ "res://.import/hatch.png-e12a4a7b9a8d86a05e31be49a9422eca.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/2083_energy_back.png b/graphics/hud/2083_energy_back.png new file mode 100644 index 0000000..7d44221 Binary files /dev/null and b/graphics/hud/2083_energy_back.png differ diff --git a/graphics/hud/2083_energy_back.png.import b/graphics/hud/2083_energy_back.png.import new file mode 100644 index 0000000..f7ad9c2 --- /dev/null +++ b/graphics/hud/2083_energy_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2083_energy_back.png-11dd98a9d72b54c8260155992faf6158.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/2083_energy_back.png" +dest_files=[ "res://.import/2083_energy_back.png-11dd98a9d72b54c8260155992faf6158.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/2083_energy_filled.png b/graphics/hud/2083_energy_filled.png new file mode 100644 index 0000000..95f1101 Binary files /dev/null and b/graphics/hud/2083_energy_filled.png differ diff --git a/graphics/hud/2083_energy_filled.png.import b/graphics/hud/2083_energy_filled.png.import new file mode 100644 index 0000000..f40b60e --- /dev/null +++ b/graphics/hud/2083_energy_filled.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2083_energy_filled.png-33bce25982854ea73e3364035f2d3a2b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/2083_energy_filled.png" +dest_files=[ "res://.import/2083_energy_filled.png-33bce25982854ea73e3364035f2d3a2b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/2083_health_back.png b/graphics/hud/2083_health_back.png new file mode 100644 index 0000000..7222ec1 Binary files /dev/null and b/graphics/hud/2083_health_back.png differ diff --git a/graphics/hud/2083_health_back.png.import b/graphics/hud/2083_health_back.png.import new file mode 100644 index 0000000..c308a09 --- /dev/null +++ b/graphics/hud/2083_health_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2083_health_back.png-5fcc5a99e8ed1532568696eb69fd0d43.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/2083_health_back.png" +dest_files=[ "res://.import/2083_health_back.png-5fcc5a99e8ed1532568696eb69fd0d43.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/2083_health_filled.png b/graphics/hud/2083_health_filled.png new file mode 100644 index 0000000..6e00191 Binary files /dev/null and b/graphics/hud/2083_health_filled.png differ diff --git a/graphics/hud/2083_health_filled.png.import b/graphics/hud/2083_health_filled.png.import new file mode 100644 index 0000000..ca86966 --- /dev/null +++ b/graphics/hud/2083_health_filled.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2083_health_filled.png-44b40a17a023454bbb8170346f74b17f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/2083_health_filled.png" +dest_files=[ "res://.import/2083_health_filled.png-44b40a17a023454bbb8170346f74b17f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/arrow_down.png b/graphics/hud/arrow_down.png new file mode 100644 index 0000000..b077880 Binary files /dev/null and b/graphics/hud/arrow_down.png differ diff --git a/graphics/hud/arrow_down.png.import b/graphics/hud/arrow_down.png.import new file mode 100644 index 0000000..147e2b1 --- /dev/null +++ b/graphics/hud/arrow_down.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow_down.png-476089e36c213673a0f11adb99cc0724.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/arrow_down.png" +dest_files=[ "res://.import/arrow_down.png-476089e36c213673a0f11adb99cc0724.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/arrow_up.png b/graphics/hud/arrow_up.png new file mode 100644 index 0000000..795cca0 Binary files /dev/null and b/graphics/hud/arrow_up.png differ diff --git a/graphics/hud/arrow_up.png.import b/graphics/hud/arrow_up.png.import new file mode 100644 index 0000000..b303c7a --- /dev/null +++ b/graphics/hud/arrow_up.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow_up.png-afb605e867089f8aedd83a8cc3ba6369.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/arrow_up.png" +dest_files=[ "res://.import/arrow_up.png-afb605e867089f8aedd83a8cc3ba6369.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/back.png b/graphics/hud/back.png new file mode 100644 index 0000000..67dc879 Binary files /dev/null and b/graphics/hud/back.png differ diff --git a/graphics/hud/back.png.import b/graphics/hud/back.png.import new file mode 100644 index 0000000..53429b6 --- /dev/null +++ b/graphics/hud/back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/back.png-af9fa24ee27e034b2c861ccb4762fa95.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/back.png" +dest_files=[ "res://.import/back.png-af9fa24ee27e034b2c861ccb4762fa95.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/back_dim.png b/graphics/hud/back_dim.png new file mode 100644 index 0000000..eee8d27 Binary files /dev/null and b/graphics/hud/back_dim.png differ diff --git a/graphics/hud/back_dim.png.import b/graphics/hud/back_dim.png.import new file mode 100644 index 0000000..3e2d3c8 --- /dev/null +++ b/graphics/hud/back_dim.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/back_dim.png-9b702d592d23c89eb848d819a2b0a7cb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/back_dim.png" +dest_files=[ "res://.import/back_dim.png-9b702d592d23c89eb848d819a2b0a7cb.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/boss_health_back.png b/graphics/hud/boss_health_back.png new file mode 100644 index 0000000..46218a7 Binary files /dev/null and b/graphics/hud/boss_health_back.png differ diff --git a/graphics/hud/boss_health_back.png.import b/graphics/hud/boss_health_back.png.import new file mode 100644 index 0000000..4523486 --- /dev/null +++ b/graphics/hud/boss_health_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/boss_health_back.png-c5ec975a0abf1a1c0a45705fcc5f82b7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/boss_health_back.png" +dest_files=[ "res://.import/boss_health_back.png-c5ec975a0abf1a1c0a45705fcc5f82b7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/coin_counter.png.import b/graphics/hud/coin_counter.png.import new file mode 100644 index 0000000..c625aa6 --- /dev/null +++ b/graphics/hud/coin_counter.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/coin_counter.png-888d3029a846d3da4a291c7e27b8e0a7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/coin_counter.png" +dest_files=[ "res://.import/coin_counter.png-888d3029a846d3da4a291c7e27b8e0a7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/collection_bonus.png b/graphics/hud/collection_bonus.png new file mode 100644 index 0000000..343767d Binary files /dev/null and b/graphics/hud/collection_bonus.png differ diff --git a/graphics/hud/collection_bonus.png.import b/graphics/hud/collection_bonus.png.import new file mode 100644 index 0000000..577f988 --- /dev/null +++ b/graphics/hud/collection_bonus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/collection_bonus.png-c0498f7550478bc8b1614afa3fdb3e89.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/collection_bonus.png" +dest_files=[ "res://.import/collection_bonus.png-c0498f7550478bc8b1614afa3fdb3e89.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/deaths_head.png b/graphics/hud/deaths_head.png new file mode 100644 index 0000000..5570267 Binary files /dev/null and b/graphics/hud/deaths_head.png differ diff --git a/graphics/hud/deaths_head.png.import b/graphics/hud/deaths_head.png.import new file mode 100644 index 0000000..3a303ff --- /dev/null +++ b/graphics/hud/deaths_head.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/deaths_head.png-8207d14882a026c4638e68f6f058ba2f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/deaths_head.png" +dest_files=[ "res://.import/deaths_head.png-8207d14882a026c4638e68f6f058ba2f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/delete.png b/graphics/hud/delete.png new file mode 100644 index 0000000..4029e0f Binary files /dev/null and b/graphics/hud/delete.png differ diff --git a/graphics/hud/delete.png.import b/graphics/hud/delete.png.import new file mode 100644 index 0000000..6c1e3df --- /dev/null +++ b/graphics/hud/delete.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/delete.png-9117bf6c631defbca88858287a9f5ad3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/delete.png" +dest_files=[ "res://.import/delete.png-9117bf6c631defbca88858287a9f5ad3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/delete_dim.png b/graphics/hud/delete_dim.png new file mode 100644 index 0000000..3771d8e Binary files /dev/null and b/graphics/hud/delete_dim.png differ diff --git a/graphics/hud/delete_dim.png.import b/graphics/hud/delete_dim.png.import new file mode 100644 index 0000000..2e0219e --- /dev/null +++ b/graphics/hud/delete_dim.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/delete_dim.png-0fe030b64fef9e199335b59b8477cc54.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/delete_dim.png" +dest_files=[ "res://.import/delete_dim.png-0fe030b64fef9e199335b59b8477cc54.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/down_prompt.png b/graphics/hud/down_prompt.png new file mode 100644 index 0000000..a22a3d2 Binary files /dev/null and b/graphics/hud/down_prompt.png differ diff --git a/graphics/hud/down_prompt.png.import b/graphics/hud/down_prompt.png.import new file mode 100644 index 0000000..c568451 --- /dev/null +++ b/graphics/hud/down_prompt.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/down_prompt.png-89717297e979e201fddd0a1efbfcafb6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/down_prompt.png" +dest_files=[ "res://.import/down_prompt.png-89717297e979e201fddd0a1efbfcafb6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/famira_health_back.png b/graphics/hud/famira_health_back.png new file mode 100644 index 0000000..a3c9a9c Binary files /dev/null and b/graphics/hud/famira_health_back.png differ diff --git a/graphics/hud/famira_health_back.png.import b/graphics/hud/famira_health_back.png.import new file mode 100644 index 0000000..58ff57d --- /dev/null +++ b/graphics/hud/famira_health_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_health_back.png-e56d7b671e52edb71218a9a73df2de68.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/famira_health_back.png" +dest_files=[ "res://.import/famira_health_back.png-e56d7b671e52edb71218a9a73df2de68.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/famira_health_bar.png b/graphics/hud/famira_health_bar.png new file mode 100644 index 0000000..a6e3946 Binary files /dev/null and b/graphics/hud/famira_health_bar.png differ diff --git a/graphics/hud/famira_health_bar.png.import b/graphics/hud/famira_health_bar.png.import new file mode 100644 index 0000000..e9a001b --- /dev/null +++ b/graphics/hud/famira_health_bar.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_health_bar.png-063ac979690728319544ff2981510039.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/famira_health_bar.png" +dest_files=[ "res://.import/famira_health_bar.png-063ac979690728319544ff2981510039.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/famira_health_bar_filled.png.import b/graphics/hud/famira_health_bar_filled.png.import new file mode 100644 index 0000000..3bf8b7c --- /dev/null +++ b/graphics/hud/famira_health_bar_filled.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_health_bar_filled.png-b876077097f24cd200f1d2d915a33255.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/famira_health_bar_filled.png" +dest_files=[ "res://.import/famira_health_bar_filled.png-b876077097f24cd200f1d2d915a33255.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/famira_health_filled.png b/graphics/hud/famira_health_filled.png new file mode 100644 index 0000000..db1fc92 Binary files /dev/null and b/graphics/hud/famira_health_filled.png differ diff --git a/graphics/hud/famira_health_filled.png.import b/graphics/hud/famira_health_filled.png.import new file mode 100644 index 0000000..0ffe6c6 --- /dev/null +++ b/graphics/hud/famira_health_filled.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_health_filled.png-a06f76ad0a946df51e9ccad3452b0465.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/famira_health_filled.png" +dest_files=[ "res://.import/famira_health_filled.png-a06f76ad0a946df51e9ccad3452b0465.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/file_select_arrow.png b/graphics/hud/file_select_arrow.png new file mode 100644 index 0000000..111ffcc Binary files /dev/null and b/graphics/hud/file_select_arrow.png differ diff --git a/graphics/hud/file_select_arrow.png.import b/graphics/hud/file_select_arrow.png.import new file mode 100644 index 0000000..b9569fd --- /dev/null +++ b/graphics/hud/file_select_arrow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/file_select_arrow.png-c4dd38af48f940ca232cee7aab98deca.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/file_select_arrow.png" +dest_files=[ "res://.import/file_select_arrow.png-c4dd38af48f940ca232cee7aab98deca.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/final_score.png b/graphics/hud/final_score.png new file mode 100644 index 0000000..8d90201 Binary files /dev/null and b/graphics/hud/final_score.png differ diff --git a/graphics/hud/final_score.png.import b/graphics/hud/final_score.png.import new file mode 100644 index 0000000..7b4dcbc --- /dev/null +++ b/graphics/hud/final_score.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/final_score.png-fb476d39fc42e0aa87fe7b2a0ad829cc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/final_score.png" +dest_files=[ "res://.import/final_score.png-fb476d39fc42e0aa87fe7b2a0ad829cc.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/game_staff.png b/graphics/hud/game_staff.png new file mode 100644 index 0000000..0a75c9f Binary files /dev/null and b/graphics/hud/game_staff.png differ diff --git a/graphics/hud/game_staff.png.import b/graphics/hud/game_staff.png.import new file mode 100644 index 0000000..c2d57db --- /dev/null +++ b/graphics/hud/game_staff.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/game_staff.png-9b292cd6ee053785af7dfc5839c49ecc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/game_staff.png" +dest_files=[ "res://.import/game_staff.png-9b292cd6ee053785af7dfc5839c49ecc.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/gamepad_buttons.png b/graphics/hud/gamepad_buttons.png new file mode 100644 index 0000000..703f78c Binary files /dev/null and b/graphics/hud/gamepad_buttons.png differ diff --git a/graphics/hud/gamepad_buttons.png.import b/graphics/hud/gamepad_buttons.png.import new file mode 100644 index 0000000..3ca0780 --- /dev/null +++ b/graphics/hud/gamepad_buttons.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gamepad_buttons.png-2be301e9c2e67e54b73d3d64156de301.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/gamepad_buttons.png" +dest_files=[ "res://.import/gamepad_buttons.png-2be301e9c2e67e54b73d3d64156de301.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/godot_splash.png b/graphics/hud/godot_splash.png new file mode 100644 index 0000000..963a9df Binary files /dev/null and b/graphics/hud/godot_splash.png differ diff --git a/graphics/hud/godot_splash.png.import b/graphics/hud/godot_splash.png.import new file mode 100644 index 0000000..4d61550 --- /dev/null +++ b/graphics/hud/godot_splash.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/godot_splash.png-5d8819d8c94270b9158234d3ebb5bf62.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/godot_splash.png" +dest_files=[ "res://.import/godot_splash.png-5d8819d8c94270b9158234d3ebb5bf62.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/gold_counter.png b/graphics/hud/gold_counter.png new file mode 100644 index 0000000..5cf10a4 Binary files /dev/null and b/graphics/hud/gold_counter.png differ diff --git a/graphics/hud/gold_counter.png.import b/graphics/hud/gold_counter.png.import new file mode 100644 index 0000000..92dbdd7 --- /dev/null +++ b/graphics/hud/gold_counter.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gold_counter.png-2022a2cb58f1c48c8ab57aedbb553592.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/gold_counter.png" +dest_files=[ "res://.import/gold_counter.png-2022a2cb58f1c48c8ab57aedbb553592.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/high_score.png b/graphics/hud/high_score.png new file mode 100644 index 0000000..908a3d7 Binary files /dev/null and b/graphics/hud/high_score.png differ diff --git a/graphics/hud/high_score.png.import b/graphics/hud/high_score.png.import new file mode 100644 index 0000000..23b4081 --- /dev/null +++ b/graphics/hud/high_score.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/high_score.png-02ca81bb7439e75fa559a1c0a399afc3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/high_score.png" +dest_files=[ "res://.import/high_score.png-02ca81bb7439e75fa559a1c0a399afc3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/hslider_grabber.png b/graphics/hud/hslider_grabber.png new file mode 100644 index 0000000..feefd58 Binary files /dev/null and b/graphics/hud/hslider_grabber.png differ diff --git a/graphics/hud/hslider_grabber.png.import b/graphics/hud/hslider_grabber.png.import new file mode 100644 index 0000000..d67472d --- /dev/null +++ b/graphics/hud/hslider_grabber.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hslider_grabber.png-c706e239e429c74f08afcd7244f24e5e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/hslider_grabber.png" +dest_files=[ "res://.import/hslider_grabber.png-c706e239e429c74f08afcd7244f24e5e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/hslider_grabber_focused.png b/graphics/hud/hslider_grabber_focused.png new file mode 100644 index 0000000..b0f5270 Binary files /dev/null and b/graphics/hud/hslider_grabber_focused.png differ diff --git a/graphics/hud/hslider_grabber_focused.png.import b/graphics/hud/hslider_grabber_focused.png.import new file mode 100644 index 0000000..0f7fb70 --- /dev/null +++ b/graphics/hud/hslider_grabber_focused.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hslider_grabber_focused.png-48312a8e36afc2eacf49d5c4ba2472b9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/hslider_grabber_focused.png" +dest_files=[ "res://.import/hslider_grabber_focused.png-48312a8e36afc2eacf49d5c4ba2472b9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/hslider_slider.png b/graphics/hud/hslider_slider.png new file mode 100644 index 0000000..d7a4adc Binary files /dev/null and b/graphics/hud/hslider_slider.png differ diff --git a/graphics/hud/hslider_slider.png.import b/graphics/hud/hslider_slider.png.import new file mode 100644 index 0000000..59d106a --- /dev/null +++ b/graphics/hud/hslider_slider.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hslider_slider.png-fb09b533480611aefefa9fcda43d6545.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/hslider_slider.png" +dest_files=[ "res://.import/hslider_slider.png-fb09b533480611aefefa9fcda43d6545.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/hud.png b/graphics/hud/hud.png index c476c60..5b18871 100644 Binary files a/graphics/hud/hud.png and b/graphics/hud/hud.png differ diff --git a/graphics/hud/hud_arrow.png b/graphics/hud/hud_arrow.png new file mode 100644 index 0000000..2003e91 Binary files /dev/null and b/graphics/hud/hud_arrow.png differ diff --git a/graphics/hud/hud_arrow.png.import b/graphics/hud/hud_arrow.png.import new file mode 100644 index 0000000..b551078 --- /dev/null +++ b/graphics/hud/hud_arrow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hud_arrow.png-41c44a240363dedbd3291d11e50b15f7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/hud_arrow.png" +dest_files=[ "res://.import/hud_arrow.png-41c44a240363dedbd3291d11e50b15f7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/hud_old.png b/graphics/hud/hud_old.png deleted file mode 100644 index 74192a2..0000000 Binary files a/graphics/hud/hud_old.png and /dev/null differ diff --git a/graphics/hud/hud_old.png.import b/graphics/hud/hud_old.png.import deleted file mode 100644 index d689cbe..0000000 --- a/graphics/hud/hud_old.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/hud_old.png-375dbe46e18dedab40b4fcb3c0bcf043.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/hud/hud_old.png" -dest_files=[ "res://.import/hud_old.png-375dbe46e18dedab40b4fcb3c0bcf043.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/hud/key_counter.png b/graphics/hud/key_counter.png new file mode 100644 index 0000000..b05b908 Binary files /dev/null and b/graphics/hud/key_counter.png differ diff --git a/graphics/hud/key_counter.png.import b/graphics/hud/key_counter.png.import new file mode 100644 index 0000000..c2e1e59 --- /dev/null +++ b/graphics/hud/key_counter.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/key_counter.png-da2d7c7bd7de08c5ebbb97a7c4ceb9dd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/key_counter.png" +dest_files=[ "res://.import/key_counter.png-da2d7c7bd7de08c5ebbb97a7c4ceb9dd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/killmode_skull.png b/graphics/hud/killmode_skull.png new file mode 100644 index 0000000..f66be54 Binary files /dev/null and b/graphics/hud/killmode_skull.png differ diff --git a/graphics/hud/killmode_skull.png.import b/graphics/hud/killmode_skull.png.import new file mode 100644 index 0000000..70b0f95 --- /dev/null +++ b/graphics/hud/killmode_skull.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/killmode_skull.png-b04f545789948a183bd39a46c229e29a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/killmode_skull.png" +dest_files=[ "res://.import/killmode_skull.png-b04f545789948a183bd39a46c229e29a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/laser_ok.png b/graphics/hud/laser_ok.png new file mode 100644 index 0000000..59273b9 Binary files /dev/null and b/graphics/hud/laser_ok.png differ diff --git a/graphics/hud/laser_ok.png.import b/graphics/hud/laser_ok.png.import new file mode 100644 index 0000000..7e74a1b --- /dev/null +++ b/graphics/hud/laser_ok.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/laser_ok.png-126e4d7df435412bb6a8cf636d6c3b24.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/laser_ok.png" +dest_files=[ "res://.import/laser_ok.png-126e4d7df435412bb6a8cf636d6c3b24.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/laser_ok_text.png b/graphics/hud/laser_ok_text.png new file mode 100644 index 0000000..f085abe Binary files /dev/null and b/graphics/hud/laser_ok_text.png differ diff --git a/graphics/hud/laser_ok_text.png.import b/graphics/hud/laser_ok_text.png.import new file mode 100644 index 0000000..c4193ea --- /dev/null +++ b/graphics/hud/laser_ok_text.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/laser_ok_text.png-d6af5ac9f51f62aab017a6b2e8ec549a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/laser_ok_text.png" +dest_files=[ "res://.import/laser_ok_text.png-d6af5ac9f51f62aab017a6b2e8ec549a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/letter_blocks.png b/graphics/hud/letter_blocks.png new file mode 100644 index 0000000..6d4ab15 Binary files /dev/null and b/graphics/hud/letter_blocks.png differ diff --git a/graphics/hud/letter_blocks.png.import b/graphics/hud/letter_blocks.png.import new file mode 100644 index 0000000..f8b9d43 --- /dev/null +++ b/graphics/hud/letter_blocks.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/letter_blocks.png-b999452f443d17ac8d79aa4caf470f5a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/letter_blocks.png" +dest_files=[ "res://.import/letter_blocks.png-b999452f443d17ac8d79aa4caf470f5a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/levelselect_arrow.png b/graphics/hud/levelselect_arrow.png index e151ead..661237e 100644 Binary files a/graphics/hud/levelselect_arrow.png and b/graphics/hud/levelselect_arrow.png differ diff --git a/graphics/hud/life_bonus.png b/graphics/hud/life_bonus.png new file mode 100644 index 0000000..b1ca23e Binary files /dev/null and b/graphics/hud/life_bonus.png differ diff --git a/graphics/hud/life_bonus.png.import b/graphics/hud/life_bonus.png.import new file mode 100644 index 0000000..5c3c8c0 --- /dev/null +++ b/graphics/hud/life_bonus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/life_bonus.png-0f9d1521de3f08e08ca6e0b90e3ef8d2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/life_bonus.png" +dest_files=[ "res://.import/life_bonus.png-0f9d1521de3f08e08ca6e0b90e3ef8d2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/listen_to_the_future.png b/graphics/hud/listen_to_the_future.png new file mode 100644 index 0000000..37d93f5 Binary files /dev/null and b/graphics/hud/listen_to_the_future.png differ diff --git a/graphics/hud/listen_to_the_future.png.import b/graphics/hud/listen_to_the_future.png.import new file mode 100644 index 0000000..900063c --- /dev/null +++ b/graphics/hud/listen_to_the_future.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/listen_to_the_future.png-18afd75ae8025c1763d363989bb142bd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/listen_to_the_future.png" +dest_files=[ "res://.import/listen_to_the_future.png-18afd75ae8025c1763d363989bb142bd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/lives_head.png b/graphics/hud/lives_head.png new file mode 100644 index 0000000..ad20671 Binary files /dev/null and b/graphics/hud/lives_head.png differ diff --git a/graphics/hud/lives_head.png.import b/graphics/hud/lives_head.png.import new file mode 100644 index 0000000..72aeb31 --- /dev/null +++ b/graphics/hud/lives_head.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/lives_head.png-d13195bbf6be6456364b8977d7fcec9a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/lives_head.png" +dest_files=[ "res://.import/lives_head.png-d13195bbf6be6456364b8977d7fcec9a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/logo.png b/graphics/hud/logo.png new file mode 100644 index 0000000..5b8142b Binary files /dev/null and b/graphics/hud/logo.png differ diff --git a/graphics/hud/logo.png.import b/graphics/hud/logo.png.import new file mode 100644 index 0000000..5c3731e --- /dev/null +++ b/graphics/hud/logo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/logo.png-987a724a82090f90a871d13e95cc61e2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/logo.png" +dest_files=[ "res://.import/logo.png-987a724a82090f90a871d13e95cc61e2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/missed_shard.png b/graphics/hud/missed_shard.png new file mode 100644 index 0000000..4c360e2 Binary files /dev/null and b/graphics/hud/missed_shard.png differ diff --git a/graphics/hud/missed_shard.png.import b/graphics/hud/missed_shard.png.import new file mode 100644 index 0000000..687ffd8 --- /dev/null +++ b/graphics/hud/missed_shard.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/missed_shard.png-26175a30421cb7606ba8b71e96c137b9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/missed_shard.png" +dest_files=[ "res://.import/missed_shard.png-26175a30421cb7606ba8b71e96c137b9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/mori_mark.png b/graphics/hud/mori_mark.png new file mode 100644 index 0000000..d9e14e1 Binary files /dev/null and b/graphics/hud/mori_mark.png differ diff --git a/graphics/hud/mori_mark.png.import b/graphics/hud/mori_mark.png.import new file mode 100644 index 0000000..ad0b28b --- /dev/null +++ b/graphics/hud/mori_mark.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mori_mark.png-3610f38cc63d9747d05aa7c7b9da1293.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/mori_mark.png" +dest_files=[ "res://.import/mori_mark.png-3610f38cc63d9747d05aa7c7b9da1293.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/mori_mark_100_complete.png b/graphics/hud/mori_mark_100_complete.png new file mode 100644 index 0000000..b45f5c9 Binary files /dev/null and b/graphics/hud/mori_mark_100_complete.png differ diff --git a/graphics/hud/mori_mark_100_complete.png.import b/graphics/hud/mori_mark_100_complete.png.import new file mode 100644 index 0000000..dc69285 --- /dev/null +++ b/graphics/hud/mori_mark_100_complete.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mori_mark_100_complete.png-2509ca697b7483804ebf2c252c02e267.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/mori_mark_100_complete.png" +dest_files=[ "res://.import/mori_mark_100_complete.png-2509ca697b7483804ebf2c252c02e267.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/mori_mark_game_complete.png b/graphics/hud/mori_mark_game_complete.png new file mode 100644 index 0000000..5072390 Binary files /dev/null and b/graphics/hud/mori_mark_game_complete.png differ diff --git a/graphics/hud/mori_mark_game_complete.png.import b/graphics/hud/mori_mark_game_complete.png.import new file mode 100644 index 0000000..b024f39 --- /dev/null +++ b/graphics/hud/mori_mark_game_complete.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mori_mark_game_complete.png-190b43b85747ae66c2992e2a8a07fd96.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/mori_mark_game_complete.png" +dest_files=[ "res://.import/mori_mark_game_complete.png-190b43b85747ae66c2992e2a8a07fd96.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/mori_mark_no_death.png b/graphics/hud/mori_mark_no_death.png new file mode 100644 index 0000000..aa9789c Binary files /dev/null and b/graphics/hud/mori_mark_no_death.png differ diff --git a/graphics/hud/mori_mark_no_death.png.import b/graphics/hud/mori_mark_no_death.png.import new file mode 100644 index 0000000..30d33ce --- /dev/null +++ b/graphics/hud/mori_mark_no_death.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mori_mark_no_death.png-453f189aba54dd64e99be0743422d03b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/mori_mark_no_death.png" +dest_files=[ "res://.import/mori_mark_no_death.png-453f189aba54dd64e99be0743422d03b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/msx_head.png b/graphics/hud/msx_head.png new file mode 100644 index 0000000..0ec7e71 Binary files /dev/null and b/graphics/hud/msx_head.png differ diff --git a/graphics/hud/msx_head.png.import b/graphics/hud/msx_head.png.import new file mode 100644 index 0000000..6f9b78f --- /dev/null +++ b/graphics/hud/msx_head.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_head.png-fdcdc2eae8f1ff9e51eb57e0483b2b2f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/msx_head.png" +dest_files=[ "res://.import/msx_head.png-fdcdc2eae8f1ff9e51eb57e0483b2b2f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/off_level_indicator.png b/graphics/hud/off_level_indicator.png new file mode 100644 index 0000000..a73bb78 Binary files /dev/null and b/graphics/hud/off_level_indicator.png differ diff --git a/graphics/hud/off_level_indicator.png.import b/graphics/hud/off_level_indicator.png.import new file mode 100644 index 0000000..0f45554 --- /dev/null +++ b/graphics/hud/off_level_indicator.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/off_level_indicator.png-57fb71ce33e59c157912e9700e4a98f6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/off_level_indicator.png" +dest_files=[ "res://.import/off_level_indicator.png-57fb71ce33e59c157912e9700e4a98f6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/oxygen.png b/graphics/hud/oxygen.png new file mode 100644 index 0000000..a46084f Binary files /dev/null and b/graphics/hud/oxygen.png differ diff --git a/graphics/hud/oxygen.png.import b/graphics/hud/oxygen.png.import new file mode 100644 index 0000000..d48e207 --- /dev/null +++ b/graphics/hud/oxygen.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oxygen.png-bc27b1760336003353c838235a4cb02c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/oxygen.png" +dest_files=[ "res://.import/oxygen.png-bc27b1760336003353c838235a4cb02c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/oxygen_blips.png b/graphics/hud/oxygen_blips.png new file mode 100644 index 0000000..ac4b0f8 Binary files /dev/null and b/graphics/hud/oxygen_blips.png differ diff --git a/graphics/hud/oxygen_blips.png.import b/graphics/hud/oxygen_blips.png.import new file mode 100644 index 0000000..23d038b --- /dev/null +++ b/graphics/hud/oxygen_blips.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oxygen_blips.png-3f20e6a3a7f5eebc14154a2e2292ed5d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/oxygen_blips.png" +dest_files=[ "res://.import/oxygen_blips.png-3f20e6a3a7f5eebc14154a2e2292ed5d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/oxygen_meter.png b/graphics/hud/oxygen_meter.png new file mode 100644 index 0000000..5357304 Binary files /dev/null and b/graphics/hud/oxygen_meter.png differ diff --git a/graphics/hud/oxygen_meter.png.import b/graphics/hud/oxygen_meter.png.import new file mode 100644 index 0000000..e9aebb3 --- /dev/null +++ b/graphics/hud/oxygen_meter.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oxygen_meter.png-65332a0e74d166901bfa7ecd6045514f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/oxygen_meter.png" +dest_files=[ "res://.import/oxygen_meter.png-65332a0e74d166901bfa7ecd6045514f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/perfect_bonus.png b/graphics/hud/perfect_bonus.png new file mode 100644 index 0000000..1a5dc88 Binary files /dev/null and b/graphics/hud/perfect_bonus.png differ diff --git a/graphics/hud/perfect_bonus.png.import b/graphics/hud/perfect_bonus.png.import new file mode 100644 index 0000000..d71a669 --- /dev/null +++ b/graphics/hud/perfect_bonus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/perfect_bonus.png-df090bb05894ccbdd3eae2afd31298d4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/perfect_bonus.png" +dest_files=[ "res://.import/perfect_bonus.png-df090bb05894ccbdd3eae2afd31298d4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/results.png b/graphics/hud/results.png new file mode 100644 index 0000000..0df4cae Binary files /dev/null and b/graphics/hud/results.png differ diff --git a/graphics/hud/results.png.import b/graphics/hud/results.png.import new file mode 100644 index 0000000..108632e --- /dev/null +++ b/graphics/hud/results.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/results.png-c3c2389f681d388610852a8c684f356d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/results.png" +dest_files=[ "res://.import/results.png-c3c2389f681d388610852a8c684f356d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/roll_call.png b/graphics/hud/roll_call.png new file mode 100644 index 0000000..07a5bb3 Binary files /dev/null and b/graphics/hud/roll_call.png differ diff --git a/graphics/hud/roll_call.png.import b/graphics/hud/roll_call.png.import new file mode 100644 index 0000000..416869b --- /dev/null +++ b/graphics/hud/roll_call.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/roll_call.png-e7f8615e3b19317abd8b52ddd2f6b60d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/roll_call.png" +dest_files=[ "res://.import/roll_call.png-e7f8615e3b19317abd8b52ddd2f6b60d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/scores/pungent.png b/graphics/hud/scores/pungent.png new file mode 100644 index 0000000..7754646 Binary files /dev/null and b/graphics/hud/scores/pungent.png differ diff --git a/graphics/hud/scores/pungent.png.import b/graphics/hud/scores/pungent.png.import new file mode 100644 index 0000000..1265a85 --- /dev/null +++ b/graphics/hud/scores/pungent.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/pungent.png-e07e66e400d4d252772a81c6867bb967.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/scores/pungent.png" +dest_files=[ "res://.import/pungent.png-e07e66e400d4d252772a81c6867bb967.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/scores/salty.png b/graphics/hud/scores/salty.png new file mode 100644 index 0000000..af22ef1 Binary files /dev/null and b/graphics/hud/scores/salty.png differ diff --git a/graphics/hud/scores/salty.png.import b/graphics/hud/scores/salty.png.import new file mode 100644 index 0000000..06ae307 --- /dev/null +++ b/graphics/hud/scores/salty.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/salty.png-44a2905ee6e3795b4fc59059696696a8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/scores/salty.png" +dest_files=[ "res://.import/salty.png-44a2905ee6e3795b4fc59059696696a8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/scores/spicy.png b/graphics/hud/scores/spicy.png new file mode 100644 index 0000000..ddace82 Binary files /dev/null and b/graphics/hud/scores/spicy.png differ diff --git a/graphics/hud/scores/spicy.png.import b/graphics/hud/scores/spicy.png.import new file mode 100644 index 0000000..2e03a1a --- /dev/null +++ b/graphics/hud/scores/spicy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/spicy.png-a2205eedcb443d8faf52477db79df90f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/scores/spicy.png" +dest_files=[ "res://.import/spicy.png-a2205eedcb443d8faf52477db79df90f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/scores/sweet.png b/graphics/hud/scores/sweet.png new file mode 100644 index 0000000..7dc896c Binary files /dev/null and b/graphics/hud/scores/sweet.png differ diff --git a/graphics/hud/scores/sweet.png.import b/graphics/hud/scores/sweet.png.import new file mode 100644 index 0000000..8ed72ac --- /dev/null +++ b/graphics/hud/scores/sweet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sweet.png-9fd594d4011ef7c51cf9c89d5c0132b0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/scores/sweet.png" +dest_files=[ "res://.import/sweet.png-9fd594d4011ef7c51cf9c89d5c0132b0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sg_head.png b/graphics/hud/sg_head.png new file mode 100644 index 0000000..d8e16a5 Binary files /dev/null and b/graphics/hud/sg_head.png differ diff --git a/graphics/hud/sg_head.png.import b/graphics/hud/sg_head.png.import new file mode 100644 index 0000000..cfdc5f7 --- /dev/null +++ b/graphics/hud/sg_head.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_head.png-0b64f276be1b8233fbd11dadbfae739a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sg_head.png" +dest_files=[ "res://.import/sg_head.png-0b64f276be1b8233fbd11dadbfae739a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sg_menu.png b/graphics/hud/sg_menu.png new file mode 100644 index 0000000..4d68023 Binary files /dev/null and b/graphics/hud/sg_menu.png differ diff --git a/graphics/hud/sg_menu.png.import b/graphics/hud/sg_menu.png.import new file mode 100644 index 0000000..0b0937d --- /dev/null +++ b/graphics/hud/sg_menu.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_menu.png-1059e958ce9fae654e7b5a67b2bbfacf.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sg_menu.png" +dest_files=[ "res://.import/sg_menu.png-1059e958ce9fae654e7b5a67b2bbfacf.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sg_menu_blink.png b/graphics/hud/sg_menu_blink.png new file mode 100644 index 0000000..c9f4766 Binary files /dev/null and b/graphics/hud/sg_menu_blink.png differ diff --git a/graphics/hud/sg_menu_blink.png.import b/graphics/hud/sg_menu_blink.png.import new file mode 100644 index 0000000..53e9a64 --- /dev/null +++ b/graphics/hud/sg_menu_blink.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_menu_blink.png-52c2e781126ecac40e3e1a9c6b79cf1c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sg_menu_blink.png" +dest_files=[ "res://.import/sg_menu_blink.png-52c2e781126ecac40e3e1a9c6b79cf1c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sg_tasting.png b/graphics/hud/sg_tasting.png new file mode 100644 index 0000000..13908f0 Binary files /dev/null and b/graphics/hud/sg_tasting.png differ diff --git a/graphics/hud/sg_tasting.png.import b/graphics/hud/sg_tasting.png.import new file mode 100644 index 0000000..ceb6459 --- /dev/null +++ b/graphics/hud/sg_tasting.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_tasting.png-33c5875536743f0990f8d054dfbbfa21.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sg_tasting.png" +dest_files=[ "res://.import/sg_tasting.png-33c5875536743f0990f8d054dfbbfa21.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/shard_counter.png.import b/graphics/hud/shard_counter.png.import new file mode 100644 index 0000000..ea8ef57 --- /dev/null +++ b/graphics/hud/shard_counter.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shard_counter.png-21107511ef3e175bf6cbab17710b5745.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/shard_counter.png" +dest_files=[ "res://.import/shard_counter.png-21107511ef3e175bf6cbab17710b5745.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sound_test_arrow.png b/graphics/hud/sound_test_arrow.png new file mode 100644 index 0000000..bc1e20c Binary files /dev/null and b/graphics/hud/sound_test_arrow.png differ diff --git a/graphics/hud/sound_test_arrow.png.import b/graphics/hud/sound_test_arrow.png.import new file mode 100644 index 0000000..c50f8d2 --- /dev/null +++ b/graphics/hud/sound_test_arrow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sound_test_arrow.png-03e263e7b69b8c981df8a10023a98da6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sound_test_arrow.png" +dest_files=[ "res://.import/sound_test_arrow.png-03e263e7b69b8c981df8a10023a98da6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sound_test_title.png b/graphics/hud/sound_test_title.png new file mode 100644 index 0000000..2352aac Binary files /dev/null and b/graphics/hud/sound_test_title.png differ diff --git a/graphics/hud/sound_test_title.png.import b/graphics/hud/sound_test_title.png.import new file mode 100644 index 0000000..ccc63c0 --- /dev/null +++ b/graphics/hud/sound_test_title.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sound_test_title.png-4be45a72e6dcc1d358ca74117086ca3d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sound_test_title.png" +dest_files=[ "res://.import/sound_test_title.png-4be45a72e6dcc1d358ca74117086ca3d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/break_the_glass.png b/graphics/hud/speccy/break_the_glass.png new file mode 100644 index 0000000..91b6e49 Binary files /dev/null and b/graphics/hud/speccy/break_the_glass.png differ diff --git a/graphics/hud/speccy/break_the_glass.png.import b/graphics/hud/speccy/break_the_glass.png.import new file mode 100644 index 0000000..e130b48 --- /dev/null +++ b/graphics/hud/speccy/break_the_glass.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/break_the_glass.png-322e406de2ce417c6947e7c51513424a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/break_the_glass.png" +dest_files=[ "res://.import/break_the_glass.png-322e406de2ce417c6947e7c51513424a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/go_get_em.png b/graphics/hud/speccy/go_get_em.png new file mode 100644 index 0000000..a258c9b Binary files /dev/null and b/graphics/hud/speccy/go_get_em.png differ diff --git a/graphics/hud/speccy/go_get_em.png.import b/graphics/hud/speccy/go_get_em.png.import new file mode 100644 index 0000000..f6a343a --- /dev/null +++ b/graphics/hud/speccy/go_get_em.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/go_get_em.png-80076e7e728e92f49b471d7986a620fe.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/go_get_em.png" +dest_files=[ "res://.import/go_get_em.png-80076e7e728e92f49b471d7986a620fe.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/kill_em_all.png b/graphics/hud/speccy/kill_em_all.png new file mode 100644 index 0000000..2b12863 Binary files /dev/null and b/graphics/hud/speccy/kill_em_all.png differ diff --git a/graphics/hud/speccy/kill_em_all.png.import b/graphics/hud/speccy/kill_em_all.png.import new file mode 100644 index 0000000..ecf5766 --- /dev/null +++ b/graphics/hud/speccy/kill_em_all.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/kill_em_all.png-043b29a5fc7f16177492c344511e8a3a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/kill_em_all.png" +dest_files=[ "res://.import/kill_em_all.png-043b29a5fc7f16177492c344511e8a3a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/oi_go_right.png b/graphics/hud/speccy/oi_go_right.png new file mode 100644 index 0000000..dcde1da Binary files /dev/null and b/graphics/hud/speccy/oi_go_right.png differ diff --git a/graphics/hud/speccy/oi_go_right.png.import b/graphics/hud/speccy/oi_go_right.png.import new file mode 100644 index 0000000..bf4083e --- /dev/null +++ b/graphics/hud/speccy/oi_go_right.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oi_go_right.png-23a20f2a0d8cb4ec57588e4ae39867a8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/oi_go_right.png" +dest_files=[ "res://.import/oi_go_right.png-23a20f2a0d8cb4ec57588e4ae39867a8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/over_here.png b/graphics/hud/speccy/over_here.png new file mode 100644 index 0000000..af337fd Binary files /dev/null and b/graphics/hud/speccy/over_here.png differ diff --git a/graphics/hud/speccy/over_here.png.import b/graphics/hud/speccy/over_here.png.import new file mode 100644 index 0000000..48a4d32 --- /dev/null +++ b/graphics/hud/speccy/over_here.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/over_here.png-aea3855eafdcaa5c5f0a21f9ac1c64a0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/over_here.png" +dest_files=[ "res://.import/over_here.png-aea3855eafdcaa5c5f0a21f9ac1c64a0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/shoot_that_thing.png b/graphics/hud/speccy/shoot_that_thing.png new file mode 100644 index 0000000..284ea08 Binary files /dev/null and b/graphics/hud/speccy/shoot_that_thing.png differ diff --git a/graphics/hud/speccy/shoot_that_thing.png.import b/graphics/hud/speccy/shoot_that_thing.png.import new file mode 100644 index 0000000..5347456 --- /dev/null +++ b/graphics/hud/speccy/shoot_that_thing.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shoot_that_thing.png-967594bf022da78bfe418a0ac5073eda.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/shoot_that_thing.png" +dest_files=[ "res://.import/shoot_that_thing.png-967594bf022da78bfe418a0ac5073eda.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/shoot_the_eye.png b/graphics/hud/speccy/shoot_the_eye.png new file mode 100644 index 0000000..712c2ce Binary files /dev/null and b/graphics/hud/speccy/shoot_the_eye.png differ diff --git a/graphics/hud/speccy/shoot_the_eye.png.import b/graphics/hud/speccy/shoot_the_eye.png.import new file mode 100644 index 0000000..66c1332 --- /dev/null +++ b/graphics/hud/speccy/shoot_the_eye.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shoot_the_eye.png-483a88ff92e95a40ee9cfc88aa6084cb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/shoot_the_eye.png" +dest_files=[ "res://.import/shoot_the_eye.png-483a88ff92e95a40ee9cfc88aa6084cb.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speech_bubble.png b/graphics/hud/speech_bubble.png new file mode 100644 index 0000000..10b708c Binary files /dev/null and b/graphics/hud/speech_bubble.png differ diff --git a/graphics/hud/speech_bubble.png.import b/graphics/hud/speech_bubble.png.import new file mode 100644 index 0000000..9f4bf8c --- /dev/null +++ b/graphics/hud/speech_bubble.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/speech_bubble.png-432aa9dcde6a27c31b84f7cece92306f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speech_bubble.png" +dest_files=[ "res://.import/speech_bubble.png-432aa9dcde6a27c31b84f7cece92306f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/team_sg_logo.png b/graphics/hud/team_sg_logo.png new file mode 100644 index 0000000..59f8ca9 Binary files /dev/null and b/graphics/hud/team_sg_logo.png differ diff --git a/graphics/hud/team_sg_logo.png.import b/graphics/hud/team_sg_logo.png.import new file mode 100644 index 0000000..937e35d --- /dev/null +++ b/graphics/hud/team_sg_logo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/team_sg_logo.png-417aa1cf589d0b9ccf8914bde098b763.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/team_sg_logo.png" +dest_files=[ "res://.import/team_sg_logo.png-417aa1cf589d0b9ccf8914bde098b763.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/team_sg_splash.png b/graphics/hud/team_sg_splash.png new file mode 100644 index 0000000..85b5037 Binary files /dev/null and b/graphics/hud/team_sg_splash.png differ diff --git a/graphics/hud/team_sg_splash.png.import b/graphics/hud/team_sg_splash.png.import new file mode 100644 index 0000000..ed6e833 --- /dev/null +++ b/graphics/hud/team_sg_splash.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/team_sg_splash.png-23db1fe9018a61fe815d83158426f094.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/team_sg_splash.png" +dest_files=[ "res://.import/team_sg_splash.png-23db1fe9018a61fe815d83158426f094.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/thankyou.png b/graphics/hud/thankyou.png new file mode 100644 index 0000000..adb30c9 Binary files /dev/null and b/graphics/hud/thankyou.png differ diff --git a/graphics/hud/thankyou.png.import b/graphics/hud/thankyou.png.import new file mode 100644 index 0000000..e7d359a --- /dev/null +++ b/graphics/hud/thankyou.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/thankyou.png-b548ea25ae4942012c22eb964f92a049.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/thankyou.png" +dest_files=[ "res://.import/thankyou.png-b548ea25ae4942012c22eb964f92a049.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/time_bonus.png b/graphics/hud/time_bonus.png new file mode 100644 index 0000000..f4e3215 Binary files /dev/null and b/graphics/hud/time_bonus.png differ diff --git a/graphics/hud/time_bonus.png.import b/graphics/hud/time_bonus.png.import new file mode 100644 index 0000000..35bc08a --- /dev/null +++ b/graphics/hud/time_bonus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/time_bonus.png-663cd5c7331098252c03675e887c4123.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/time_bonus.png" +dest_files=[ "res://.import/time_bonus.png-663cd5c7331098252c03675e887c4123.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/title_credits.png b/graphics/hud/title_credits.png new file mode 100644 index 0000000..6ebb035 Binary files /dev/null and b/graphics/hud/title_credits.png differ diff --git a/graphics/hud/title_credits.png.import b/graphics/hud/title_credits.png.import new file mode 100644 index 0000000..fb4e5ee --- /dev/null +++ b/graphics/hud/title_credits.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/title_credits.png-639d7382e4b0b843e258deacb1d11d62.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/title_credits.png" +dest_files=[ "res://.import/title_credits.png-639d7382e4b0b843e258deacb1d11d62.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/touch/touch_down.png b/graphics/hud/touch/touch_down.png new file mode 100644 index 0000000..9c5f7db Binary files /dev/null and b/graphics/hud/touch/touch_down.png differ diff --git a/graphics/hud/touch/touch_down.png.import b/graphics/hud/touch/touch_down.png.import new file mode 100644 index 0000000..fc29860 --- /dev/null +++ b/graphics/hud/touch/touch_down.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch_down.png-f7b3b9d5360093c35208cae627eee0fa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/touch/touch_down.png" +dest_files=[ "res://.import/touch_down.png-f7b3b9d5360093c35208cae627eee0fa.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/touch/touch_down_pressed.png b/graphics/hud/touch/touch_down_pressed.png new file mode 100644 index 0000000..727575a Binary files /dev/null and b/graphics/hud/touch/touch_down_pressed.png differ diff --git a/graphics/hud/touch/touch_down_pressed.png.import b/graphics/hud/touch/touch_down_pressed.png.import new file mode 100644 index 0000000..1298f24 --- /dev/null +++ b/graphics/hud/touch/touch_down_pressed.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch_down_pressed.png-26e3c9959e421a752a92240046513eb6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/touch/touch_down_pressed.png" +dest_files=[ "res://.import/touch_down_pressed.png-26e3c9959e421a752a92240046513eb6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/touch/touch_jump.png b/graphics/hud/touch/touch_jump.png new file mode 100644 index 0000000..4aaad88 Binary files /dev/null and b/graphics/hud/touch/touch_jump.png differ diff --git a/graphics/hud/touch/touch_jump.png.import b/graphics/hud/touch/touch_jump.png.import new file mode 100644 index 0000000..074d2be --- /dev/null +++ b/graphics/hud/touch/touch_jump.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch_jump.png-d25a25c96ba529fc22922d345cf1f985.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/touch/touch_jump.png" +dest_files=[ "res://.import/touch_jump.png-d25a25c96ba529fc22922d345cf1f985.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/touch/touch_jump_pressed.png b/graphics/hud/touch/touch_jump_pressed.png new file mode 100644 index 0000000..a415139 Binary files /dev/null and b/graphics/hud/touch/touch_jump_pressed.png differ diff --git a/graphics/hud/touch/touch_jump_pressed.png.import b/graphics/hud/touch/touch_jump_pressed.png.import new file mode 100644 index 0000000..dc4546e --- /dev/null +++ b/graphics/hud/touch/touch_jump_pressed.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch_jump_pressed.png-37dc8c2572dc91bc5bf30beb311f19a0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/touch/touch_jump_pressed.png" +dest_files=[ "res://.import/touch_jump_pressed.png-37dc8c2572dc91bc5bf30beb311f19a0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/touch/touch_left.png b/graphics/hud/touch/touch_left.png new file mode 100644 index 0000000..31b7e3d Binary files /dev/null and b/graphics/hud/touch/touch_left.png differ diff --git a/graphics/hud/touch/touch_left.png.import b/graphics/hud/touch/touch_left.png.import new file mode 100644 index 0000000..c953307 --- /dev/null +++ b/graphics/hud/touch/touch_left.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch_left.png-0d1348fd1f7bc33ef4880e04370b336c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/touch/touch_left.png" +dest_files=[ "res://.import/touch_left.png-0d1348fd1f7bc33ef4880e04370b336c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/touch/touch_left_pressed.png b/graphics/hud/touch/touch_left_pressed.png new file mode 100644 index 0000000..34b6359 Binary files /dev/null and b/graphics/hud/touch/touch_left_pressed.png differ diff --git a/graphics/hud/touch/touch_left_pressed.png.import b/graphics/hud/touch/touch_left_pressed.png.import new file mode 100644 index 0000000..fd6455c --- /dev/null +++ b/graphics/hud/touch/touch_left_pressed.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch_left_pressed.png-cdb9c23493ebeaf4d533502019100251.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/touch/touch_left_pressed.png" +dest_files=[ "res://.import/touch_left_pressed.png-cdb9c23493ebeaf4d533502019100251.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/touch/touch_right.png b/graphics/hud/touch/touch_right.png new file mode 100644 index 0000000..99e7303 Binary files /dev/null and b/graphics/hud/touch/touch_right.png differ diff --git a/graphics/hud/touch/touch_right.png.import b/graphics/hud/touch/touch_right.png.import new file mode 100644 index 0000000..e9249d2 --- /dev/null +++ b/graphics/hud/touch/touch_right.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch_right.png-b39574011fcd5ee55b3e373c24167362.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/touch/touch_right.png" +dest_files=[ "res://.import/touch_right.png-b39574011fcd5ee55b3e373c24167362.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/touch/touch_right_pressed.png b/graphics/hud/touch/touch_right_pressed.png new file mode 100644 index 0000000..c56dbfb Binary files /dev/null and b/graphics/hud/touch/touch_right_pressed.png differ diff --git a/graphics/hud/touch/touch_right_pressed.png.import b/graphics/hud/touch/touch_right_pressed.png.import new file mode 100644 index 0000000..cf0f5af --- /dev/null +++ b/graphics/hud/touch/touch_right_pressed.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch_right_pressed.png-816aab9d2892ce2d06d13959d3378255.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/touch/touch_right_pressed.png" +dest_files=[ "res://.import/touch_right_pressed.png-816aab9d2892ce2d06d13959d3378255.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/touch/touch_shoot.png b/graphics/hud/touch/touch_shoot.png new file mode 100644 index 0000000..a2948da Binary files /dev/null and b/graphics/hud/touch/touch_shoot.png differ diff --git a/graphics/hud/touch/touch_shoot.png.import b/graphics/hud/touch/touch_shoot.png.import new file mode 100644 index 0000000..552bf7b --- /dev/null +++ b/graphics/hud/touch/touch_shoot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch_shoot.png-f3f5c2ac5ce5bd30dda5a011dfa4b49c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/touch/touch_shoot.png" +dest_files=[ "res://.import/touch_shoot.png-f3f5c2ac5ce5bd30dda5a011dfa4b49c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/touch/touch_shoot_pressed.png b/graphics/hud/touch/touch_shoot_pressed.png new file mode 100644 index 0000000..37fa228 Binary files /dev/null and b/graphics/hud/touch/touch_shoot_pressed.png differ diff --git a/graphics/hud/touch/touch_shoot_pressed.png.import b/graphics/hud/touch/touch_shoot_pressed.png.import new file mode 100644 index 0000000..6e19914 --- /dev/null +++ b/graphics/hud/touch/touch_shoot_pressed.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch_shoot_pressed.png-21478853c80a510d300db9de2d76e41d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/touch/touch_shoot_pressed.png" +dest_files=[ "res://.import/touch_shoot_pressed.png-21478853c80a510d300db9de2d76e41d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/touch/touch_up.png b/graphics/hud/touch/touch_up.png new file mode 100644 index 0000000..54db8ef Binary files /dev/null and b/graphics/hud/touch/touch_up.png differ diff --git a/graphics/hud/touch/touch_up.png.import b/graphics/hud/touch/touch_up.png.import new file mode 100644 index 0000000..946acad --- /dev/null +++ b/graphics/hud/touch/touch_up.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch_up.png-954befe4d1b24b6da3d6f6fe5d9fce88.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/touch/touch_up.png" +dest_files=[ "res://.import/touch_up.png-954befe4d1b24b6da3d6f6fe5d9fce88.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/touch/touch_up_pressed.png b/graphics/hud/touch/touch_up_pressed.png new file mode 100644 index 0000000..51fcdb7 Binary files /dev/null and b/graphics/hud/touch/touch_up_pressed.png differ diff --git a/graphics/hud/touch/touch_up_pressed.png.import b/graphics/hud/touch/touch_up_pressed.png.import new file mode 100644 index 0000000..3b8e0bb --- /dev/null +++ b/graphics/hud/touch/touch_up_pressed.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch_up_pressed.png-0dea60c997753fc151f6488b7d2ed2d1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/touch/touch_up_pressed.png" +dest_files=[ "res://.import/touch_up_pressed.png-0dea60c997753fc151f6488b7d2ed2d1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/ladder/vine.png b/graphics/ladder/vine.png deleted file mode 100644 index 261f90c..0000000 Binary files a/graphics/ladder/vine.png and /dev/null differ diff --git a/graphics/ladder/vine.png.import b/graphics/ladder/vine.png.import deleted file mode 100644 index 172fb34..0000000 --- a/graphics/ladder/vine.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/vine.png-87e1480df08ec85216f71ac1fe8d8359.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/ladder/vine.png" -dest_files=[ "res://.import/vine.png-87e1480df08ec85216f71ac1fe8d8359.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/level_select/small_sg.png b/graphics/level_select/small_sg.png new file mode 100644 index 0000000..00710d9 Binary files /dev/null and b/graphics/level_select/small_sg.png differ diff --git a/graphics/level_select/small_sg.png.import b/graphics/level_select/small_sg.png.import new file mode 100644 index 0000000..89c353a --- /dev/null +++ b/graphics/level_select/small_sg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/small_sg.png-1e404b8f0979e895a2dcca9c5f498c3c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/level_select/small_sg.png" +dest_files=[ "res://.import/small_sg.png-1e404b8f0979e895a2dcca9c5f498c3c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/wave.tres b/graphics/level_select/wave.tres new file mode 100644 index 0000000..4f2b83d --- /dev/null +++ b/graphics/level_select/wave.tres @@ -0,0 +1,14 @@ +[gd_resource type="AnimatedTexture" load_steps=4 format=2] + +[ext_resource path="res://graphics/level_select/wave_1.png" type="Texture" id=1] +[ext_resource path="res://graphics/level_select/wave_2.png" type="Texture" id=2] +[ext_resource path="res://graphics/level_select/wave_3.png" type="Texture" id=3] + +[resource] +frames = 3 +fps = 8.0 +frame_0/texture = ExtResource( 1 ) +frame_1/texture = ExtResource( 2 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 3 ) +frame_2/delay_sec = 0.0 diff --git a/graphics/level_select/wave_particle.png b/graphics/level_select/wave_particle.png new file mode 100644 index 0000000..0959e5b Binary files /dev/null and b/graphics/level_select/wave_particle.png differ diff --git a/graphics/level_select/wave_particle.png.import b/graphics/level_select/wave_particle.png.import new file mode 100644 index 0000000..4297765 --- /dev/null +++ b/graphics/level_select/wave_particle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/wave_particle.png-0766fcb01570705c5441be7b8bb455f9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/level_select/wave_particle.png" +dest_files=[ "res://.import/wave_particle.png-0766fcb01570705c5441be7b8bb455f9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/waves_mask.png b/graphics/level_select/waves_mask.png new file mode 100644 index 0000000..3cb98cc Binary files /dev/null and b/graphics/level_select/waves_mask.png differ diff --git a/graphics/level_select/waves_mask.png.import b/graphics/level_select/waves_mask.png.import new file mode 100644 index 0000000..3d08ad3 --- /dev/null +++ b/graphics/level_select/waves_mask.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/waves_mask.png-0b5b86f235e2682fba9f9ac40ac7f640.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/level_select/waves_mask.png" +dest_files=[ "res://.import/waves_mask.png-0b5b86f235e2682fba9f9ac40ac7f640.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/whirlpool.png b/graphics/level_select/whirlpool.png new file mode 100644 index 0000000..8f5db4b Binary files /dev/null and b/graphics/level_select/whirlpool.png differ diff --git a/graphics/level_select/whirlpool.png.import b/graphics/level_select/whirlpool.png.import new file mode 100644 index 0000000..7dfbdaf --- /dev/null +++ b/graphics/level_select/whirlpool.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/whirlpool.png-93394bcc546b149f80fec79f58a2fa75.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/level_select/whirlpool.png" +dest_files=[ "res://.import/whirlpool.png-93394bcc546b149f80fec79f58a2fa75.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/whirlpool.xcf b/graphics/level_select/whirlpool.xcf new file mode 100644 index 0000000..1c875ba Binary files /dev/null and b/graphics/level_select/whirlpool.xcf differ diff --git a/graphics/level_select/world_map.png b/graphics/level_select/world_map.png new file mode 100644 index 0000000..cfc8e32 Binary files /dev/null and b/graphics/level_select/world_map.png differ diff --git a/graphics/level_select/world_map.png.import b/graphics/level_select/world_map.png.import new file mode 100644 index 0000000..dc5f7a1 --- /dev/null +++ b/graphics/level_select/world_map.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/world_map.png-c7670ec033333050c2cad389b5ebb694.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/level_select/world_map.png" +dest_files=[ "res://.import/world_map.png-c7670ec033333050c2cad389b5ebb694.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/world_map.xcf b/graphics/level_select/world_map.xcf new file mode 100644 index 0000000..0714bf8 Binary files /dev/null and b/graphics/level_select/world_map.xcf differ diff --git a/graphics/lore/2083_lore.png b/graphics/lore/2083_lore.png new file mode 100644 index 0000000..39bc8ff Binary files /dev/null and b/graphics/lore/2083_lore.png differ diff --git a/graphics/lore/2083_lore.png.import b/graphics/lore/2083_lore.png.import new file mode 100644 index 0000000..b24812c --- /dev/null +++ b/graphics/lore/2083_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2083_lore.png-413754d57591d2753b78fb7adaeaaa9f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/2083_lore.png" +dest_files=[ "res://.import/2083_lore.png-413754d57591d2753b78fb7adaeaaa9f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/2600_lore.png b/graphics/lore/2600_lore.png new file mode 100644 index 0000000..71df6a3 Binary files /dev/null and b/graphics/lore/2600_lore.png differ diff --git a/graphics/lore/2600_lore.png.import b/graphics/lore/2600_lore.png.import new file mode 100644 index 0000000..0f2faa6 --- /dev/null +++ b/graphics/lore/2600_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2600_lore.png-639cdd01246046c019315da6b29b0244.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/2600_lore.png" +dest_files=[ "res://.import/2600_lore.png-639cdd01246046c019315da6b29b0244.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/arlingwood_graveyard.png b/graphics/lore/arlingwood_graveyard.png new file mode 100644 index 0000000..4939a9a Binary files /dev/null and b/graphics/lore/arlingwood_graveyard.png differ diff --git a/graphics/lore/arlingwood_graveyard.png.import b/graphics/lore/arlingwood_graveyard.png.import new file mode 100644 index 0000000..e55a2f2 --- /dev/null +++ b/graphics/lore/arlingwood_graveyard.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arlingwood_graveyard.png-dcf19c4ee26882dff177a70d66d68e6f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/arlingwood_graveyard.png" +dest_files=[ "res://.import/arlingwood_graveyard.png-dcf19c4ee26882dff177a70d66d68e6f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/artificial_soul_lore.png b/graphics/lore/artificial_soul_lore.png new file mode 100644 index 0000000..7ae45f2 Binary files /dev/null and b/graphics/lore/artificial_soul_lore.png differ diff --git a/graphics/lore/artificial_soul_lore.png.import b/graphics/lore/artificial_soul_lore.png.import new file mode 100644 index 0000000..746e826 --- /dev/null +++ b/graphics/lore/artificial_soul_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/artificial_soul_lore.png-ccae07a62b43ff1af6289ea38581667f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/artificial_soul_lore.png" +dest_files=[ "res://.import/artificial_soul_lore.png-ccae07a62b43ff1af6289ea38581667f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/beel_lore.png b/graphics/lore/beel_lore.png new file mode 100644 index 0000000..8c44d5f Binary files /dev/null and b/graphics/lore/beel_lore.png differ diff --git a/graphics/lore/beel_lore.png.import b/graphics/lore/beel_lore.png.import new file mode 100644 index 0000000..d62d465 --- /dev/null +++ b/graphics/lore/beel_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/beel_lore.png-3a17d7be0c6bde0fd16f64d711fbd08d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/beel_lore.png" +dest_files=[ "res://.import/beel_lore.png-3a17d7be0c6bde0fd16f64d711fbd08d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/blue_ray_cavern.png b/graphics/lore/blue_ray_cavern.png new file mode 100644 index 0000000..05784f5 Binary files /dev/null and b/graphics/lore/blue_ray_cavern.png differ diff --git a/graphics/lore/blue_ray_cavern.png.import b/graphics/lore/blue_ray_cavern.png.import new file mode 100644 index 0000000..7dc7725 --- /dev/null +++ b/graphics/lore/blue_ray_cavern.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/blue_ray_cavern.png-0dd2d74f57c9b34a7254592f4a4c18d7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/blue_ray_cavern.png" +dest_files=[ "res://.import/blue_ray_cavern.png-0dd2d74f57c9b34a7254592f4a4c18d7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/crater_of_the_abyss.png b/graphics/lore/crater_of_the_abyss.png new file mode 100644 index 0000000..47ee482 Binary files /dev/null and b/graphics/lore/crater_of_the_abyss.png differ diff --git a/graphics/lore/crater_of_the_abyss.png.import b/graphics/lore/crater_of_the_abyss.png.import new file mode 100644 index 0000000..6d36fa4 --- /dev/null +++ b/graphics/lore/crater_of_the_abyss.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/crater_of_the_abyss.png-44342320e1396b51a3b006db6564a8b9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/crater_of_the_abyss.png" +dest_files=[ "res://.import/crater_of_the_abyss.png-44342320e1396b51a3b006db6564a8b9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/echo_mountain.png b/graphics/lore/echo_mountain.png new file mode 100644 index 0000000..6ca6d56 Binary files /dev/null and b/graphics/lore/echo_mountain.png differ diff --git a/graphics/lore/echo_mountain.png.import b/graphics/lore/echo_mountain.png.import new file mode 100644 index 0000000..58c8db3 --- /dev/null +++ b/graphics/lore/echo_mountain.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/echo_mountain.png-8be11e924a4c00da67ba983b33e86006.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/echo_mountain.png" +dest_files=[ "res://.import/echo_mountain.png-8be11e924a4c00da67ba983b33e86006.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/famis_lab.png b/graphics/lore/famis_lab.png new file mode 100644 index 0000000..9d0a447 Binary files /dev/null and b/graphics/lore/famis_lab.png differ diff --git a/graphics/lore/famis_lab.png.import b/graphics/lore/famis_lab.png.import new file mode 100644 index 0000000..68c247d --- /dev/null +++ b/graphics/lore/famis_lab.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famis_lab.png-efe18e972d1c3612155057cea6d183e6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/famis_lab.png" +dest_files=[ "res://.import/famis_lab.png-efe18e972d1c3612155057cea6d183e6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/police_station.png b/graphics/lore/police_station.png new file mode 100644 index 0000000..7a93790 Binary files /dev/null and b/graphics/lore/police_station.png differ diff --git a/graphics/lore/police_station.png.import b/graphics/lore/police_station.png.import new file mode 100644 index 0000000..738aa00 --- /dev/null +++ b/graphics/lore/police_station.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/police_station.png-e1ce5a436800b65847372b057e912ee2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/police_station.png" +dest_files=[ "res://.import/police_station.png-e1ce5a436800b65847372b057e912ee2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/roboturret_lore.png b/graphics/lore/roboturret_lore.png new file mode 100644 index 0000000..5a5827b Binary files /dev/null and b/graphics/lore/roboturret_lore.png differ diff --git a/graphics/lore/roboturret_lore.png.import b/graphics/lore/roboturret_lore.png.import new file mode 100644 index 0000000..af6b122 --- /dev/null +++ b/graphics/lore/roboturret_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/roboturret_lore.png-8fad4290cd0d33277422bca7007e004f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/roboturret_lore.png" +dest_files=[ "res://.import/roboturret_lore.png-8fad4290cd0d33277422bca7007e004f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/rust_inc.png b/graphics/lore/rust_inc.png new file mode 100644 index 0000000..65e7a57 Binary files /dev/null and b/graphics/lore/rust_inc.png differ diff --git a/graphics/lore/rust_inc.png.import b/graphics/lore/rust_inc.png.import new file mode 100644 index 0000000..0f5c48a --- /dev/null +++ b/graphics/lore/rust_inc.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/rust_inc.png-b66eb29b8ed3924f77cae1a82c2fc5d6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/rust_inc.png" +dest_files=[ "res://.import/rust_inc.png-b66eb29b8ed3924f77cae1a82c2fc5d6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/scrump_lore.png b/graphics/lore/scrump_lore.png new file mode 100644 index 0000000..66ef174 Binary files /dev/null and b/graphics/lore/scrump_lore.png differ diff --git a/graphics/lore/scrump_lore.png.import b/graphics/lore/scrump_lore.png.import new file mode 100644 index 0000000..62192c1 --- /dev/null +++ b/graphics/lore/scrump_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/scrump_lore.png-91e5f3c77b57e010126e8911c72a1858.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/scrump_lore.png" +dest_files=[ "res://.import/scrump_lore.png-91e5f3c77b57e010126e8911c72a1858.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/shady_canopy.png b/graphics/lore/shady_canopy.png new file mode 100644 index 0000000..045311f Binary files /dev/null and b/graphics/lore/shady_canopy.png differ diff --git a/graphics/lore/shady_canopy.png.import b/graphics/lore/shady_canopy.png.import new file mode 100644 index 0000000..3649bb6 --- /dev/null +++ b/graphics/lore/shady_canopy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shady_canopy.png-e3860504d1d7ce41398bbe44abadb9b5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/shady_canopy.png" +dest_files=[ "res://.import/shady_canopy.png-e3860504d1d7ce41398bbe44abadb9b5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/steel_factory.png b/graphics/lore/steel_factory.png new file mode 100644 index 0000000..d9a7d1d Binary files /dev/null and b/graphics/lore/steel_factory.png differ diff --git a/graphics/lore/steel_factory.png.import b/graphics/lore/steel_factory.png.import new file mode 100644 index 0000000..1a5bf8f --- /dev/null +++ b/graphics/lore/steel_factory.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/steel_factory.png-23add5a49d9fa73768acb4c5ab2d9ca3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/steel_factory.png" +dest_files=[ "res://.import/steel_factory.png-23add5a49d9fa73768acb4c5ab2d9ca3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/tin_lore.png b/graphics/lore/tin_lore.png new file mode 100644 index 0000000..933c9d4 Binary files /dev/null and b/graphics/lore/tin_lore.png differ diff --git a/graphics/lore/tin_lore.png.import b/graphics/lore/tin_lore.png.import new file mode 100644 index 0000000..6492ddc --- /dev/null +++ b/graphics/lore/tin_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tin_lore.png-875eab5ed3581c466d94f045212ca393.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/tin_lore.png" +dest_files=[ "res://.import/tin_lore.png-875eab5ed3581c466d94f045212ca393.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/verdant_hills.png b/graphics/lore/verdant_hills.png new file mode 100644 index 0000000..72c9f3b Binary files /dev/null and b/graphics/lore/verdant_hills.png differ diff --git a/graphics/lore/verdant_hills.png.import b/graphics/lore/verdant_hills.png.import new file mode 100644 index 0000000..f369df6 --- /dev/null +++ b/graphics/lore/verdant_hills.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/verdant_hills.png-c370ff8554ff6b9616cb89947e2207df.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/verdant_hills.png" +dest_files=[ "res://.import/verdant_hills.png-c370ff8554ff6b9616cb89947e2207df.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/moving_platform/moving_platform.png b/graphics/moving_platform/moving_platform.png new file mode 100644 index 0000000..1ea26ac Binary files /dev/null and b/graphics/moving_platform/moving_platform.png differ diff --git a/graphics/moving_platform/moving_platform.png.import b/graphics/moving_platform/moving_platform.png.import new file mode 100644 index 0000000..7873ba8 --- /dev/null +++ b/graphics/moving_platform/moving_platform.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/moving_platform.png-9f4dacf0fea7d199f190d8298e4c7b54.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/moving_platform/moving_platform.png" +dest_files=[ "res://.import/moving_platform.png-9f4dacf0fea7d199f190d8298e4c7b54.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/elaine.png b/graphics/npc/elaine.png new file mode 100644 index 0000000..4c68d6f Binary files /dev/null and b/graphics/npc/elaine.png differ diff --git a/graphics/npc/elaine.png.import b/graphics/npc/elaine.png.import new file mode 100644 index 0000000..1cd1ced --- /dev/null +++ b/graphics/npc/elaine.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/elaine.png-2d997800668116b1ce6cddc2ee61d768.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/elaine.png" +dest_files=[ "res://.import/elaine.png-2d997800668116b1ce6cddc2ee61d768.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/fami_human.png b/graphics/npc/fami_human.png new file mode 100644 index 0000000..230f41f Binary files /dev/null and b/graphics/npc/fami_human.png differ diff --git a/graphics/npc/fami_human.png.import b/graphics/npc/fami_human.png.import new file mode 100644 index 0000000..f0c79c7 --- /dev/null +++ b/graphics/npc/fami_human.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fami_human.png-c8272874b8b4943e946edb63a2b57912.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/fami_human.png" +dest_files=[ "res://.import/fami_human.png-c8272874b8b4943e946edb63a2b57912.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/fami_human_laugh.png b/graphics/npc/fami_human_laugh.png new file mode 100644 index 0000000..5845521 Binary files /dev/null and b/graphics/npc/fami_human_laugh.png differ diff --git a/graphics/npc/fami_human_laugh.png.import b/graphics/npc/fami_human_laugh.png.import new file mode 100644 index 0000000..dc4c7bb --- /dev/null +++ b/graphics/npc/fami_human_laugh.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fami_human_laugh.png-29e0d3a9f74034394b8f6007e6ef3b51.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/fami_human_laugh.png" +dest_files=[ "res://.import/fami_human_laugh.png-29e0d3a9f74034394b8f6007e6ef3b51.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/fami_human_punch.png b/graphics/npc/fami_human_punch.png new file mode 100644 index 0000000..1b8d9e7 Binary files /dev/null and b/graphics/npc/fami_human_punch.png differ diff --git a/graphics/npc/fami_human_punch.png.import b/graphics/npc/fami_human_punch.png.import new file mode 100644 index 0000000..47a158e --- /dev/null +++ b/graphics/npc/fami_human_punch.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fami_human_punch.png-3abbf294e7d6a39085ec2aeb01159189.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/fami_human_punch.png" +dest_files=[ "res://.import/fami_human_punch.png-3abbf294e7d6a39085ec2aeb01159189.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/fami_human_transform.png b/graphics/npc/fami_human_transform.png new file mode 100644 index 0000000..3cc4c38 Binary files /dev/null and b/graphics/npc/fami_human_transform.png differ diff --git a/graphics/npc/fami_human_transform.png.import b/graphics/npc/fami_human_transform.png.import new file mode 100644 index 0000000..63f1894 --- /dev/null +++ b/graphics/npc/fami_human_transform.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fami_human_transform.png-2f2a884b33decf15ad67d39c6798c5de.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/fami_human_transform.png" +dest_files=[ "res://.import/fami_human_transform.png-2f2a884b33decf15ad67d39c6798c5de.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/fami_human_walk.png b/graphics/npc/fami_human_walk.png new file mode 100644 index 0000000..90d8031 Binary files /dev/null and b/graphics/npc/fami_human_walk.png differ diff --git a/graphics/npc/fami_human_walk.png.import b/graphics/npc/fami_human_walk.png.import new file mode 100644 index 0000000..cc05663 --- /dev/null +++ b/graphics/npc/fami_human_walk.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fami_human_walk.png-0bdff16bec74475af4c98568148c5f60.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/fami_human_walk.png" +dest_files=[ "res://.import/fami_human_walk.png-0bdff16bec74475af4c98568148c5f60.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/haze.png b/graphics/npc/haze.png new file mode 100644 index 0000000..895b19d Binary files /dev/null and b/graphics/npc/haze.png differ diff --git a/graphics/npc/haze.png.import b/graphics/npc/haze.png.import new file mode 100644 index 0000000..1727763 --- /dev/null +++ b/graphics/npc/haze.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/haze.png-b483c72d2cdabfa5fdaaaf0dcb693e88.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/haze.png" +dest_files=[ "res://.import/haze.png-b483c72d2cdabfa5fdaaaf0dcb693e88.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/intelli_head.png b/graphics/npc/intelli_head.png new file mode 100644 index 0000000..649282f Binary files /dev/null and b/graphics/npc/intelli_head.png differ diff --git a/graphics/npc/intelli_head.png.import b/graphics/npc/intelli_head.png.import new file mode 100644 index 0000000..721fab6 --- /dev/null +++ b/graphics/npc/intelli_head.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/intelli_head.png-9f4bf937d24c38cc981e0b0aff9115cf.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/intelli_head.png" +dest_files=[ "res://.import/intelli_head.png-9f4bf937d24c38cc981e0b0aff9115cf.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/intelli_idle.png b/graphics/npc/intelli_idle.png new file mode 100644 index 0000000..ccc4bdf Binary files /dev/null and b/graphics/npc/intelli_idle.png differ diff --git a/graphics/npc/intelli_idle.png.import b/graphics/npc/intelli_idle.png.import new file mode 100644 index 0000000..26c174b --- /dev/null +++ b/graphics/npc/intelli_idle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/intelli_idle.png-7a45754f787286146055a5bdc790c40a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/intelli_idle.png" +dest_files=[ "res://.import/intelli_idle.png-7a45754f787286146055a5bdc790c40a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/intelli_pod.png.import b/graphics/npc/intelli_pod.png.import new file mode 100644 index 0000000..2ee5deb --- /dev/null +++ b/graphics/npc/intelli_pod.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/intelli_pod.png-bebe1d4f21b18e23f590810c176320c5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/intelli_pod.png" +dest_files=[ "res://.import/intelli_pod.png-bebe1d4f21b18e23f590810c176320c5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/ivy.png b/graphics/npc/ivy.png new file mode 100644 index 0000000..1bd6dda Binary files /dev/null and b/graphics/npc/ivy.png differ diff --git a/graphics/npc/ivy.png.import b/graphics/npc/ivy.png.import new file mode 100644 index 0000000..4218087 --- /dev/null +++ b/graphics/npc/ivy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ivy.png-c6a8f5eae7fe59d41bed18257e0d1b63.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/ivy.png" +dest_files=[ "res://.import/ivy.png-c6a8f5eae7fe59d41bed18257e0d1b63.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/kiki_dog.png b/graphics/npc/kiki_dog.png new file mode 100644 index 0000000..d0a739b Binary files /dev/null and b/graphics/npc/kiki_dog.png differ diff --git a/graphics/npc/kiki_dog.png.import b/graphics/npc/kiki_dog.png.import new file mode 100644 index 0000000..3fd24f6 --- /dev/null +++ b/graphics/npc/kiki_dog.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/kiki_dog.png-562218a12eeaaf2e2134ec7dbe875a1a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/kiki_dog.png" +dest_files=[ "res://.import/kiki_dog.png-562218a12eeaaf2e2134ec7dbe875a1a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/msx_blink.png b/graphics/npc/msx_blink.png new file mode 100644 index 0000000..54236d0 Binary files /dev/null and b/graphics/npc/msx_blink.png differ diff --git a/graphics/npc/msx_blink.png.import b/graphics/npc/msx_blink.png.import new file mode 100644 index 0000000..a71262c --- /dev/null +++ b/graphics/npc/msx_blink.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_blink.png-3e81cac31b42c7066c74bede693edca4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/msx_blink.png" +dest_files=[ "res://.import/msx_blink.png-3e81cac31b42c7066c74bede693edca4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/msx_future.png b/graphics/npc/msx_future.png new file mode 100644 index 0000000..b101777 Binary files /dev/null and b/graphics/npc/msx_future.png differ diff --git a/graphics/npc/msx_future.png.import b/graphics/npc/msx_future.png.import new file mode 100644 index 0000000..ae1e579 --- /dev/null +++ b/graphics/npc/msx_future.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_future.png-f80025a99339fb4cc97772ee4a9ac9d4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/msx_future.png" +dest_files=[ "res://.import/msx_future.png-f80025a99339fb4cc97772ee4a9ac9d4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/msx_give.png b/graphics/npc/msx_give.png new file mode 100644 index 0000000..1f7f98e Binary files /dev/null and b/graphics/npc/msx_give.png differ diff --git a/graphics/npc/msx_give.png.import b/graphics/npc/msx_give.png.import new file mode 100644 index 0000000..9106f57 --- /dev/null +++ b/graphics/npc/msx_give.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_give.png-ae86958a670c41e2764ea07957b7c651.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/msx_give.png" +dest_files=[ "res://.import/msx_give.png-ae86958a670c41e2764ea07957b7c651.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/msx_idle.png b/graphics/npc/msx_idle.png new file mode 100644 index 0000000..4253dce Binary files /dev/null and b/graphics/npc/msx_idle.png differ diff --git a/graphics/npc/msx_idle.png.import b/graphics/npc/msx_idle.png.import new file mode 100644 index 0000000..81bf2a8 --- /dev/null +++ b/graphics/npc/msx_idle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_idle.png-904e9b439d6f605dfe60ef477bd6d3fc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/msx_idle.png" +dest_files=[ "res://.import/msx_idle.png-904e9b439d6f605dfe60ef477bd6d3fc.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/msx_respawn.png b/graphics/npc/msx_respawn.png new file mode 100644 index 0000000..0747802 Binary files /dev/null and b/graphics/npc/msx_respawn.png differ diff --git a/graphics/npc/msx_respawn.png.import b/graphics/npc/msx_respawn.png.import new file mode 100644 index 0000000..37f3179 --- /dev/null +++ b/graphics/npc/msx_respawn.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_respawn.png-079d35100957fd3b65980cf58702fa84.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/msx_respawn.png" +dest_files=[ "res://.import/msx_respawn.png-079d35100957fd3b65980cf58702fa84.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/msx_walk.png b/graphics/npc/msx_walk.png new file mode 100644 index 0000000..5ec524d Binary files /dev/null and b/graphics/npc/msx_walk.png differ diff --git a/graphics/npc/msx_walk.png.import b/graphics/npc/msx_walk.png.import new file mode 100644 index 0000000..83fdbd5 --- /dev/null +++ b/graphics/npc/msx_walk.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_walk.png-02e0194c211bff92277c716918f63d22.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/msx_walk.png" +dest_files=[ "res://.import/msx_walk.png-02e0194c211bff92277c716918f63d22.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/penny.png b/graphics/npc/penny.png new file mode 100644 index 0000000..862d912 Binary files /dev/null and b/graphics/npc/penny.png differ diff --git a/graphics/npc/penny.png.import b/graphics/npc/penny.png.import new file mode 100644 index 0000000..809fc6d --- /dev/null +++ b/graphics/npc/penny.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/penny.png-be9d1011ecdcce51cd716f48371b95fa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/penny.png" +dest_files=[ "res://.import/penny.png-be9d1011ecdcce51cd716f48371b95fa.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/sg_future.png b/graphics/npc/sg_future.png new file mode 100644 index 0000000..20c10ec Binary files /dev/null and b/graphics/npc/sg_future.png differ diff --git a/graphics/npc/sg_future.png.import b/graphics/npc/sg_future.png.import new file mode 100644 index 0000000..cf20b60 --- /dev/null +++ b/graphics/npc/sg_future.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_future.png-cdbd7c9b08828f45ce5d3a3faf7f2693.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/sg_future.png" +dest_files=[ "res://.import/sg_future.png-cdbd7c9b08828f45ce5d3a3faf7f2693.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/sms.png b/graphics/npc/sms.png new file mode 100644 index 0000000..55b24d6 Binary files /dev/null and b/graphics/npc/sms.png differ diff --git a/graphics/npc/sms.png.import b/graphics/npc/sms.png.import new file mode 100644 index 0000000..95dc577 --- /dev/null +++ b/graphics/npc/sms.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sms.png-d86229f2d402f74a94586086e38351f0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/sms.png" +dest_files=[ "res://.import/sms.png-d86229f2d402f74a94586086e38351f0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/speccy.png b/graphics/npc/speccy.png new file mode 100644 index 0000000..cd69a11 Binary files /dev/null and b/graphics/npc/speccy.png differ diff --git a/graphics/npc/speccy.png.import b/graphics/npc/speccy.png.import new file mode 100644 index 0000000..fec1991 --- /dev/null +++ b/graphics/npc/speccy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/speccy.png-6a5559d75a077641c7ee8b3aa2431551.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/speccy.png" +dest_files=[ "res://.import/speccy.png-6a5559d75a077641c7ee8b3aa2431551.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/speccy_cool.png b/graphics/npc/speccy_cool.png new file mode 100644 index 0000000..bca34f7 Binary files /dev/null and b/graphics/npc/speccy_cool.png differ diff --git a/graphics/npc/speccy_cool.png.import b/graphics/npc/speccy_cool.png.import new file mode 100644 index 0000000..3537f3d --- /dev/null +++ b/graphics/npc/speccy_cool.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/speccy_cool.png-a2bef9af08d75596c39afabf4b591669.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/speccy_cool.png" +dest_files=[ "res://.import/speccy_cool.png-a2bef9af08d75596c39afabf4b591669.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/speccy_future.png b/graphics/npc/speccy_future.png new file mode 100644 index 0000000..3e11641 Binary files /dev/null and b/graphics/npc/speccy_future.png differ diff --git a/graphics/npc/speccy_future.png.import b/graphics/npc/speccy_future.png.import new file mode 100644 index 0000000..4048d3b --- /dev/null +++ b/graphics/npc/speccy_future.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/speccy_future.png-1e522d079b6cc689a4fc31f14da4eeae.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/speccy_future.png" +dest_files=[ "res://.import/speccy_future.png-1e522d079b6cc689a4fc31f14da4eeae.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/speccy_talk.png b/graphics/npc/speccy_talk.png new file mode 100644 index 0000000..c269c25 Binary files /dev/null and b/graphics/npc/speccy_talk.png differ diff --git a/graphics/npc/speccy_talk.png.import b/graphics/npc/speccy_talk.png.import new file mode 100644 index 0000000..a62b071 --- /dev/null +++ b/graphics/npc/speccy_talk.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/speccy_talk.png-0e5075eaf8cca73ab16668de5d45d342.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/speccy_talk.png" +dest_files=[ "res://.import/speccy_talk.png-0e5075eaf8cca73ab16668de5d45d342.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/blood.png b/graphics/particles/blood.png index 99873a0..be971c9 100644 Binary files a/graphics/particles/blood.png and b/graphics/particles/blood.png differ diff --git a/graphics/particles/bubble.png b/graphics/particles/bubble.png new file mode 100644 index 0000000..56ed7d8 Binary files /dev/null and b/graphics/particles/bubble.png differ diff --git a/graphics/particles/bubble.png.import b/graphics/particles/bubble.png.import new file mode 100644 index 0000000..bf5f6d8 --- /dev/null +++ b/graphics/particles/bubble.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bubble.png-161ac864ae4d227c6f7027dcb5a47f62.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/bubble.png" +dest_files=[ "res://.import/bubble.png-161ac864ae4d227c6f7027dcb5a47f62.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/bullet_casing.png b/graphics/particles/bullet_casing.png new file mode 100644 index 0000000..6cb1c1d Binary files /dev/null and b/graphics/particles/bullet_casing.png differ diff --git a/graphics/particles/bullet_casing.png.import b/graphics/particles/bullet_casing.png.import new file mode 100644 index 0000000..56f415e --- /dev/null +++ b/graphics/particles/bullet_casing.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bullet_casing.png-8bc5e58567bcb82b42eb851699be796d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/bullet_casing.png" +dest_files=[ "res://.import/bullet_casing.png-8bc5e58567bcb82b42eb851699be796d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/dust.png b/graphics/particles/dust.png index 2b421f1..9531a48 100644 Binary files a/graphics/particles/dust.png and b/graphics/particles/dust.png differ diff --git a/graphics/particles/famira_blood.png b/graphics/particles/famira_blood.png new file mode 100644 index 0000000..54a8a2f Binary files /dev/null and b/graphics/particles/famira_blood.png differ diff --git a/graphics/particles/famira_blood.png.import b/graphics/particles/famira_blood.png.import new file mode 100644 index 0000000..795e7a3 --- /dev/null +++ b/graphics/particles/famira_blood.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_blood.png-66c7d485af49d3549856534ecea8b239.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/famira_blood.png" +dest_files=[ "res://.import/famira_blood.png-66c7d485af49d3549856534ecea8b239.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/glass_shard.png b/graphics/particles/glass_shard.png new file mode 100644 index 0000000..716eda1 Binary files /dev/null and b/graphics/particles/glass_shard.png differ diff --git a/graphics/particles/glass_shard.png.import b/graphics/particles/glass_shard.png.import new file mode 100644 index 0000000..e19b7b6 --- /dev/null +++ b/graphics/particles/glass_shard.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/glass_shard.png-9dc867929059fea83ab155e049de7ab1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/glass_shard.png" +dest_files=[ "res://.import/glass_shard.png-9dc867929059fea83ab155e049de7ab1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/goo.png b/graphics/particles/goo.png new file mode 100644 index 0000000..7c5918c Binary files /dev/null and b/graphics/particles/goo.png differ diff --git a/graphics/particles/goo.png.import b/graphics/particles/goo.png.import new file mode 100644 index 0000000..d09d993 --- /dev/null +++ b/graphics/particles/goo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/goo.png-02802c5ed00e67c8421d72a2c9c229ca.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/goo.png" +dest_files=[ "res://.import/goo.png-02802c5ed00e67c8421d72a2c9c229ca.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/goo_back.png b/graphics/particles/goo_back.png new file mode 100644 index 0000000..aa66c72 Binary files /dev/null and b/graphics/particles/goo_back.png differ diff --git a/graphics/particles/goo_back.png.import b/graphics/particles/goo_back.png.import new file mode 100644 index 0000000..1965010 --- /dev/null +++ b/graphics/particles/goo_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/goo_back.png-4ac48bbcb9cbbc9966601896a0aabf9d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/goo_back.png" +dest_files=[ "res://.import/goo_back.png-4ac48bbcb9cbbc9966601896a0aabf9d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/goo_trail.png b/graphics/particles/goo_trail.png new file mode 100644 index 0000000..c0ee926 Binary files /dev/null and b/graphics/particles/goo_trail.png differ diff --git a/graphics/particles/goo_trail.png.import b/graphics/particles/goo_trail.png.import new file mode 100644 index 0000000..9df839a --- /dev/null +++ b/graphics/particles/goo_trail.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/goo_trail.png-f255c69fac10319a6308214fbd2f5bb5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/goo_trail.png" +dest_files=[ "res://.import/goo_trail.png-f255c69fac10319a6308214fbd2f5bb5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/muzzle_flash.png b/graphics/particles/muzzle_flash.png new file mode 100644 index 0000000..8d94c63 Binary files /dev/null and b/graphics/particles/muzzle_flash.png differ diff --git a/graphics/particles/muzzle_flash.png.import b/graphics/particles/muzzle_flash.png.import new file mode 100644 index 0000000..8a804df --- /dev/null +++ b/graphics/particles/muzzle_flash.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/muzzle_flash.png-b54cbcced1f0d7a86670b4da7d4f76be.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/muzzle_flash.png" +dest_files=[ "res://.import/muzzle_flash.png-b54cbcced1f0d7a86670b4da7d4f76be.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/shine.png b/graphics/particles/shine.png new file mode 100644 index 0000000..2ab9021 Binary files /dev/null and b/graphics/particles/shine.png differ diff --git a/graphics/particles/shine.png.import b/graphics/particles/shine.png.import new file mode 100644 index 0000000..9f4a88c --- /dev/null +++ b/graphics/particles/shine.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shine.png-e490d9bf1bcf9743c95719a78e9f033e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/shine.png" +dest_files=[ "res://.import/shine.png-e490d9bf1bcf9743c95719a78e9f033e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/slime.png b/graphics/particles/slime.png new file mode 100644 index 0000000..5afc927 Binary files /dev/null and b/graphics/particles/slime.png differ diff --git a/graphics/particles/slime.png.import b/graphics/particles/slime.png.import new file mode 100644 index 0000000..f9130d9 --- /dev/null +++ b/graphics/particles/slime.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/slime.png-0c1cdefef5c663365373c826e991178b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/slime.png" +dest_files=[ "res://.import/slime.png-0c1cdefef5c663365373c826e991178b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/smoke.png b/graphics/particles/smoke.png new file mode 100644 index 0000000..6c478d9 Binary files /dev/null and b/graphics/particles/smoke.png differ diff --git a/graphics/particles/smoke.png.import b/graphics/particles/smoke.png.import new file mode 100644 index 0000000..f7b0016 --- /dev/null +++ b/graphics/particles/smoke.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/smoke.png-ec8443d9c944559763c6fb0b7caf4529.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/smoke.png" +dest_files=[ "res://.import/smoke.png-ec8443d9c944559763c6fb0b7caf4529.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/splash.png b/graphics/particles/splash.png new file mode 100644 index 0000000..50fe6c4 Binary files /dev/null and b/graphics/particles/splash.png differ diff --git a/graphics/particles/splash.png.import b/graphics/particles/splash.png.import new file mode 100644 index 0000000..7feac9c --- /dev/null +++ b/graphics/particles/splash.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/splash.png-a6ada3bebf5580104e880db2dd2dd744.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/splash.png" +dest_files=[ "res://.import/splash.png-a6ada3bebf5580104e880db2dd2dd744.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/stalactite.png b/graphics/particles/stalactite.png new file mode 100644 index 0000000..1b6b8fb Binary files /dev/null and b/graphics/particles/stalactite.png differ diff --git a/graphics/particles/stalactite.png.import b/graphics/particles/stalactite.png.import new file mode 100644 index 0000000..d0a56b4 --- /dev/null +++ b/graphics/particles/stalactite.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stalactite.png-7ff7cef7387b0ace5975d18a41208957.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/stalactite.png" +dest_files=[ "res://.import/stalactite.png-7ff7cef7387b0ace5975d18a41208957.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/arrow.png b/graphics/player/arrow.png index 4d7e9d2..14f7695 100644 Binary files a/graphics/player/arrow.png and b/graphics/player/arrow.png differ diff --git a/graphics/player/costume_wriggle.png b/graphics/player/costume_wriggle.png new file mode 100644 index 0000000..f570542 Binary files /dev/null and b/graphics/player/costume_wriggle.png differ diff --git a/graphics/player/costume_wriggle.png.import b/graphics/player/costume_wriggle.png.import new file mode 100644 index 0000000..6d49b1c --- /dev/null +++ b/graphics/player/costume_wriggle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/costume_wriggle.png-9a4503fad456a1616bc9300fa81a7e80.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/costume_wriggle.png" +dest_files=[ "res://.import/costume_wriggle.png-9a4503fad456a1616bc9300fa81a7e80.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/jump.png b/graphics/player/jump.png deleted file mode 100644 index e55f19d..0000000 Binary files a/graphics/player/jump.png and /dev/null differ diff --git a/graphics/player/jump.png.import b/graphics/player/jump.png.import deleted file mode 100644 index 488fdf9..0000000 --- a/graphics/player/jump.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/jump.png-695d33639e35e024c8003771673e09df.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/player/jump.png" -dest_files=[ "res://.import/jump.png-695d33639e35e024c8003771673e09df.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/player/pal_purplearmor.png b/graphics/player/pal_purplearmor.png deleted file mode 100644 index ff68eb2..0000000 Binary files a/graphics/player/pal_purplearmor.png and /dev/null differ diff --git a/graphics/player/pal_purplearmor.png.import b/graphics/player/pal_purplearmor.png.import deleted file mode 100644 index 52d2959..0000000 --- a/graphics/player/pal_purplearmor.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/pal_purplearmor.png-4be1df2c9bcaa98882b0b62f01cb851a.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/player/pal_purplearmor.png" -dest_files=[ "res://.import/pal_purplearmor.png-4be1df2c9bcaa98882b0b62f01cb851a.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/player/pal_sword_gold.png b/graphics/player/pal_sword_gold.png deleted file mode 100644 index 078f2e4..0000000 Binary files a/graphics/player/pal_sword_gold.png and /dev/null differ diff --git a/graphics/player/pal_sword_gold.png.import b/graphics/player/pal_sword_gold.png.import deleted file mode 100644 index ee049c7..0000000 --- a/graphics/player/pal_sword_gold.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/pal_sword_gold.png-00c27853a324f2c5a0dbbe0dd32019c5.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/player/pal_sword_gold.png" -dest_files=[ "res://.import/pal_sword_gold.png-00c27853a324f2c5a0dbbe0dd32019c5.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/player/pal_sword_teal.png b/graphics/player/pal_sword_teal.png deleted file mode 100644 index f677187..0000000 Binary files a/graphics/player/pal_sword_teal.png and /dev/null differ diff --git a/graphics/player/pal_sword_teal.png.import b/graphics/player/pal_sword_teal.png.import deleted file mode 100644 index 5ba13b9..0000000 --- a/graphics/player/pal_sword_teal.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/pal_sword_teal.png-c2b8715f85c3f3be264335534a88c7be.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/player/pal_sword_teal.png" -dest_files=[ "res://.import/pal_sword_teal.png-c2b8715f85c3f3be264335534a88c7be.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/player/palettes/blanc.tex b/graphics/player/palettes/blanc.tex new file mode 100644 index 0000000..0ea8906 Binary files /dev/null and b/graphics/player/palettes/blanc.tex differ diff --git a/graphics/player/palettes/bnw.png.import b/graphics/player/palettes/bnw.png.import new file mode 100644 index 0000000..db6307b --- /dev/null +++ b/graphics/player/palettes/bnw.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bnw.png-135cfdae7a1066f9a02b72b1d037a0c8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/bnw.png" +dest_files=[ "res://.import/bnw.png-135cfdae7a1066f9a02b72b1d037a0c8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/bnw.tex b/graphics/player/palettes/bnw.tex new file mode 100644 index 0000000..0887341 Binary files /dev/null and b/graphics/player/palettes/bnw.tex differ diff --git a/graphics/player/palettes/cave dweller.png.import b/graphics/player/palettes/cave dweller.png.import new file mode 100644 index 0000000..e024ebf --- /dev/null +++ b/graphics/player/palettes/cave dweller.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cave dweller.png-32afeb8b10dd658bba75c813db97ba7b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/cave dweller.png" +dest_files=[ "res://.import/cave dweller.png-32afeb8b10dd658bba75c813db97ba7b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/cave_dweller.tex b/graphics/player/palettes/cave_dweller.tex new file mode 100644 index 0000000..e5e69ef Binary files /dev/null and b/graphics/player/palettes/cave_dweller.tex differ diff --git a/graphics/player/palettes/costume_wriggle.tex b/graphics/player/palettes/costume_wriggle.tex new file mode 100644 index 0000000..9404af7 Binary files /dev/null and b/graphics/player/palettes/costume_wriggle.tex differ diff --git a/graphics/player/palettes/crocodibli.tex b/graphics/player/palettes/crocodibli.tex new file mode 100644 index 0000000..3a7d1d1 Binary files /dev/null and b/graphics/player/palettes/crocodibli.tex differ diff --git a/graphics/player/palettes/cyber_city.png.import b/graphics/player/palettes/cyber_city.png.import new file mode 100644 index 0000000..4fc6c42 --- /dev/null +++ b/graphics/player/palettes/cyber_city.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cyber_city.png-9afb23fdc2788ef5644663f47cffc4d5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/cyber_city.png" +dest_files=[ "res://.import/cyber_city.png-9afb23fdc2788ef5644663f47cffc4d5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/cyber_city.tex b/graphics/player/palettes/cyber_city.tex new file mode 100644 index 0000000..5435cb1 Binary files /dev/null and b/graphics/player/palettes/cyber_city.tex differ diff --git a/graphics/player/palettes/default.tex b/graphics/player/palettes/default.tex new file mode 100644 index 0000000..b583807 Binary files /dev/null and b/graphics/player/palettes/default.tex differ diff --git a/graphics/player/palettes/dmg.png.import b/graphics/player/palettes/dmg.png.import new file mode 100644 index 0000000..ea325c4 --- /dev/null +++ b/graphics/player/palettes/dmg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dmg.png-58de64a0a647a53f1c17134b2fe29f95.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/dmg.png" +dest_files=[ "res://.import/dmg.png-58de64a0a647a53f1c17134b2fe29f95.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/doggy.tex b/graphics/player/palettes/doggy.tex new file mode 100644 index 0000000..fdf5ea9 Binary files /dev/null and b/graphics/player/palettes/doggy.tex differ diff --git a/graphics/player/palettes/elaine.tex b/graphics/player/palettes/elaine.tex new file mode 100644 index 0000000..3337712 Binary files /dev/null and b/graphics/player/palettes/elaine.tex differ diff --git a/graphics/player/palettes/gayboy.tex b/graphics/player/palettes/gayboy.tex new file mode 100644 index 0000000..3a1544f Binary files /dev/null and b/graphics/player/palettes/gayboy.tex differ diff --git a/graphics/player/palettes/gravitational_redshift.tex b/graphics/player/palettes/gravitational_redshift.tex new file mode 100644 index 0000000..1ea5361 Binary files /dev/null and b/graphics/player/palettes/gravitational_redshift.tex differ diff --git a/graphics/player/palettes/ice mountain.png.import b/graphics/player/palettes/ice mountain.png.import new file mode 100644 index 0000000..4751221 --- /dev/null +++ b/graphics/player/palettes/ice mountain.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ice mountain.png-ebec2be22bf9751c02cb09871a8c45e1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/ice mountain.png" +dest_files=[ "res://.import/ice mountain.png-ebec2be22bf9751c02cb09871a8c45e1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/ice_mountain.tex b/graphics/player/palettes/ice_mountain.tex new file mode 100644 index 0000000..93a5b42 Binary files /dev/null and b/graphics/player/palettes/ice_mountain.tex differ diff --git a/graphics/player/palettes/lasertag.tex b/graphics/player/palettes/lasertag.tex new file mode 100644 index 0000000..9255579 Binary files /dev/null and b/graphics/player/palettes/lasertag.tex differ diff --git a/graphics/player/palettes/lucas.tex b/graphics/player/palettes/lucas.tex new file mode 100644 index 0000000..c1bfefe Binary files /dev/null and b/graphics/player/palettes/lucas.tex differ diff --git a/graphics/player/palettes/marza.png.import b/graphics/player/palettes/marza.png.import new file mode 100644 index 0000000..ef1fead --- /dev/null +++ b/graphics/player/palettes/marza.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/marza.png-58ff3b3d551293c32579f87949c6a3e4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/marza.png" +dest_files=[ "res://.import/marza.png-58ff3b3d551293c32579f87949c6a3e4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/marza.tex b/graphics/player/palettes/marza.tex new file mode 100644 index 0000000..83d022f Binary files /dev/null and b/graphics/player/palettes/marza.tex differ diff --git a/graphics/player/palettes/mibibli.tex b/graphics/player/palettes/mibibli.tex new file mode 100644 index 0000000..7cecd9b Binary files /dev/null and b/graphics/player/palettes/mibibli.tex differ diff --git a/graphics/player/palettes/msx.tex b/graphics/player/palettes/msx.tex new file mode 100644 index 0000000..3089444 Binary files /dev/null and b/graphics/player/palettes/msx.tex differ diff --git a/graphics/player/palettes/nightrunner.png.import b/graphics/player/palettes/nightrunner.png.import new file mode 100644 index 0000000..ed1d7a9 --- /dev/null +++ b/graphics/player/palettes/nightrunner.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/nightrunner.png-220d6d3608b72a9c74bd49c68c00703a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/nightrunner.png" +dest_files=[ "res://.import/nightrunner.png-220d6d3608b72a9c74bd49c68c00703a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/nightrunner.tex b/graphics/player/palettes/nightrunner.tex new file mode 100644 index 0000000..a9d3c79 Binary files /dev/null and b/graphics/player/palettes/nightrunner.tex differ diff --git a/graphics/player/palettes/noir.tex b/graphics/player/palettes/noir.tex new file mode 100644 index 0000000..135445c Binary files /dev/null and b/graphics/player/palettes/noir.tex differ diff --git a/graphics/player/palettes/pal_lucas.png.import b/graphics/player/palettes/pal_lucas.png.import new file mode 100644 index 0000000..2a21767 --- /dev/null +++ b/graphics/player/palettes/pal_lucas.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/pal_lucas.png-81b0d44d10248b62b099ec9240b0b682.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/pal_lucas.png" +dest_files=[ "res://.import/pal_lucas.png-81b0d44d10248b62b099ec9240b0b682.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/protector.png.import b/graphics/player/palettes/protector.png.import new file mode 100644 index 0000000..64a01ba --- /dev/null +++ b/graphics/player/palettes/protector.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/protector.png-f50c1fff60cd235780d378620459d0d4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/protector.png" +dest_files=[ "res://.import/protector.png-f50c1fff60cd235780d378620459d0d4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/protector.tex b/graphics/player/palettes/protector.tex new file mode 100644 index 0000000..7d7575f Binary files /dev/null and b/graphics/player/palettes/protector.tex differ diff --git a/graphics/player/palettes/seegee.tex b/graphics/player/palettes/seegee.tex new file mode 100644 index 0000000..40c6fb4 Binary files /dev/null and b/graphics/player/palettes/seegee.tex differ diff --git a/graphics/player/palettes/seejee.png.import b/graphics/player/palettes/seejee.png.import new file mode 100644 index 0000000..7786088 --- /dev/null +++ b/graphics/player/palettes/seejee.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seejee.png-7d8a374ab1e2679f0f2c2f92231a5cf9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/seejee.png" +dest_files=[ "res://.import/seejee.png-7d8a374ab1e2679f0f2c2f92231a5cf9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/sms.png.import b/graphics/player/palettes/sms.png.import new file mode 100644 index 0000000..f58832e --- /dev/null +++ b/graphics/player/palettes/sms.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sms.png-2076305d78f45f7154f78edf4e6198ec.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/sms.png" +dest_files=[ "res://.import/sms.png-2076305d78f45f7154f78edf4e6198ec.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/sms.tex b/graphics/player/palettes/sms.tex new file mode 100644 index 0000000..dac72f4 Binary files /dev/null and b/graphics/player/palettes/sms.tex differ diff --git a/graphics/player/palettes/strawberry.tex b/graphics/player/palettes/strawberry.tex new file mode 100644 index 0000000..a968338 Binary files /dev/null and b/graphics/player/palettes/strawberry.tex differ diff --git a/graphics/player/palettes/sunfish.png.import b/graphics/player/palettes/sunfish.png.import new file mode 100644 index 0000000..0032efc --- /dev/null +++ b/graphics/player/palettes/sunfish.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sunfish.png-806c70cbe509ade67d2059a5fef125e0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/sunfish.png" +dest_files=[ "res://.import/sunfish.png-806c70cbe509ade67d2059a5fef125e0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/super_player.tex b/graphics/player/palettes/super_player.tex new file mode 100644 index 0000000..1a1dc28 Binary files /dev/null and b/graphics/player/palettes/super_player.tex differ diff --git a/graphics/player/palettes/superman.tex b/graphics/player/palettes/superman.tex new file mode 100644 index 0000000..4edb1f6 Binary files /dev/null and b/graphics/player/palettes/superman.tex differ diff --git a/graphics/player/palettes/supersonic.tex b/graphics/player/palettes/supersonic.tex new file mode 100644 index 0000000..589af79 Binary files /dev/null and b/graphics/player/palettes/supersonic.tex differ diff --git a/graphics/player/palettes/telstar.png.import b/graphics/player/palettes/telstar.png.import new file mode 100644 index 0000000..aff7edf --- /dev/null +++ b/graphics/player/palettes/telstar.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/telstar.png-c306a9d1a4146b6776b12ff22fcf7be8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/telstar.png" +dest_files=[ "res://.import/telstar.png-c306a9d1a4146b6776b12ff22fcf7be8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/telstar.tex b/graphics/player/palettes/telstar.tex new file mode 100644 index 0000000..f5d723c Binary files /dev/null and b/graphics/player/palettes/telstar.tex differ diff --git a/graphics/player/palettes/thunder.png.import b/graphics/player/palettes/thunder.png.import new file mode 100644 index 0000000..31c04a5 --- /dev/null +++ b/graphics/player/palettes/thunder.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/thunder.png-8d4e24aa54fc1c7c78a6c379b675a905.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/thunder.png" +dest_files=[ "res://.import/thunder.png-8d4e24aa54fc1c7c78a6c379b675a905.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/trans_pride.tex b/graphics/player/palettes/trans_pride.tex new file mode 100644 index 0000000..b3c782f Binary files /dev/null and b/graphics/player/palettes/trans_pride.tex differ diff --git a/graphics/player/palettes/typhoon.png.import b/graphics/player/palettes/typhoon.png.import new file mode 100644 index 0000000..7e55f5b --- /dev/null +++ b/graphics/player/palettes/typhoon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/typhoon.png-a749b35eca97d2eb4710c73a2a548065.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/typhoon.png" +dest_files=[ "res://.import/typhoon.png-a749b35eca97d2eb4710c73a2a548065.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/typhoon.tex b/graphics/player/palettes/typhoon.tex new file mode 100644 index 0000000..c1da263 Binary files /dev/null and b/graphics/player/palettes/typhoon.tex differ diff --git a/graphics/player/palettes/unknown friend.png.import b/graphics/player/palettes/unknown friend.png.import new file mode 100644 index 0000000..855fc78 --- /dev/null +++ b/graphics/player/palettes/unknown friend.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/unknown friend.png-7db4fb0a2deaa6f8fcc674222592b145.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/unknown friend.png" +dest_files=[ "res://.import/unknown friend.png-7db4fb0a2deaa6f8fcc674222592b145.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/unknown_friend.tex b/graphics/player/palettes/unknown_friend.tex new file mode 100644 index 0000000..3d5b306 Binary files /dev/null and b/graphics/player/palettes/unknown_friend.tex differ diff --git a/graphics/player/palettes/wavebird.png.import b/graphics/player/palettes/wavebird.png.import new file mode 100644 index 0000000..4e864d5 --- /dev/null +++ b/graphics/player/palettes/wavebird.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/wavebird.png-aadfcb79425d8053ec5635f9b7d13ec4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/wavebird.png" +dest_files=[ "res://.import/wavebird.png-aadfcb79425d8053ec5635f9b7d13ec4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/wavebird.tex b/graphics/player/palettes/wavebird.tex new file mode 100644 index 0000000..92711a9 Binary files /dev/null and b/graphics/player/palettes/wavebird.tex differ diff --git a/graphics/player/palettes/yoonie.png.import b/graphics/player/palettes/yoonie.png.import new file mode 100644 index 0000000..fef57ac --- /dev/null +++ b/graphics/player/palettes/yoonie.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/yoonie.png-c534690bdd0d2a005e39a32fd10d60ae.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/yoonie.png" +dest_files=[ "res://.import/yoonie.png-c534690bdd0d2a005e39a32fd10d60ae.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/yoony.png.import b/graphics/player/palettes/yoony.png.import new file mode 100644 index 0000000..fb429c8 --- /dev/null +++ b/graphics/player/palettes/yoony.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/yoony.png-8b18663f7ac375ec64b9bdafd71bbcce.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/yoony.png" +dest_files=[ "res://.import/yoony.png-8b18663f7ac375ec64b9bdafd71bbcce.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg.png b/graphics/player/sg.png new file mode 100644 index 0000000..88aaab2 Binary files /dev/null and b/graphics/player/sg.png differ diff --git a/graphics/player/sg.png.import b/graphics/player/sg.png.import new file mode 100644 index 0000000..f3d94f8 --- /dev/null +++ b/graphics/player/sg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg.png-712e02c203f35b95a8377a73b65c9a2a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg.png" +dest_files=[ "res://.import/sg.png-712e02c203f35b95a8377a73b65c9a2a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_blink.png b/graphics/player/sg_blink.png new file mode 100644 index 0000000..18a88f5 Binary files /dev/null and b/graphics/player/sg_blink.png differ diff --git a/graphics/player/sg_blink.png.import b/graphics/player/sg_blink.png.import new file mode 100644 index 0000000..6ff40b1 --- /dev/null +++ b/graphics/player/sg_blink.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_blink.png-061b1aa02fe8cd8d1da97eb6f9cb9bd2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_blink.png" +dest_files=[ "res://.import/sg_blink.png-061b1aa02fe8cd8d1da97eb6f9cb9bd2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_bow.png b/graphics/player/sg_bow.png index de319b1..0b269d6 100644 Binary files a/graphics/player/sg_bow.png and b/graphics/player/sg_bow.png differ diff --git a/graphics/player/sg_climb.png b/graphics/player/sg_climb.png index 847c97b..43603cc 100644 Binary files a/graphics/player/sg_climb.png and b/graphics/player/sg_climb.png differ diff --git a/graphics/player/sg_doublejump.png b/graphics/player/sg_doublejump.png index d77733f..37936e9 100644 Binary files a/graphics/player/sg_doublejump.png and b/graphics/player/sg_doublejump.png differ diff --git a/graphics/player/sg_drown.png b/graphics/player/sg_drown.png new file mode 100644 index 0000000..0181be7 Binary files /dev/null and b/graphics/player/sg_drown.png differ diff --git a/graphics/player/sg_drown.png.import b/graphics/player/sg_drown.png.import new file mode 100644 index 0000000..cc3418c --- /dev/null +++ b/graphics/player/sg_drown.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_drown.png-9f3aae90e49cac8847cdd0ba90cfe464.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_drown.png" +dest_files=[ "res://.import/sg_drown.png-9f3aae90e49cac8847cdd0ba90cfe464.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_duck.png b/graphics/player/sg_duck.png new file mode 100644 index 0000000..26d8e44 Binary files /dev/null and b/graphics/player/sg_duck.png differ diff --git a/graphics/player/sg_duck.png.import b/graphics/player/sg_duck.png.import new file mode 100644 index 0000000..c966fe5 --- /dev/null +++ b/graphics/player/sg_duck.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_duck.png-2c4af6f61584cc7699021d5bd8cdd8a4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_duck.png" +dest_files=[ "res://.import/sg_duck.png-2c4af6f61584cc7699021d5bd8cdd8a4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_edge.png b/graphics/player/sg_edge.png new file mode 100644 index 0000000..de8bdd8 Binary files /dev/null and b/graphics/player/sg_edge.png differ diff --git a/graphics/player/sg_edge.png.import b/graphics/player/sg_edge.png.import new file mode 100644 index 0000000..d7e417b --- /dev/null +++ b/graphics/player/sg_edge.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_edge.png-3b7ab88abecd3b7d4299c2110085e970.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_edge.png" +dest_files=[ "res://.import/sg_edge.png-3b7ab88abecd3b7d4299c2110085e970.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_fall.png b/graphics/player/sg_fall.png new file mode 100644 index 0000000..3937170 Binary files /dev/null and b/graphics/player/sg_fall.png differ diff --git a/graphics/player/sg_fall.png.import b/graphics/player/sg_fall.png.import new file mode 100644 index 0000000..6096528 --- /dev/null +++ b/graphics/player/sg_fall.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_fall.png-8ac8242c36830eb8cb608db4b96378d3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_fall.png" +dest_files=[ "res://.import/sg_fall.png-8ac8242c36830eb8cb608db4b96378d3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_fall_scared.png b/graphics/player/sg_fall_scared.png new file mode 100644 index 0000000..446b3f0 Binary files /dev/null and b/graphics/player/sg_fall_scared.png differ diff --git a/graphics/player/sg_fall_scared.png.import b/graphics/player/sg_fall_scared.png.import new file mode 100644 index 0000000..53f1f33 --- /dev/null +++ b/graphics/player/sg_fall_scared.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_fall_scared.png-5d09bfcf952ef301fc60700a81d09a31.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_fall_scared.png" +dest_files=[ "res://.import/sg_fall_scared.png-5d09bfcf952ef301fc60700a81d09a31.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_headphones.png b/graphics/player/sg_headphones.png new file mode 100644 index 0000000..fe36878 Binary files /dev/null and b/graphics/player/sg_headphones.png differ diff --git a/graphics/player/sg_headphones.png.import b/graphics/player/sg_headphones.png.import new file mode 100644 index 0000000..e85fc24 --- /dev/null +++ b/graphics/player/sg_headphones.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_headphones.png-786539fc8b251a584407dfd1c925e629.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_headphones.png" +dest_files=[ "res://.import/sg_headphones.png-786539fc8b251a584407dfd1c925e629.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_idle.png b/graphics/player/sg_idle.png index 79453dd..d3660d7 100644 Binary files a/graphics/player/sg_idle.png and b/graphics/player/sg_idle.png differ diff --git a/graphics/player/sg_jump.png b/graphics/player/sg_jump.png new file mode 100644 index 0000000..c12f10a Binary files /dev/null and b/graphics/player/sg_jump.png differ diff --git a/graphics/player/sg_jump.png.import b/graphics/player/sg_jump.png.import new file mode 100644 index 0000000..3af1a04 --- /dev/null +++ b/graphics/player/sg_jump.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_jump.png-2f20bbb39eaeddb7a35a1fe707095356.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_jump.png" +dest_files=[ "res://.import/sg_jump.png-2f20bbb39eaeddb7a35a1fe707095356.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_jump_ladder.png b/graphics/player/sg_jump_ladder.png new file mode 100644 index 0000000..b5509c2 Binary files /dev/null and b/graphics/player/sg_jump_ladder.png differ diff --git a/graphics/player/sg_jump_ladder.png.import b/graphics/player/sg_jump_ladder.png.import new file mode 100644 index 0000000..d5501dc --- /dev/null +++ b/graphics/player/sg_jump_ladder.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_jump_ladder.png-47f6c448f8443f8066f4d7e915150ff9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_jump_ladder.png" +dest_files=[ "res://.import/sg_jump_ladder.png-47f6c448f8443f8066f4d7e915150ff9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_particles_mask.png b/graphics/player/sg_particles_mask.png new file mode 100644 index 0000000..5e79306 Binary files /dev/null and b/graphics/player/sg_particles_mask.png differ diff --git a/graphics/player/sg_particles_mask.png.import b/graphics/player/sg_particles_mask.png.import new file mode 100644 index 0000000..d2e7566 --- /dev/null +++ b/graphics/player/sg_particles_mask.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_particles_mask.png-c9c7f43473087b6f629bc945f72d141f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_particles_mask.png" +dest_files=[ "res://.import/sg_particles_mask.png-c9c7f43473087b6f629bc945f72d141f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_push.png b/graphics/player/sg_push.png new file mode 100644 index 0000000..425cd07 Binary files /dev/null and b/graphics/player/sg_push.png differ diff --git a/graphics/player/sg_push.png.import b/graphics/player/sg_push.png.import new file mode 100644 index 0000000..98d537b --- /dev/null +++ b/graphics/player/sg_push.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_push.png-b5f08f60752bffda7789fdaccf5e5e09.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_push.png" +dest_files=[ "res://.import/sg_push.png-b5f08f60752bffda7789fdaccf5e5e09.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_respawn.png b/graphics/player/sg_respawn.png new file mode 100644 index 0000000..35ca9b1 Binary files /dev/null and b/graphics/player/sg_respawn.png differ diff --git a/graphics/player/sg_respawn.png.import b/graphics/player/sg_respawn.png.import new file mode 100644 index 0000000..6083c74 --- /dev/null +++ b/graphics/player/sg_respawn.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_respawn.png-83125dc5d93640f1f36a4388495f77b6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_respawn.png" +dest_files=[ "res://.import/sg_respawn.png-83125dc5d93640f1f36a4388495f77b6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_shoot.png b/graphics/player/sg_shoot.png index 937cc4c..8abddd5 100644 Binary files a/graphics/player/sg_shoot.png and b/graphics/player/sg_shoot.png differ diff --git a/graphics/player/sg_shoot_air.png b/graphics/player/sg_shoot_air.png index 1118f97..a53a717 100644 Binary files a/graphics/player/sg_shoot_air.png and b/graphics/player/sg_shoot_air.png differ diff --git a/graphics/player/sg_shoot_grounded.png b/graphics/player/sg_shoot_grounded.png index 4cbeae8..33faf1b 100644 Binary files a/graphics/player/sg_shoot_grounded.png and b/graphics/player/sg_shoot_grounded.png differ diff --git a/graphics/player/sg_slash.png b/graphics/player/sg_slash.png deleted file mode 100644 index dc612ff..0000000 Binary files a/graphics/player/sg_slash.png and /dev/null differ diff --git a/graphics/player/sg_slash.png.import b/graphics/player/sg_slash.png.import deleted file mode 100644 index 9c64666..0000000 --- a/graphics/player/sg_slash.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/sg_slash.png-b9382a5cd994dfa4416b6ba51b6f2e82.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/player/sg_slash.png" -dest_files=[ "res://.import/sg_slash.png-b9382a5cd994dfa4416b6ba51b6f2e82.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/player/sg_stab.png b/graphics/player/sg_stab.png index 02b1370..7b42f1e 100644 Binary files a/graphics/player/sg_stab.png and b/graphics/player/sg_stab.png differ diff --git a/graphics/player/sg_step.png b/graphics/player/sg_step.png new file mode 100644 index 0000000..62319a2 Binary files /dev/null and b/graphics/player/sg_step.png differ diff --git a/graphics/player/sg_step.png.import b/graphics/player/sg_step.png.import new file mode 100644 index 0000000..f27b874 --- /dev/null +++ b/graphics/player/sg_step.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_step.png-05fa404dd930772c6e0da48aaf383812.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_step.png" +dest_files=[ "res://.import/sg_step.png-05fa404dd930772c6e0da48aaf383812.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_stim.png b/graphics/player/sg_stim.png new file mode 100644 index 0000000..5a8c19d Binary files /dev/null and b/graphics/player/sg_stim.png differ diff --git a/graphics/player/sg_stim.png.import b/graphics/player/sg_stim.png.import new file mode 100644 index 0000000..eca8d39 --- /dev/null +++ b/graphics/player/sg_stim.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_stim.png-5dc11f85935d2bd053b2df3c37dfb0e9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_stim.png" +dest_files=[ "res://.import/sg_stim.png-5dc11f85935d2bd053b2df3c37dfb0e9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_swing.png b/graphics/player/sg_swing.png deleted file mode 100644 index 2daf962..0000000 Binary files a/graphics/player/sg_swing.png and /dev/null differ diff --git a/graphics/player/sg_swing.png.import b/graphics/player/sg_swing.png.import deleted file mode 100644 index d93c561..0000000 --- a/graphics/player/sg_swing.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/sg_swing.png-1db47eaaaf2ed5a1738acf5a9eb25b64.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/player/sg_swing.png" -dest_files=[ "res://.import/sg_swing.png-1db47eaaaf2ed5a1738acf5a9eb25b64.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/player/sg_sword.png b/graphics/player/sg_sword.png deleted file mode 100644 index be293e6..0000000 Binary files a/graphics/player/sg_sword.png and /dev/null differ diff --git a/graphics/player/sg_sword.png.import b/graphics/player/sg_sword.png.import deleted file mode 100644 index ec10fba..0000000 --- a/graphics/player/sg_sword.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/sg_sword.png-3a07cd2417fb17cc2f65d7fbb7fee774.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/player/sg_sword.png" -dest_files=[ "res://.import/sg_sword.png-3a07cd2417fb17cc2f65d7fbb7fee774.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/player/sg_walk.png b/graphics/player/sg_walk.png index 447a657..9c41c6f 100644 Binary files a/graphics/player/sg_walk.png and b/graphics/player/sg_walk.png differ diff --git a/graphics/player/sg_zap.png b/graphics/player/sg_zap.png new file mode 100644 index 0000000..21e41e9 Binary files /dev/null and b/graphics/player/sg_zap.png differ diff --git a/graphics/player/sg_zap.png.import b/graphics/player/sg_zap.png.import new file mode 100644 index 0000000..9063f0d --- /dev/null +++ b/graphics/player/sg_zap.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_zap.png-42b9645cdd95a12a23b467e9a2265eec.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_zap.png" +dest_files=[ "res://.import/sg_zap.png-42b9645cdd95a12a23b467e9a2265eec.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sword.png b/graphics/player/sword.png deleted file mode 100644 index 61afc86..0000000 Binary files a/graphics/player/sword.png and /dev/null differ diff --git a/graphics/player/sword.png.import b/graphics/player/sword.png.import deleted file mode 100644 index 5402ee5..0000000 --- a/graphics/player/sword.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/sword.png-d02aeb6ea6702cb3352af1da1b2206f3.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/player/sword.png" -dest_files=[ "res://.import/sword.png-d02aeb6ea6702cb3352af1da1b2206f3.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/player/sword_slash.png b/graphics/player/sword_slash.png deleted file mode 100644 index 02db565..0000000 Binary files a/graphics/player/sword_slash.png and /dev/null differ diff --git a/graphics/player/sword_slash.png.import b/graphics/player/sword_slash.png.import deleted file mode 100644 index 91f45d2..0000000 --- a/graphics/player/sword_slash.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/sword_slash.png-a734a066e481c52863aafde60d35a027.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/player/sword_slash.png" -dest_files=[ "res://.import/sword_slash.png-a734a066e481c52863aafde60d35a027.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/player/wriggle.png b/graphics/player/wriggle.png new file mode 100644 index 0000000..0b16b5a Binary files /dev/null and b/graphics/player/wriggle.png differ diff --git a/graphics/player/wriggle.png.import b/graphics/player/wriggle.png.import new file mode 100644 index 0000000..b7da9f9 --- /dev/null +++ b/graphics/player/wriggle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/wriggle.png-56d005c1d18e1b587ff1ec6e46f07087.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/wriggle.png" +dest_files=[ "res://.import/wriggle.png-56d005c1d18e1b587ff1ec6e46f07087.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/rock/crate.png b/graphics/rock/crate.png new file mode 100644 index 0000000..51fc96b Binary files /dev/null and b/graphics/rock/crate.png differ diff --git a/graphics/rock/crate.png.import b/graphics/rock/crate.png.import new file mode 100644 index 0000000..4ffb1f4 --- /dev/null +++ b/graphics/rock/crate.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/crate.png-54bfd00030ca25c3153cb46f1941a534.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/rock/crate.png" +dest_files=[ "res://.import/crate.png-54bfd00030ca25c3153cb46f1941a534.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/rock/rock.png b/graphics/rock/rock.png index 572a305..d4a99c7 100644 Binary files a/graphics/rock/rock.png and b/graphics/rock/rock.png differ diff --git a/graphics/secret/beach_ball.png b/graphics/secret/beach_ball.png new file mode 100644 index 0000000..9084870 Binary files /dev/null and b/graphics/secret/beach_ball.png differ diff --git a/graphics/secret/beach_ball.png.import b/graphics/secret/beach_ball.png.import new file mode 100644 index 0000000..5dda4ae --- /dev/null +++ b/graphics/secret/beach_ball.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/beach_ball.png-e07b98c5d77d49af97ff4c5c4d64091d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/secret/beach_ball.png" +dest_files=[ "res://.import/beach_ball.png-e07b98c5d77d49af97ff4c5c4d64091d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/secret/i_cant_take_it_anymore.png b/graphics/secret/i_cant_take_it_anymore.png new file mode 100644 index 0000000..07ac247 Binary files /dev/null and b/graphics/secret/i_cant_take_it_anymore.png differ diff --git a/graphics/secret/i_cant_take_it_anymore.png.import b/graphics/secret/i_cant_take_it_anymore.png.import new file mode 100644 index 0000000..a981b73 --- /dev/null +++ b/graphics/secret/i_cant_take_it_anymore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/i_cant_take_it_anymore.png-a6fca862d5327d0a1d51b8c12a8aabc4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/secret/i_cant_take_it_anymore.png" +dest_files=[ "res://.import/i_cant_take_it_anymore.png-a6fca862d5327d0a1d51b8c12a8aabc4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/secret/uncanny.png b/graphics/secret/uncanny.png new file mode 100644 index 0000000..dfa69b6 Binary files /dev/null and b/graphics/secret/uncanny.png differ diff --git a/graphics/secret/uncanny.png.import b/graphics/secret/uncanny.png.import new file mode 100644 index 0000000..54773b6 --- /dev/null +++ b/graphics/secret/uncanny.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/uncanny.png-a842bbb579fb6147c3e65cfee5536a0b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/secret/uncanny.png" +dest_files=[ "res://.import/uncanny.png-a842bbb579fb6147c3e65cfee5536a0b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/secret/zball.png b/graphics/secret/zball.png new file mode 100644 index 0000000..b7d4bcc Binary files /dev/null and b/graphics/secret/zball.png differ diff --git a/graphics/secret/zball.png.import b/graphics/secret/zball.png.import new file mode 100644 index 0000000..5ef6a12 --- /dev/null +++ b/graphics/secret/zball.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/zball.png-766d895c88e3cffc348d3ca2bc047df8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/secret/zball.png" +dest_files=[ "res://.import/zball.png-766d895c88e3cffc348d3ca2bc047df8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/secret/zball_glow.png b/graphics/secret/zball_glow.png new file mode 100644 index 0000000..c08e576 Binary files /dev/null and b/graphics/secret/zball_glow.png differ diff --git a/graphics/secret/zball_glow.png.import b/graphics/secret/zball_glow.png.import new file mode 100644 index 0000000..b808838 --- /dev/null +++ b/graphics/secret/zball_glow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/zball_glow.png-a903baaaddcbe84df17501813dffd3fd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/secret/zball_glow.png" +dest_files=[ "res://.import/zball_glow.png-a903baaaddcbe84df17501813dffd3fd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/sockbug/fullturn_strip10.png b/graphics/sockbug/fullturn_strip10.png new file mode 100644 index 0000000..322a7ac Binary files /dev/null and b/graphics/sockbug/fullturn_strip10.png differ diff --git a/graphics/sockbug/fullturn_strip10.png.import b/graphics/sockbug/fullturn_strip10.png.import new file mode 100644 index 0000000..f501780 --- /dev/null +++ b/graphics/sockbug/fullturn_strip10.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fullturn_strip10.png-5f5ea8947d5fc4f53c370dfffa30a486.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/sockbug/fullturn_strip10.png" +dest_files=[ "res://.import/fullturn_strip10.png-5f5ea8947d5fc4f53c370dfffa30a486.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/sockbug/walk_strip6.png b/graphics/sockbug/walk_strip6.png new file mode 100644 index 0000000..1220776 Binary files /dev/null and b/graphics/sockbug/walk_strip6.png differ diff --git a/graphics/sockbug/walk_strip6.png.import b/graphics/sockbug/walk_strip6.png.import new file mode 100644 index 0000000..50c41e8 --- /dev/null +++ b/graphics/sockbug/walk_strip6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/walk_strip6.png-b05978871fa10f8eeed77621aea2ecca.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/sockbug/walk_strip6.png" +dest_files=[ "res://.import/walk_strip6.png-b05978871fa10f8eeed77621aea2ecca.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/stalactite/stalactite.png b/graphics/stalactite/stalactite.png new file mode 100644 index 0000000..61c6eb9 Binary files /dev/null and b/graphics/stalactite/stalactite.png differ diff --git a/graphics/stalactite/stalactite.png.import b/graphics/stalactite/stalactite.png.import new file mode 100644 index 0000000..5509a03 --- /dev/null +++ b/graphics/stalactite/stalactite.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stalactite.png-02a1deb0032f5cd17ce906194b047729.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/stalactite/stalactite.png" +dest_files=[ "res://.import/stalactite.png-02a1deb0032f5cd17ce906194b047729.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/switches/button.png b/graphics/switches/button.png new file mode 100644 index 0000000..fd6e605 Binary files /dev/null and b/graphics/switches/button.png differ diff --git a/graphics/switches/button.png.import b/graphics/switches/button.png.import new file mode 100644 index 0000000..a15d81a --- /dev/null +++ b/graphics/switches/button.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/button.png-2e39dc35f27e72b64819be5d974ac0f1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/switches/button.png" +dest_files=[ "res://.import/button.png-2e39dc35f27e72b64819be5d974ac0f1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/abstract.png b/graphics/tiles/abstract.png new file mode 100644 index 0000000..505969a Binary files /dev/null and b/graphics/tiles/abstract.png differ diff --git a/graphics/tiles/abstract.png.import b/graphics/tiles/abstract.png.import new file mode 100644 index 0000000..5185f11 --- /dev/null +++ b/graphics/tiles/abstract.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/abstract.png-520d62bcdeefefeb95738be4737e0f66.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/abstract.png" +dest_files=[ "res://.import/abstract.png-520d62bcdeefefeb95738be4737e0f66.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/abyss.png b/graphics/tiles/abyss.png new file mode 100644 index 0000000..77a1b69 Binary files /dev/null and b/graphics/tiles/abyss.png differ diff --git a/graphics/tiles/abyss.png.import b/graphics/tiles/abyss.png.import new file mode 100644 index 0000000..628acf4 --- /dev/null +++ b/graphics/tiles/abyss.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/abyss.png-6103d4163b29dbc50f76fbe18bca735e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/abyss.png" +dest_files=[ "res://.import/abyss.png-6103d4163b29dbc50f76fbe18bca735e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/blood.tres b/graphics/tiles/blood.tres new file mode 100644 index 0000000..2b5aba1 --- /dev/null +++ b/graphics/tiles/blood.tres @@ -0,0 +1,14 @@ +[gd_resource type="AnimatedTexture" load_steps=4 format=2] + +[ext_resource path="res://graphics/tiles/blood_2.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/blood_1.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/blood_3.png" type="Texture" id=3] + +[resource] +frames = 3 +fps = 5.0 +frame_0/texture = ExtResource( 2 ) +frame_1/texture = ExtResource( 1 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 3 ) +frame_2/delay_sec = 0.0 diff --git a/graphics/tiles/blood_1.png b/graphics/tiles/blood_1.png new file mode 100644 index 0000000..1fbda5b Binary files /dev/null and b/graphics/tiles/blood_1.png differ diff --git a/graphics/tiles/blood_1.png.import b/graphics/tiles/blood_1.png.import new file mode 100644 index 0000000..4ac3023 --- /dev/null +++ b/graphics/tiles/blood_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/blood_1.png-39180aea054e22e31e47ee01e0b988d7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/blood_1.png" +dest_files=[ "res://.import/blood_1.png-39180aea054e22e31e47ee01e0b988d7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/blood_2.png b/graphics/tiles/blood_2.png new file mode 100644 index 0000000..106fd3b Binary files /dev/null and b/graphics/tiles/blood_2.png differ diff --git a/graphics/tiles/blood_2.png.import b/graphics/tiles/blood_2.png.import new file mode 100644 index 0000000..4211646 --- /dev/null +++ b/graphics/tiles/blood_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/blood_2.png-c233b28b4b2ace092d9a614d5bbc9eaa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/blood_2.png" +dest_files=[ "res://.import/blood_2.png-c233b28b4b2ace092d9a614d5bbc9eaa.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/blood_3.png b/graphics/tiles/blood_3.png new file mode 100644 index 0000000..d36ea37 Binary files /dev/null and b/graphics/tiles/blood_3.png differ diff --git a/graphics/tiles/blood_3.png.import b/graphics/tiles/blood_3.png.import new file mode 100644 index 0000000..fc129e8 --- /dev/null +++ b/graphics/tiles/blood_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/blood_3.png-bbe729359966ca836d1b7b1cd1f2cb01.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/blood_3.png" +dest_files=[ "res://.import/blood_3.png-bbe729359966ca836d1b7b1cd1f2cb01.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/blood_bottom.png b/graphics/tiles/blood_bottom.png new file mode 100644 index 0000000..f8c28e6 Binary files /dev/null and b/graphics/tiles/blood_bottom.png differ diff --git a/graphics/tiles/blood_bottom.png.import b/graphics/tiles/blood_bottom.png.import new file mode 100644 index 0000000..fef8bf4 --- /dev/null +++ b/graphics/tiles/blood_bottom.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/blood_bottom.png-d8a7fe91e8209fe74adce2bd66715ed1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/blood_bottom.png" +dest_files=[ "res://.import/blood_bottom.png-d8a7fe91e8209fe74adce2bd66715ed1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/canopy.png b/graphics/tiles/canopy.png index 2785358..684f2d9 100644 Binary files a/graphics/tiles/canopy.png and b/graphics/tiles/canopy.png differ diff --git a/graphics/tiles/cave.png b/graphics/tiles/cave.png index e8f463e..b458cdb 100644 Binary files a/graphics/tiles/cave.png and b/graphics/tiles/cave.png differ diff --git a/graphics/tiles/copper.png b/graphics/tiles/copper.png deleted file mode 100644 index ba6d6bb..0000000 Binary files a/graphics/tiles/copper.png and /dev/null differ diff --git a/graphics/tiles/factory.png b/graphics/tiles/factory.png index 1f069a6..ba07050 100644 Binary files a/graphics/tiles/factory.png and b/graphics/tiles/factory.png differ diff --git a/graphics/tiles/flower/flower_blue_1.png b/graphics/tiles/flower/flower_blue_1.png new file mode 100644 index 0000000..50ebca8 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_1.png differ diff --git a/graphics/tiles/flower/flower_blue_1.png.import b/graphics/tiles/flower/flower_blue_1.png.import new file mode 100644 index 0000000..700d13d --- /dev/null +++ b/graphics/tiles/flower/flower_blue_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_1.png-031b185dbdbecb0670035eac43014e80.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_1.png" +dest_files=[ "res://.import/flower_blue_1.png-031b185dbdbecb0670035eac43014e80.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_2.png b/graphics/tiles/flower/flower_blue_2.png new file mode 100644 index 0000000..045bd8b Binary files /dev/null and b/graphics/tiles/flower/flower_blue_2.png differ diff --git a/graphics/tiles/flower/flower_blue_2.png.import b/graphics/tiles/flower/flower_blue_2.png.import new file mode 100644 index 0000000..91b7571 --- /dev/null +++ b/graphics/tiles/flower/flower_blue_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_2.png-8f33eab5c1730ff88c15dccca75011c7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_2.png" +dest_files=[ "res://.import/flower_blue_2.png-8f33eab5c1730ff88c15dccca75011c7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_3.png b/graphics/tiles/flower/flower_blue_3.png new file mode 100644 index 0000000..c780ae7 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_3.png differ diff --git a/graphics/tiles/flower/flower_blue_3.png.import b/graphics/tiles/flower/flower_blue_3.png.import new file mode 100644 index 0000000..efb2eed --- /dev/null +++ b/graphics/tiles/flower/flower_blue_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_3.png-a29e2b0894d671e2bd76acb05600bc0b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_3.png" +dest_files=[ "res://.import/flower_blue_3.png-a29e2b0894d671e2bd76acb05600bc0b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_4.png b/graphics/tiles/flower/flower_blue_4.png new file mode 100644 index 0000000..bea91d0 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_4.png differ diff --git a/graphics/tiles/flower/flower_blue_4.png.import b/graphics/tiles/flower/flower_blue_4.png.import new file mode 100644 index 0000000..ffc1436 --- /dev/null +++ b/graphics/tiles/flower/flower_blue_4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_4.png-f6a55d87a764dedb0b3dc8fc57115e5e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_4.png" +dest_files=[ "res://.import/flower_blue_4.png-f6a55d87a764dedb0b3dc8fc57115e5e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_5.png b/graphics/tiles/flower/flower_blue_5.png new file mode 100644 index 0000000..4509569 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_5.png differ diff --git a/graphics/tiles/flower/flower_blue_5.png.import b/graphics/tiles/flower/flower_blue_5.png.import new file mode 100644 index 0000000..70a325b --- /dev/null +++ b/graphics/tiles/flower/flower_blue_5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_5.png-f045e6c2b09bd0ecb8326c94a7333072.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_5.png" +dest_files=[ "res://.import/flower_blue_5.png-f045e6c2b09bd0ecb8326c94a7333072.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_6.png b/graphics/tiles/flower/flower_blue_6.png new file mode 100644 index 0000000..ffb5559 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_6.png differ diff --git a/graphics/tiles/flower/flower_blue_6.png.import b/graphics/tiles/flower/flower_blue_6.png.import new file mode 100644 index 0000000..716c33b --- /dev/null +++ b/graphics/tiles/flower/flower_blue_6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_6.png-925e9ee9e0a2f39e30c14d95529b6b0c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_6.png" +dest_files=[ "res://.import/flower_blue_6.png-925e9ee9e0a2f39e30c14d95529b6b0c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_7.png b/graphics/tiles/flower/flower_blue_7.png new file mode 100644 index 0000000..4509569 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_7.png differ diff --git a/graphics/tiles/flower/flower_blue_7.png.import b/graphics/tiles/flower/flower_blue_7.png.import new file mode 100644 index 0000000..8525bb8 --- /dev/null +++ b/graphics/tiles/flower/flower_blue_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_7.png-e14aea798dac1d9a61884f722803760d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_7.png" +dest_files=[ "res://.import/flower_blue_7.png-e14aea798dac1d9a61884f722803760d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_8.png b/graphics/tiles/flower/flower_blue_8.png new file mode 100644 index 0000000..bea91d0 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_8.png differ diff --git a/graphics/tiles/flower/flower_blue_8.png.import b/graphics/tiles/flower/flower_blue_8.png.import new file mode 100644 index 0000000..02af55f --- /dev/null +++ b/graphics/tiles/flower/flower_blue_8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_8.png-22800ded7f6a218bdaff026fd4c1d97f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_8.png" +dest_files=[ "res://.import/flower_blue_8.png-22800ded7f6a218bdaff026fd4c1d97f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_1.png b/graphics/tiles/flower/flower_pink_1.png new file mode 100644 index 0000000..a16252f Binary files /dev/null and b/graphics/tiles/flower/flower_pink_1.png differ diff --git a/graphics/tiles/flower/flower_pink_1.png.import b/graphics/tiles/flower/flower_pink_1.png.import new file mode 100644 index 0000000..c258cb9 --- /dev/null +++ b/graphics/tiles/flower/flower_pink_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_1.png-e6849e2dbb5a1b419f4092e7e3c2a643.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_1.png" +dest_files=[ "res://.import/flower_pink_1.png-e6849e2dbb5a1b419f4092e7e3c2a643.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_2.png b/graphics/tiles/flower/flower_pink_2.png new file mode 100644 index 0000000..363f0ba Binary files /dev/null and b/graphics/tiles/flower/flower_pink_2.png differ diff --git a/graphics/tiles/flower/flower_pink_2.png.import b/graphics/tiles/flower/flower_pink_2.png.import new file mode 100644 index 0000000..7cbd008 --- /dev/null +++ b/graphics/tiles/flower/flower_pink_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_2.png-0b95a7b3af227f799231e3b4e8479365.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_2.png" +dest_files=[ "res://.import/flower_pink_2.png-0b95a7b3af227f799231e3b4e8479365.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_3.png b/graphics/tiles/flower/flower_pink_3.png new file mode 100644 index 0000000..ff2b232 Binary files /dev/null and b/graphics/tiles/flower/flower_pink_3.png differ diff --git a/graphics/tiles/flower/flower_pink_3.png.import b/graphics/tiles/flower/flower_pink_3.png.import new file mode 100644 index 0000000..eb0c08d --- /dev/null +++ b/graphics/tiles/flower/flower_pink_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_3.png-06ff9e9fa0c1abc4b149c14bab9f9068.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_3.png" +dest_files=[ "res://.import/flower_pink_3.png-06ff9e9fa0c1abc4b149c14bab9f9068.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_4.png b/graphics/tiles/flower/flower_pink_4.png new file mode 100644 index 0000000..6087ed5 Binary files /dev/null and b/graphics/tiles/flower/flower_pink_4.png differ diff --git a/graphics/tiles/flower/flower_pink_4.png.import b/graphics/tiles/flower/flower_pink_4.png.import new file mode 100644 index 0000000..621bab0 --- /dev/null +++ b/graphics/tiles/flower/flower_pink_4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_4.png-5756c02b17c1fffd188c07b8ddce6d09.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_4.png" +dest_files=[ "res://.import/flower_pink_4.png-5756c02b17c1fffd188c07b8ddce6d09.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_5.png b/graphics/tiles/flower/flower_pink_5.png new file mode 100644 index 0000000..ea122fc Binary files /dev/null and b/graphics/tiles/flower/flower_pink_5.png differ diff --git a/graphics/tiles/flower/flower_pink_5.png.import b/graphics/tiles/flower/flower_pink_5.png.import new file mode 100644 index 0000000..0453852 --- /dev/null +++ b/graphics/tiles/flower/flower_pink_5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_5.png-900f01d0b635a0b5f20d9071c27c84ce.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_5.png" +dest_files=[ "res://.import/flower_pink_5.png-900f01d0b635a0b5f20d9071c27c84ce.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_6.png b/graphics/tiles/flower/flower_pink_6.png new file mode 100644 index 0000000..4159018 Binary files /dev/null and b/graphics/tiles/flower/flower_pink_6.png differ diff --git a/graphics/tiles/flower/flower_pink_6.png.import b/graphics/tiles/flower/flower_pink_6.png.import new file mode 100644 index 0000000..aaaa3ec --- /dev/null +++ b/graphics/tiles/flower/flower_pink_6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_6.png-334aec2d68c6653dd0daa9fb3a8919c1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_6.png" +dest_files=[ "res://.import/flower_pink_6.png-334aec2d68c6653dd0daa9fb3a8919c1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_7.png b/graphics/tiles/flower/flower_pink_7.png new file mode 100644 index 0000000..ea122fc Binary files /dev/null and b/graphics/tiles/flower/flower_pink_7.png differ diff --git a/graphics/tiles/flower/flower_pink_7.png.import b/graphics/tiles/flower/flower_pink_7.png.import new file mode 100644 index 0000000..6ee5e25 --- /dev/null +++ b/graphics/tiles/flower/flower_pink_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_7.png-4b9becea393b6037fd182519621d86db.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_7.png" +dest_files=[ "res://.import/flower_pink_7.png-4b9becea393b6037fd182519621d86db.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_8.png b/graphics/tiles/flower/flower_pink_8.png new file mode 100644 index 0000000..6087ed5 Binary files /dev/null and b/graphics/tiles/flower/flower_pink_8.png differ diff --git a/graphics/tiles/flower/flower_pink_8.png.import b/graphics/tiles/flower/flower_pink_8.png.import new file mode 100644 index 0000000..ec67f34 --- /dev/null +++ b/graphics/tiles/flower/flower_pink_8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_8.png-d918ca44a7e9a01e5532d8b380c91136.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_8.png" +dest_files=[ "res://.import/flower_pink_8.png-d918ca44a7e9a01e5532d8b380c91136.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_1.png b/graphics/tiles/flower/flower_red_1.png new file mode 100644 index 0000000..545baed Binary files /dev/null and b/graphics/tiles/flower/flower_red_1.png differ diff --git a/graphics/tiles/flower/flower_red_1.png.import b/graphics/tiles/flower/flower_red_1.png.import new file mode 100644 index 0000000..1c8eb07 --- /dev/null +++ b/graphics/tiles/flower/flower_red_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_1.png-018d1bf8635b73940deff904ec212a21.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_1.png" +dest_files=[ "res://.import/flower_red_1.png-018d1bf8635b73940deff904ec212a21.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_2.png b/graphics/tiles/flower/flower_red_2.png new file mode 100644 index 0000000..690ab60 Binary files /dev/null and b/graphics/tiles/flower/flower_red_2.png differ diff --git a/graphics/tiles/flower/flower_red_2.png.import b/graphics/tiles/flower/flower_red_2.png.import new file mode 100644 index 0000000..2f8a0e5 --- /dev/null +++ b/graphics/tiles/flower/flower_red_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_2.png-4785c71a226172143eb720f08a1b9189.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_2.png" +dest_files=[ "res://.import/flower_red_2.png-4785c71a226172143eb720f08a1b9189.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_3.png b/graphics/tiles/flower/flower_red_3.png new file mode 100644 index 0000000..d90af5b Binary files /dev/null and b/graphics/tiles/flower/flower_red_3.png differ diff --git a/graphics/tiles/flower/flower_red_3.png.import b/graphics/tiles/flower/flower_red_3.png.import new file mode 100644 index 0000000..83d4086 --- /dev/null +++ b/graphics/tiles/flower/flower_red_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_3.png-9a8bd9d374443a4e4cb2974eac7e4a07.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_3.png" +dest_files=[ "res://.import/flower_red_3.png-9a8bd9d374443a4e4cb2974eac7e4a07.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_4.png b/graphics/tiles/flower/flower_red_4.png new file mode 100644 index 0000000..f225c90 Binary files /dev/null and b/graphics/tiles/flower/flower_red_4.png differ diff --git a/graphics/tiles/flower/flower_red_4.png.import b/graphics/tiles/flower/flower_red_4.png.import new file mode 100644 index 0000000..f5eb8d5 --- /dev/null +++ b/graphics/tiles/flower/flower_red_4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_4.png-3f2a74e8080fb073ef578c30dddae6ad.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_4.png" +dest_files=[ "res://.import/flower_red_4.png-3f2a74e8080fb073ef578c30dddae6ad.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_5.png b/graphics/tiles/flower/flower_red_5.png new file mode 100644 index 0000000..222a1d7 Binary files /dev/null and b/graphics/tiles/flower/flower_red_5.png differ diff --git a/graphics/tiles/flower/flower_red_5.png.import b/graphics/tiles/flower/flower_red_5.png.import new file mode 100644 index 0000000..14b5fbf --- /dev/null +++ b/graphics/tiles/flower/flower_red_5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_5.png-eb6ef4b9f7f8b718e298dcfe2344865e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_5.png" +dest_files=[ "res://.import/flower_red_5.png-eb6ef4b9f7f8b718e298dcfe2344865e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_6.png b/graphics/tiles/flower/flower_red_6.png new file mode 100644 index 0000000..0005bf2 Binary files /dev/null and b/graphics/tiles/flower/flower_red_6.png differ diff --git a/graphics/tiles/flower/flower_red_6.png.import b/graphics/tiles/flower/flower_red_6.png.import new file mode 100644 index 0000000..26fd1fd --- /dev/null +++ b/graphics/tiles/flower/flower_red_6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_6.png-40b47435511a6975b04662d51d2017f2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_6.png" +dest_files=[ "res://.import/flower_red_6.png-40b47435511a6975b04662d51d2017f2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_7.png b/graphics/tiles/flower/flower_red_7.png new file mode 100644 index 0000000..222a1d7 Binary files /dev/null and b/graphics/tiles/flower/flower_red_7.png differ diff --git a/graphics/tiles/flower/flower_red_7.png.import b/graphics/tiles/flower/flower_red_7.png.import new file mode 100644 index 0000000..9fdf844 --- /dev/null +++ b/graphics/tiles/flower/flower_red_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_7.png-7ad03e7a33570bee6eb55c6e6e68f182.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_7.png" +dest_files=[ "res://.import/flower_red_7.png-7ad03e7a33570bee6eb55c6e6e68f182.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_8.png b/graphics/tiles/flower/flower_red_8.png new file mode 100644 index 0000000..f225c90 Binary files /dev/null and b/graphics/tiles/flower/flower_red_8.png differ diff --git a/graphics/tiles/flower/flower_red_8.png.import b/graphics/tiles/flower/flower_red_8.png.import new file mode 100644 index 0000000..bfd5601 --- /dev/null +++ b/graphics/tiles/flower/flower_red_8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_8.png-99eb388e9beef4ea0b609843ab48b589.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_8.png" +dest_files=[ "res://.import/flower_red_8.png-99eb388e9beef4ea0b609843ab48b589.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower_blue.tres b/graphics/tiles/flower_blue.tres new file mode 100644 index 0000000..4b07488 --- /dev/null +++ b/graphics/tiles/flower_blue.tres @@ -0,0 +1,29 @@ +[gd_resource type="AnimatedTexture" load_steps=9 format=2] + +[ext_resource path="res://graphics/tiles/flower/flower_blue_4.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/flower/flower_blue_1.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/flower/flower_blue_7.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/flower/flower_blue_8.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/flower/flower_blue_3.png" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/flower/flower_blue_5.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/flower/flower_blue_6.png" type="Texture" id=7] +[ext_resource path="res://graphics/tiles/flower/flower_blue_2.png" type="Texture" id=8] + +[resource] +frames = 8 +fps = 10.0 +frame_0/texture = ExtResource( 2 ) +frame_1/texture = ExtResource( 8 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 5 ) +frame_2/delay_sec = 0.0 +frame_3/texture = ExtResource( 1 ) +frame_3/delay_sec = 0.0 +frame_4/texture = ExtResource( 6 ) +frame_4/delay_sec = 0.0 +frame_5/texture = ExtResource( 7 ) +frame_5/delay_sec = 0.0 +frame_6/texture = ExtResource( 3 ) +frame_6/delay_sec = 0.0 +frame_7/texture = ExtResource( 4 ) +frame_7/delay_sec = 0.0 diff --git a/graphics/tiles/flower_pink.tres b/graphics/tiles/flower_pink.tres new file mode 100644 index 0000000..a54fd0e --- /dev/null +++ b/graphics/tiles/flower_pink.tres @@ -0,0 +1,29 @@ +[gd_resource type="AnimatedTexture" load_steps=9 format=2] + +[ext_resource path="res://graphics/tiles/flower/flower_pink_5.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/flower/flower_pink_7.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/flower/flower_pink_1.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/flower/flower_pink_2.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/flower/flower_pink_3.png" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/flower/flower_pink_4.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/flower/flower_pink_6.png" type="Texture" id=7] +[ext_resource path="res://graphics/tiles/flower/flower_pink_8.png" type="Texture" id=8] + +[resource] +frames = 8 +fps = 10.0 +frame_0/texture = ExtResource( 3 ) +frame_1/texture = ExtResource( 4 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 5 ) +frame_2/delay_sec = 0.0 +frame_3/texture = ExtResource( 6 ) +frame_3/delay_sec = 0.0 +frame_4/texture = ExtResource( 1 ) +frame_4/delay_sec = 0.0 +frame_5/texture = ExtResource( 7 ) +frame_5/delay_sec = 0.0 +frame_6/texture = ExtResource( 2 ) +frame_6/delay_sec = 0.0 +frame_7/texture = ExtResource( 8 ) +frame_7/delay_sec = 0.0 diff --git a/graphics/tiles/flower_red.tres b/graphics/tiles/flower_red.tres new file mode 100644 index 0000000..1d3ff9e --- /dev/null +++ b/graphics/tiles/flower_red.tres @@ -0,0 +1,29 @@ +[gd_resource type="AnimatedTexture" load_steps=9 format=2] + +[ext_resource path="res://graphics/tiles/flower/flower_red_3.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/flower/flower_red_4.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/flower/flower_red_1.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/flower/flower_red_2.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/flower/flower_red_6.png" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/flower/flower_red_8.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/flower/flower_red_5.png" type="Texture" id=7] +[ext_resource path="res://graphics/tiles/flower/flower_red_7.png" type="Texture" id=8] + +[resource] +frames = 8 +fps = 10.0 +frame_0/texture = ExtResource( 3 ) +frame_1/texture = ExtResource( 4 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 1 ) +frame_2/delay_sec = 0.0 +frame_3/texture = ExtResource( 2 ) +frame_3/delay_sec = 0.0 +frame_4/texture = ExtResource( 7 ) +frame_4/delay_sec = 0.0 +frame_5/texture = ExtResource( 5 ) +frame_5/delay_sec = 0.0 +frame_6/texture = ExtResource( 8 ) +frame_6/delay_sec = 0.0 +frame_7/texture = ExtResource( 6 ) +frame_7/delay_sec = 0.0 diff --git a/graphics/tiles/grass.png b/graphics/tiles/grass.png index c04444b..4f846b9 100644 Binary files a/graphics/tiles/grass.png and b/graphics/tiles/grass.png differ diff --git a/graphics/tiles/horror.png b/graphics/tiles/horror.png new file mode 100644 index 0000000..a5f62cc Binary files /dev/null and b/graphics/tiles/horror.png differ diff --git a/graphics/tiles/horror.png.import b/graphics/tiles/horror.png.import new file mode 100644 index 0000000..5d3a568 --- /dev/null +++ b/graphics/tiles/horror.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/horror.png-146c7109211cea1eaef1c6ca6b7fb11a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/horror.png" +dest_files=[ "res://.import/horror.png-146c7109211cea1eaef1c6ca6b7fb11a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/laboratory.png b/graphics/tiles/laboratory.png new file mode 100644 index 0000000..f8fec7e Binary files /dev/null and b/graphics/tiles/laboratory.png differ diff --git a/graphics/tiles/laboratory.png.import b/graphics/tiles/laboratory.png.import new file mode 100644 index 0000000..84de99d --- /dev/null +++ b/graphics/tiles/laboratory.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/laboratory.png-0545cbfb34023b00be0869c971e50bc1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/laboratory.png" +dest_files=[ "res://.import/laboratory.png-0545cbfb34023b00be0869c971e50bc1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/ladders.png b/graphics/tiles/ladders.png new file mode 100644 index 0000000..4b0a87c Binary files /dev/null and b/graphics/tiles/ladders.png differ diff --git a/graphics/tiles/ladders.png.import b/graphics/tiles/ladders.png.import new file mode 100644 index 0000000..ebb26ca --- /dev/null +++ b/graphics/tiles/ladders.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ladders.png-fad535df6d272c91dc28fb6bfb5c295a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/ladders.png" +dest_files=[ "res://.import/ladders.png-fad535df6d272c91dc28fb6bfb5c295a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mountain.png b/graphics/tiles/mountain.png new file mode 100644 index 0000000..ed70d62 Binary files /dev/null and b/graphics/tiles/mountain.png differ diff --git a/graphics/tiles/mountain.png.import b/graphics/tiles/mountain.png.import new file mode 100644 index 0000000..73f832c --- /dev/null +++ b/graphics/tiles/mountain.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mountain.png-365ee0dff2824b1880f47f08612ca36a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mountain.png" +dest_files=[ "res://.import/mountain.png-365ee0dff2824b1880f47f08612ca36a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_1.png b/graphics/tiles/mushroom/mushroom_brown_1.png new file mode 100644 index 0000000..2a1b22e Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_1.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_1.png.import b/graphics/tiles/mushroom/mushroom_brown_1.png.import new file mode 100644 index 0000000..ec91f97 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_1.png-401bd86f525bf355d78fc3f9b7e776ef.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_1.png" +dest_files=[ "res://.import/mushroom_brown_1.png-401bd86f525bf355d78fc3f9b7e776ef.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_10.png b/graphics/tiles/mushroom/mushroom_brown_10.png new file mode 100644 index 0000000..437488b Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_10.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_10.png.import b/graphics/tiles/mushroom/mushroom_brown_10.png.import new file mode 100644 index 0000000..8795f7e --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_10.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_10.png-31cc2ad787a58abb32729fa87b073f5c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_10.png" +dest_files=[ "res://.import/mushroom_brown_10.png-31cc2ad787a58abb32729fa87b073f5c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_2.png b/graphics/tiles/mushroom/mushroom_brown_2.png new file mode 100644 index 0000000..437488b Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_2.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_2.png.import b/graphics/tiles/mushroom/mushroom_brown_2.png.import new file mode 100644 index 0000000..a99a9d1 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_2.png-fa7ee3e5b01f3a75f9468d6229f78026.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_2.png" +dest_files=[ "res://.import/mushroom_brown_2.png-fa7ee3e5b01f3a75f9468d6229f78026.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_3.png b/graphics/tiles/mushroom/mushroom_brown_3.png new file mode 100644 index 0000000..824d233 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_3.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_3.png.import b/graphics/tiles/mushroom/mushroom_brown_3.png.import new file mode 100644 index 0000000..3d98f74 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_3.png-9fe48fd32fe280f8215d3979badef3fc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_3.png" +dest_files=[ "res://.import/mushroom_brown_3.png-9fe48fd32fe280f8215d3979badef3fc.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_4.png b/graphics/tiles/mushroom/mushroom_brown_4.png new file mode 100644 index 0000000..48117eb Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_4.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_4.png.import b/graphics/tiles/mushroom/mushroom_brown_4.png.import new file mode 100644 index 0000000..aec2a34 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_4.png-e61bb5960cb2304358958de0616f4b97.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_4.png" +dest_files=[ "res://.import/mushroom_brown_4.png-e61bb5960cb2304358958de0616f4b97.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_5.png b/graphics/tiles/mushroom/mushroom_brown_5.png new file mode 100644 index 0000000..437488b Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_5.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_5.png.import b/graphics/tiles/mushroom/mushroom_brown_5.png.import new file mode 100644 index 0000000..7365c8b --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_5.png-f233f3c7217a5e90b729955950af2c67.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_5.png" +dest_files=[ "res://.import/mushroom_brown_5.png-f233f3c7217a5e90b729955950af2c67.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_6.png b/graphics/tiles/mushroom/mushroom_brown_6.png new file mode 100644 index 0000000..2a1b22e Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_6.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_6.png.import b/graphics/tiles/mushroom/mushroom_brown_6.png.import new file mode 100644 index 0000000..ba548dd --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_6.png-90bd4ce2116103033838b1b0f2f141fb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_6.png" +dest_files=[ "res://.import/mushroom_brown_6.png-90bd4ce2116103033838b1b0f2f141fb.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_7.png b/graphics/tiles/mushroom/mushroom_brown_7.png new file mode 100644 index 0000000..437488b Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_7.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_7.png.import b/graphics/tiles/mushroom/mushroom_brown_7.png.import new file mode 100644 index 0000000..b785cbf --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_7.png-0d5ac351baef08eb6d1e17a0c5fc50a3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_7.png" +dest_files=[ "res://.import/mushroom_brown_7.png-0d5ac351baef08eb6d1e17a0c5fc50a3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_8.png b/graphics/tiles/mushroom/mushroom_brown_8.png new file mode 100644 index 0000000..287b72b Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_8.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_8.png.import b/graphics/tiles/mushroom/mushroom_brown_8.png.import new file mode 100644 index 0000000..b3d2c16 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_8.png-8eedc17b1e7d9933375eced95d2d02b7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_8.png" +dest_files=[ "res://.import/mushroom_brown_8.png-8eedc17b1e7d9933375eced95d2d02b7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_9.png b/graphics/tiles/mushroom/mushroom_brown_9.png new file mode 100644 index 0000000..60d14dc Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_9.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_9.png.import b/graphics/tiles/mushroom/mushroom_brown_9.png.import new file mode 100644 index 0000000..0e6e2b6 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_9.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_9.png-67652fb610409e79b8edd9afbcc7c31f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_9.png" +dest_files=[ "res://.import/mushroom_brown_9.png-67652fb610409e79b8edd9afbcc7c31f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_1.png b/graphics/tiles/mushroom/mushroom_red_1.png new file mode 100644 index 0000000..7d1a09d Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_1.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_1.png.import b/graphics/tiles/mushroom/mushroom_red_1.png.import new file mode 100644 index 0000000..21edbce --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_1.png-9a70789e43e3a1d7c71d4775dce9e83d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_1.png" +dest_files=[ "res://.import/mushroom_red_1.png-9a70789e43e3a1d7c71d4775dce9e83d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_10.png b/graphics/tiles/mushroom/mushroom_red_10.png new file mode 100644 index 0000000..ba73f28 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_10.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_10.png.import b/graphics/tiles/mushroom/mushroom_red_10.png.import new file mode 100644 index 0000000..9255511 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_10.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_10.png-4adf98ea87edb9233853444e41dcb7d0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_10.png" +dest_files=[ "res://.import/mushroom_red_10.png-4adf98ea87edb9233853444e41dcb7d0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_2.png b/graphics/tiles/mushroom/mushroom_red_2.png new file mode 100644 index 0000000..ba73f28 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_2.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_2.png.import b/graphics/tiles/mushroom/mushroom_red_2.png.import new file mode 100644 index 0000000..d381e35 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_2.png-a407c62f5784dfa146553812b88495ae.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_2.png" +dest_files=[ "res://.import/mushroom_red_2.png-a407c62f5784dfa146553812b88495ae.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_3.png b/graphics/tiles/mushroom/mushroom_red_3.png new file mode 100644 index 0000000..e0e002e Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_3.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_3.png.import b/graphics/tiles/mushroom/mushroom_red_3.png.import new file mode 100644 index 0000000..c3c77c3 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_3.png-d35f042b87fbc5dc3415f5aec39cc383.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_3.png" +dest_files=[ "res://.import/mushroom_red_3.png-d35f042b87fbc5dc3415f5aec39cc383.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_4.png b/graphics/tiles/mushroom/mushroom_red_4.png new file mode 100644 index 0000000..b137e86 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_4.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_4.png.import b/graphics/tiles/mushroom/mushroom_red_4.png.import new file mode 100644 index 0000000..99d6aca --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_4.png-c5f5704ef785d379aebd95e4ca0eab91.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_4.png" +dest_files=[ "res://.import/mushroom_red_4.png-c5f5704ef785d379aebd95e4ca0eab91.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_5.png b/graphics/tiles/mushroom/mushroom_red_5.png new file mode 100644 index 0000000..ba73f28 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_5.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_5.png.import b/graphics/tiles/mushroom/mushroom_red_5.png.import new file mode 100644 index 0000000..7c0e08e --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_5.png-6ccb62525c0e98f5c4082031b48fe2d4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_5.png" +dest_files=[ "res://.import/mushroom_red_5.png-6ccb62525c0e98f5c4082031b48fe2d4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_6.png b/graphics/tiles/mushroom/mushroom_red_6.png new file mode 100644 index 0000000..7d1a09d Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_6.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_6.png.import b/graphics/tiles/mushroom/mushroom_red_6.png.import new file mode 100644 index 0000000..432936c --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_6.png-b6e0bd780b47ae66c720d5a2e04bc67a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_6.png" +dest_files=[ "res://.import/mushroom_red_6.png-b6e0bd780b47ae66c720d5a2e04bc67a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_7.png b/graphics/tiles/mushroom/mushroom_red_7.png new file mode 100644 index 0000000..ba73f28 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_7.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_7.png.import b/graphics/tiles/mushroom/mushroom_red_7.png.import new file mode 100644 index 0000000..34e5386 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_7.png-edaf25e610cee98192ef6000bbb3ab83.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_7.png" +dest_files=[ "res://.import/mushroom_red_7.png-edaf25e610cee98192ef6000bbb3ab83.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_8.png b/graphics/tiles/mushroom/mushroom_red_8.png new file mode 100644 index 0000000..569eefa Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_8.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_8.png.import b/graphics/tiles/mushroom/mushroom_red_8.png.import new file mode 100644 index 0000000..dd516c3 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_8.png-a0632ee6bfec178e5f3bb526658e0037.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_8.png" +dest_files=[ "res://.import/mushroom_red_8.png-a0632ee6bfec178e5f3bb526658e0037.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_9.png b/graphics/tiles/mushroom/mushroom_red_9.png new file mode 100644 index 0000000..5d4cce6 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_9.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_9.png.import b/graphics/tiles/mushroom/mushroom_red_9.png.import new file mode 100644 index 0000000..55a3875 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_9.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_9.png-d61749f213201957125a2b3bb6d019f4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_9.png" +dest_files=[ "res://.import/mushroom_red_9.png-d61749f213201957125a2b3bb6d019f4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom_brown.tres b/graphics/tiles/mushroom_brown.tres new file mode 100644 index 0000000..ee73b7b --- /dev/null +++ b/graphics/tiles/mushroom_brown.tres @@ -0,0 +1,35 @@ +[gd_resource type="AnimatedTexture" load_steps=11 format=2] + +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_4.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_8.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_7.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_6.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_1.png" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_2.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_3.png" type="Texture" id=7] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_5.png" type="Texture" id=8] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_10.png" type="Texture" id=9] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_9.png" type="Texture" id=10] + +[resource] +frames = 10 +fps = 9.0 +frame_0/texture = ExtResource( 5 ) +frame_1/texture = ExtResource( 6 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 7 ) +frame_2/delay_sec = 0.0 +frame_3/texture = ExtResource( 1 ) +frame_3/delay_sec = 0.0 +frame_4/texture = ExtResource( 8 ) +frame_4/delay_sec = 0.0 +frame_5/texture = ExtResource( 4 ) +frame_5/delay_sec = 0.0 +frame_6/texture = ExtResource( 3 ) +frame_6/delay_sec = 0.0 +frame_7/texture = ExtResource( 2 ) +frame_7/delay_sec = 0.0 +frame_8/texture = ExtResource( 10 ) +frame_8/delay_sec = 0.0 +frame_9/texture = ExtResource( 9 ) +frame_9/delay_sec = 0.0 diff --git a/graphics/tiles/mushroom_red.png b/graphics/tiles/mushroom_red.png new file mode 100644 index 0000000..88eb518 Binary files /dev/null and b/graphics/tiles/mushroom_red.png differ diff --git a/graphics/tiles/mushroom_red.png.import b/graphics/tiles/mushroom_red.png.import new file mode 100644 index 0000000..575a1dc --- /dev/null +++ b/graphics/tiles/mushroom_red.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red.png-eb8a844ed7c445c341d0b52362b87ffa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom_red.png" +dest_files=[ "res://.import/mushroom_red.png-eb8a844ed7c445c341d0b52362b87ffa.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom_red.tres b/graphics/tiles/mushroom_red.tres new file mode 100644 index 0000000..4ee5d9a --- /dev/null +++ b/graphics/tiles/mushroom_red.tres @@ -0,0 +1,35 @@ +[gd_resource type="AnimatedTexture" load_steps=11 format=2] + +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_7.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_1.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_9.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_6.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_4.png" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_2.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_8.png" type="Texture" id=7] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_3.png" type="Texture" id=8] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_5.png" type="Texture" id=9] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_10.png" type="Texture" id=10] + +[resource] +frames = 10 +fps = 9.0 +frame_0/texture = ExtResource( 2 ) +frame_1/texture = ExtResource( 6 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 8 ) +frame_2/delay_sec = 0.0 +frame_3/texture = ExtResource( 5 ) +frame_3/delay_sec = 0.0 +frame_4/texture = ExtResource( 9 ) +frame_4/delay_sec = 0.0 +frame_5/texture = ExtResource( 4 ) +frame_5/delay_sec = 0.0 +frame_6/texture = ExtResource( 1 ) +frame_6/delay_sec = 0.0 +frame_7/texture = ExtResource( 7 ) +frame_7/delay_sec = 0.0 +frame_8/texture = ExtResource( 3 ) +frame_8/delay_sec = 0.0 +frame_9/texture = ExtResource( 10 ) +frame_9/delay_sec = 0.0 diff --git a/graphics/tiles/oil.tres b/graphics/tiles/oil.tres new file mode 100644 index 0000000..29ebc9c --- /dev/null +++ b/graphics/tiles/oil.tres @@ -0,0 +1,14 @@ +[gd_resource type="AnimatedTexture" load_steps=4 format=2] + +[ext_resource path="res://graphics/tiles/oil_2.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/oil_1.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/oil_3.png" type="Texture" id=3] + +[resource] +frames = 3 +fps = 5.0 +frame_0/texture = ExtResource( 2 ) +frame_1/texture = ExtResource( 1 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 3 ) +frame_2/delay_sec = 0.0 diff --git a/graphics/tiles/oil_1.png b/graphics/tiles/oil_1.png new file mode 100644 index 0000000..347c594 Binary files /dev/null and b/graphics/tiles/oil_1.png differ diff --git a/graphics/tiles/oil_1.png.import b/graphics/tiles/oil_1.png.import new file mode 100644 index 0000000..ab77478 --- /dev/null +++ b/graphics/tiles/oil_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oil_1.png-71a0c20092e1b028d894b8f235c01f34.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/oil_1.png" +dest_files=[ "res://.import/oil_1.png-71a0c20092e1b028d894b8f235c01f34.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/oil_2.png b/graphics/tiles/oil_2.png new file mode 100644 index 0000000..0e526f5 Binary files /dev/null and b/graphics/tiles/oil_2.png differ diff --git a/graphics/tiles/oil_2.png.import b/graphics/tiles/oil_2.png.import new file mode 100644 index 0000000..ae7ef71 --- /dev/null +++ b/graphics/tiles/oil_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oil_2.png-06401b4492a3087417e24a5a742c996b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/oil_2.png" +dest_files=[ "res://.import/oil_2.png-06401b4492a3087417e24a5a742c996b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/oil_3.png b/graphics/tiles/oil_3.png new file mode 100644 index 0000000..412a449 Binary files /dev/null and b/graphics/tiles/oil_3.png differ diff --git a/graphics/tiles/oil_3.png.import b/graphics/tiles/oil_3.png.import new file mode 100644 index 0000000..5abd370 --- /dev/null +++ b/graphics/tiles/oil_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oil_3.png-cb7837d3212870c5dec358b2c4d92ec5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/oil_3.png" +dest_files=[ "res://.import/oil_3.png-cb7837d3212870c5dec358b2c4d92ec5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/oil_bottom.png b/graphics/tiles/oil_bottom.png new file mode 100644 index 0000000..c9a2123 Binary files /dev/null and b/graphics/tiles/oil_bottom.png differ diff --git a/graphics/tiles/oil_bottom.png.import b/graphics/tiles/oil_bottom.png.import new file mode 100644 index 0000000..edd2e8e --- /dev/null +++ b/graphics/tiles/oil_bottom.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oil_bottom.png-54a30e61dae210f9fb93ef8952d0fea8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/oil_bottom.png" +dest_files=[ "res://.import/oil_bottom.png-54a30e61dae210f9fb93ef8952d0fea8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/rust.png b/graphics/tiles/rust.png new file mode 100644 index 0000000..35ee423 Binary files /dev/null and b/graphics/tiles/rust.png differ diff --git a/graphics/tiles/rust.png.import b/graphics/tiles/rust.png.import new file mode 100644 index 0000000..bf17637 --- /dev/null +++ b/graphics/tiles/rust.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/rust.png-884f4f9da08c6a795a34abede7ae237d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/rust.png" +dest_files=[ "res://.import/rust.png-884f4f9da08c6a795a34abede7ae237d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed.png b/graphics/tiles/seaweed.png new file mode 100644 index 0000000..5516cdf Binary files /dev/null and b/graphics/tiles/seaweed.png differ diff --git a/graphics/tiles/seaweed.png.import b/graphics/tiles/seaweed.png.import new file mode 100644 index 0000000..3ae9d0d --- /dev/null +++ b/graphics/tiles/seaweed.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed.png-4464300af079a1c1f3aea40f8ab5a4b1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed.png" +dest_files=[ "res://.import/seaweed.png-4464300af079a1c1f3aea40f8ab5a4b1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed.tres b/graphics/tiles/seaweed.tres new file mode 100644 index 0000000..963beae --- /dev/null +++ b/graphics/tiles/seaweed.tres @@ -0,0 +1,26 @@ +[gd_resource type="AnimatedTexture" load_steps=8 format=2] + +[ext_resource path="res://graphics/tiles/seaweed/seaweed_5.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/seaweed/seaweed_2.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/seaweed/seaweed_4.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/seaweed/seaweed_1.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/seaweed/seaweed_3.png" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/seaweed/seaweed_7.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/seaweed/seaweed_6.png" type="Texture" id=7] + +[resource] +frames = 7 +fps = 10.0 +frame_0/texture = ExtResource( 4 ) +frame_1/texture = ExtResource( 2 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 5 ) +frame_2/delay_sec = 0.0 +frame_3/texture = ExtResource( 3 ) +frame_3/delay_sec = 0.0 +frame_4/texture = ExtResource( 1 ) +frame_4/delay_sec = 0.0 +frame_5/texture = ExtResource( 7 ) +frame_5/delay_sec = 0.0 +frame_6/texture = ExtResource( 6 ) +frame_6/delay_sec = 0.0 diff --git a/graphics/tiles/seaweed/seaweed_1.png b/graphics/tiles/seaweed/seaweed_1.png new file mode 100644 index 0000000..2559f96 Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_1.png differ diff --git a/graphics/tiles/seaweed/seaweed_1.png.import b/graphics/tiles/seaweed/seaweed_1.png.import new file mode 100644 index 0000000..fb2d384 --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_1.png-ff447e1bdd3f1fd9714fd980fc918b30.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_1.png" +dest_files=[ "res://.import/seaweed_1.png-ff447e1bdd3f1fd9714fd980fc918b30.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed/seaweed_2.png b/graphics/tiles/seaweed/seaweed_2.png new file mode 100644 index 0000000..6cd964b Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_2.png differ diff --git a/graphics/tiles/seaweed/seaweed_2.png.import b/graphics/tiles/seaweed/seaweed_2.png.import new file mode 100644 index 0000000..f43cee7 --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_2.png-9e111a46944f7b1f355e0ade6a856490.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_2.png" +dest_files=[ "res://.import/seaweed_2.png-9e111a46944f7b1f355e0ade6a856490.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed/seaweed_3.png b/graphics/tiles/seaweed/seaweed_3.png new file mode 100644 index 0000000..efc3349 Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_3.png differ diff --git a/graphics/tiles/seaweed/seaweed_3.png.import b/graphics/tiles/seaweed/seaweed_3.png.import new file mode 100644 index 0000000..5d045ce --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_3.png-9b13f282b82aa12623bf67ead45168a1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_3.png" +dest_files=[ "res://.import/seaweed_3.png-9b13f282b82aa12623bf67ead45168a1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed/seaweed_4.png b/graphics/tiles/seaweed/seaweed_4.png new file mode 100644 index 0000000..efc3349 Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_4.png differ diff --git a/graphics/tiles/seaweed/seaweed_4.png.import b/graphics/tiles/seaweed/seaweed_4.png.import new file mode 100644 index 0000000..d32f5c3 --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_4.png-c04f3994d69c385c853bfd856241b874.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_4.png" +dest_files=[ "res://.import/seaweed_4.png-c04f3994d69c385c853bfd856241b874.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed/seaweed_5.png b/graphics/tiles/seaweed/seaweed_5.png new file mode 100644 index 0000000..2559f96 Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_5.png differ diff --git a/graphics/tiles/seaweed/seaweed_5.png.import b/graphics/tiles/seaweed/seaweed_5.png.import new file mode 100644 index 0000000..12fc3d6 --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_5.png-29721519185c8df0cf66d1b5c542f645.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_5.png" +dest_files=[ "res://.import/seaweed_5.png-29721519185c8df0cf66d1b5c542f645.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed/seaweed_6.png b/graphics/tiles/seaweed/seaweed_6.png new file mode 100644 index 0000000..44b82e2 Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_6.png differ diff --git a/graphics/tiles/seaweed/seaweed_6.png.import b/graphics/tiles/seaweed/seaweed_6.png.import new file mode 100644 index 0000000..41b6ecf --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_6.png-0817e041e4cd4e4c3a85526515737899.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_6.png" +dest_files=[ "res://.import/seaweed_6.png-0817e041e4cd4e4c3a85526515737899.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed/seaweed_7.png b/graphics/tiles/seaweed/seaweed_7.png new file mode 100644 index 0000000..c77fba2 Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_7.png differ diff --git a/graphics/tiles/seaweed/seaweed_7.png.import b/graphics/tiles/seaweed/seaweed_7.png.import new file mode 100644 index 0000000..2e616cb --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_7.png-2514061e7b232c6d32ae3101ae99d4ee.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_7.png" +dest_files=[ "res://.import/seaweed_7.png-2514061e7b232c6d32ae3101ae99d4ee.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/spike.png b/graphics/tiles/spike.png index 64898e7..3a7f977 100644 Binary files a/graphics/tiles/spike.png and b/graphics/tiles/spike.png differ diff --git a/graphics/tiles/station.png b/graphics/tiles/station.png new file mode 100644 index 0000000..f3a38ce Binary files /dev/null and b/graphics/tiles/station.png differ diff --git a/graphics/tiles/station.png.import b/graphics/tiles/station.png.import new file mode 100644 index 0000000..3e61cc9 --- /dev/null +++ b/graphics/tiles/station.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/station.png-4eb11027802e381a956d4abc935ed543.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/station.png" +dest_files=[ "res://.import/station.png-4eb11027802e381a956d4abc935ed543.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/water_1.png b/graphics/tiles/water_1.png index b215f63..674d983 100644 Binary files a/graphics/tiles/water_1.png and b/graphics/tiles/water_1.png differ diff --git a/graphics/tiles/water_2.png b/graphics/tiles/water_2.png index f81b5f9..00589f1 100644 Binary files a/graphics/tiles/water_2.png and b/graphics/tiles/water_2.png differ diff --git a/graphics/tiles/water_light.tres b/graphics/tiles/water_light.tres new file mode 100644 index 0000000..e5c074a --- /dev/null +++ b/graphics/tiles/water_light.tres @@ -0,0 +1,14 @@ +[gd_resource type="AnimatedTexture" load_steps=4 format=2] + +[ext_resource path="res://graphics/tiles/water_light_3.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/water_light_2.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/water_light_1.png" type="Texture" id=3] + +[resource] +frames = 3 +fps = 5.0 +frame_0/texture = ExtResource( 3 ) +frame_1/texture = ExtResource( 2 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 1 ) +frame_2/delay_sec = 0.0 diff --git a/graphics/tiles/water_light_1.png b/graphics/tiles/water_light_1.png new file mode 100644 index 0000000..72c400b Binary files /dev/null and b/graphics/tiles/water_light_1.png differ diff --git a/graphics/tiles/water_light_1.png.import b/graphics/tiles/water_light_1.png.import new file mode 100644 index 0000000..e9ba36c --- /dev/null +++ b/graphics/tiles/water_light_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/water_light_1.png-dc9c8f84dcd53cb8390256599356eb12.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/water_light_1.png" +dest_files=[ "res://.import/water_light_1.png-dc9c8f84dcd53cb8390256599356eb12.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/water_light_2.png b/graphics/tiles/water_light_2.png new file mode 100644 index 0000000..89884c1 Binary files /dev/null and b/graphics/tiles/water_light_2.png differ diff --git a/graphics/tiles/water_light_2.png.import b/graphics/tiles/water_light_2.png.import new file mode 100644 index 0000000..cc95433 --- /dev/null +++ b/graphics/tiles/water_light_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/water_light_2.png-5ba81c90747918ba78298b265efaba0e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/water_light_2.png" +dest_files=[ "res://.import/water_light_2.png-5ba81c90747918ba78298b265efaba0e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/water_light_3.png b/graphics/tiles/water_light_3.png new file mode 100644 index 0000000..e834fe7 Binary files /dev/null and b/graphics/tiles/water_light_3.png differ diff --git a/graphics/tiles/water_light_3.png.import b/graphics/tiles/water_light_3.png.import new file mode 100644 index 0000000..3513196 --- /dev/null +++ b/graphics/tiles/water_light_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/water_light_3.png-0de652eb02faac645f8fedd7417768ab.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/water_light_3.png" +dest_files=[ "res://.import/water_light_3.png-0de652eb02faac645f8fedd7417768ab.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/water_light_bottom.png b/graphics/tiles/water_light_bottom.png new file mode 100644 index 0000000..e511845 Binary files /dev/null and b/graphics/tiles/water_light_bottom.png differ diff --git a/graphics/tiles/water_light_bottom.png.import b/graphics/tiles/water_light_bottom.png.import new file mode 100644 index 0000000..0a3ec4f --- /dev/null +++ b/graphics/tiles/water_light_bottom.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/water_light_bottom.png-e25ee4fe947bb28d8d59adf3b8d8632b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/water_light_bottom.png" +dest_files=[ "res://.import/water_light_bottom.png-e25ee4fe947bb28d8d59adf3b8d8632b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/turniwood/turning_platform.png b/graphics/turniwood/turning_platform.png deleted file mode 100644 index 7ae7b74..0000000 Binary files a/graphics/turniwood/turning_platform.png and /dev/null differ diff --git a/graphics/turniwood/turning_platform.png.import b/graphics/turniwood/turning_platform.png.import deleted file mode 100644 index b25a3b5..0000000 --- a/graphics/turniwood/turning_platform.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/turning_platform.png-405be9d001f90f3e9c015264ea0c68cb.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://graphics/turniwood/turning_platform.png" -dest_files=[ "res://.import/turning_platform.png-405be9d001f90f3e9c015264ea0c68cb.stex" ] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=false -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/graphics/turniwood/turning_platform_mountain.png b/graphics/turniwood/turning_platform_mountain.png new file mode 100644 index 0000000..ef12729 Binary files /dev/null and b/graphics/turniwood/turning_platform_mountain.png differ diff --git a/graphics/turniwood/turning_platform_mountain.png.import b/graphics/turniwood/turning_platform_mountain.png.import new file mode 100644 index 0000000..02a4aa4 --- /dev/null +++ b/graphics/turniwood/turning_platform_mountain.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turning_platform_mountain.png-99234754fafbece81d44f113a3eb84f8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/turniwood/turning_platform_mountain.png" +dest_files=[ "res://.import/turning_platform_mountain.png-99234754fafbece81d44f113a3eb84f8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/turniwood/turning_platform_rust.png b/graphics/turniwood/turning_platform_rust.png new file mode 100644 index 0000000..594da05 Binary files /dev/null and b/graphics/turniwood/turning_platform_rust.png differ diff --git a/graphics/turniwood/turning_platform_rust.png.import b/graphics/turniwood/turning_platform_rust.png.import new file mode 100644 index 0000000..2f1583e --- /dev/null +++ b/graphics/turniwood/turning_platform_rust.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turning_platform_rust.png-1716c004acdfe5c8b6f578edbffcb9d8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/turniwood/turning_platform_rust.png" +dest_files=[ "res://.import/turning_platform_rust.png-1716c004acdfe5c8b6f578edbffcb9d8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/turniwood/turning_platform_wood.png b/graphics/turniwood/turning_platform_wood.png new file mode 100644 index 0000000..a5bb338 Binary files /dev/null and b/graphics/turniwood/turning_platform_wood.png differ diff --git a/graphics/turniwood/turning_platform_wood.png.import b/graphics/turniwood/turning_platform_wood.png.import new file mode 100644 index 0000000..b69152b --- /dev/null +++ b/graphics/turniwood/turning_platform_wood.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turning_platform_wood.png-3793ee416806618b38cf4a3017bfbd0e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/turniwood/turning_platform_wood.png" +dest_files=[ "res://.import/turning_platform_wood.png-3793ee416806618b38cf4a3017bfbd0e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/turniwood/turning_platform_wood_dark.png b/graphics/turniwood/turning_platform_wood_dark.png new file mode 100644 index 0000000..e1c2ab8 Binary files /dev/null and b/graphics/turniwood/turning_platform_wood_dark.png differ diff --git a/graphics/turniwood/turning_platform_wood_dark.png.import b/graphics/turniwood/turning_platform_wood_dark.png.import new file mode 100644 index 0000000..678972c --- /dev/null +++ b/graphics/turniwood/turning_platform_wood_dark.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turning_platform_wood_dark.png-46a12d83de18f7a7acdb06d2e86d282c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/turniwood/turning_platform_wood_dark.png" +dest_files=[ "res://.import/turning_platform_wood_dark.png-46a12d83de18f7a7acdb06d2e86d282c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/turniwood/turning_platform_yellow.png b/graphics/turniwood/turning_platform_yellow.png index bc5ce12..5ccee02 100644 Binary files a/graphics/turniwood/turning_platform_yellow.png and b/graphics/turniwood/turning_platform_yellow.png differ diff --git a/graphics/turniwood/turning_platoform_lab.png b/graphics/turniwood/turning_platoform_lab.png new file mode 100644 index 0000000..55b4fe1 Binary files /dev/null and b/graphics/turniwood/turning_platoform_lab.png differ diff --git a/graphics/turniwood/turning_platoform_lab.png.import b/graphics/turniwood/turning_platoform_lab.png.import new file mode 100644 index 0000000..2e53082 --- /dev/null +++ b/graphics/turniwood/turning_platoform_lab.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turning_platoform_lab.png-73e519d3a9eb265b437745a0ee008e01.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/turniwood/turning_platoform_lab.png" +dest_files=[ "res://.import/turning_platoform_lab.png-73e519d3a9eb265b437745a0ee008e01.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000..da5c469 Binary files /dev/null and b/icon.ico differ diff --git a/icon.xcf b/icon.xcf new file mode 100644 index 0000000..f79bf7f Binary files /dev/null and b/icon.xcf differ diff --git a/ihateyou.bat b/ihateyou.bat new file mode 100644 index 0000000..6fc81be --- /dev/null +++ b/ihateyou.bat @@ -0,0 +1,6 @@ +git restore tilesets +git restore graphics/tiles +git restore shaders +git restore ui +git restore project.godot +git restore default_env.tres \ No newline at end of file diff --git a/level_data.gd b/level_data.gd deleted file mode 100644 index 6885e00..0000000 --- a/level_data.gd +++ /dev/null @@ -1,15 +0,0 @@ -tool -extends Node - -export var levels = [] setget set_levels - -func set_levels(value): - levels = value - for i in levels.size(): - if !levels[i]: - levels[i] = LevelEntry.new() - levels[i].resource_name = "New Entry" - -func _ready(): - if !Engine.editor_hint: - print(levels[0].title) diff --git a/level_data.tscn b/level_data.tscn deleted file mode 100644 index 633b790..0000000 --- a/level_data.tscn +++ /dev/null @@ -1,35 +0,0 @@ -[gd_scene load_steps=9 format=2] - -[ext_resource path="res://level_data.gd" type="Script" id=1] -[ext_resource path="res://maps/map01.tscn" type="PackedScene" id=2] -[ext_resource path="res://maps/canopy.tscn" type="PackedScene" id=3] -[ext_resource path="res://maps/cave.tscn" type="PackedScene" id=4] -[ext_resource path="res://scripts/level_entry.gd" type="Script" id=5] - -[sub_resource type="Resource" id=1] -resource_name = "Verdant Hills" -script = ExtResource( 5 ) -title = "Verdant Hills" -shard_titles = [ "Climb the Big Vine", "Next to the Lone Tree", "Slime's Treasure", "The Snake Pit", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] -save_id = "hills" -scene = ExtResource( 2 ) - -[sub_resource type="Resource" id=2] -resource_name = "Shady Canopy" -script = ExtResource( 5 ) -title = "Shady Canopy" -shard_titles = [ "Archer and His Friend", "Thirsty Spiders", "Spider's Den", "Dancing Above the Pond", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] -save_id = "canopy" -scene = ExtResource( 3 ) - -[sub_resource type="Resource" id=3] -resource_name = "Blue Ray Cavern" -script = ExtResource( 5 ) -title = "Blue Ray Cavern" -shard_titles = [ "Star-Crossed Lovers", "The Snail Cave", "Members Only!", "Over-Head Obstacle Course", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] -save_id = "cave" -scene = ExtResource( 4 ) - -[node name="LevelData" type="Node"] -script = ExtResource( 1 ) -levels = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ) ] diff --git a/maps/abyss.tscn b/maps/abyss.tscn new file mode 100644 index 0000000..f0e06c0 --- /dev/null +++ b/maps/abyss.tscn @@ -0,0 +1,332 @@ +[gd_scene load_steps=28 format=2] + +[ext_resource path="res://maps/map.gd" type="Script" id=1] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/backgrounds/abyss.png" type="Texture" id=3] +[ext_resource path="res://shaders/water_ripple.gdshader" type="Shader" id=4] +[ext_resource path="res://audio/music/moon_trail.ogg" type="AudioStream" id=5] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=6] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=7] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=8] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=9] +[ext_resource path="res://tilesets/t_abyss.tres" type="TileSet" id=10] +[ext_resource path="res://objects/enemy/mine.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/enemy/fish.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/enemy/squig.tscn" type="PackedScene" id=14] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=15] +[ext_resource path="res://objects/enemy/turtle.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=17] +[ext_resource path="res://objects/enemy/eel.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/environment/moving_platform/moving_platform.tscn" type="PackedScene" id=19] +[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=20] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=21] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=22] +[ext_resource path="res://objects/environment/rock/rock.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/environment/bubble/bubble_spawner.tscn" type="PackedScene" id=24] + +[sub_resource type="CanvasItemMaterial" id=12] +blend_mode = 3 + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 4 ) +shader_param/offset = 0.5 +shader_param/speed = 1.0 +shader_param/waves = 32.0 +shader_param/color_amount = 0.3 + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 4, 320 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 128, 4 ) + +[node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 1 ) +music = ExtResource( 5 ) + +[node name="Camera2D" parent="." instance=ExtResource( 7 )] +__meta__ = { +"_edit_lock_": true +} +scroll_h = false +scroll_v = true +respawn_h = false + +[node name="BackgroundLayer" type="CanvasLayer" parent="."] +layer = -50 + +[node name="Background" type="Sprite" parent="BackgroundLayer"] +texture = ExtResource( 3 ) +centered = false +__meta__ = { +"_edit_lock_": true +} + +[node name="EffectLayer" type="CanvasLayer" parent="."] +layer = 50 +follow_viewport_enable = true + +[node name="Depth1" type="ColorRect" parent="EffectLayer"] +material = SubResource( 12 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 192.0 +margin_bottom = 192.0 +color = Color( 0.784314, 0.784314, 0.784314, 1 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Depth2" type="ColorRect" parent="EffectLayer"] +material = SubResource( 12 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 384.0 +margin_bottom = 384.0 +color = Color( 0.768627, 0.556863, 0.556863, 1 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="WaterRipple" type="ColorRect" parent="EffectLayer"] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_bottom = 384.0 +color = Color( 0.054902, 0.0666667, 0.329412, 1 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="HUD" parent="." instance=ExtResource( 2 )] +song_name = "♫Moon Trail" + +[node name="Player" parent="." instance=ExtResource( 8 )] +position = Vector2( 16, 40 ) +underwater = true + +[node name="LevelBorders" type="StaticBody2D" parent="."] +__meta__ = { +"_edit_group_": true, +"_edit_lock_": true +} + +[node name="LeftWall" type="CollisionShape2D" parent="LevelBorders"] +position = Vector2( -4, 256 ) +shape = SubResource( 7 ) + +[node name="RightWall" type="CollisionShape2D" parent="LevelBorders"] +position = Vector2( 260, 256 ) +shape = SubResource( 7 ) + +[node name="Floor" type="CollisionShape2D" parent="LevelBorders"] +position = Vector2( 128, 580 ) +shape = SubResource( 8 ) + +[node name="Tilemaps" type="Node2D" parent="."] + +[node name="Ground" type="TileMap" parent="Tilemaps"] +z_index = -30 +tile_set = ExtResource( 10 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 327680, 0, 196609, 327681, 0, 196610, 327682, 0, 196610, 327683, 0, 196610, 327684, 0, 196610, 327685, 0, 196610, 327686, 0, 196611, 327704, 0, 1, 327705, 0, 196610, 327706, 0, 196610, 327707, 0, 196610, 327708, 0, 3, 327711, 0, 0, 393240, 0, 65536, 393244, 0, 65536, 393247, 0, 65536, 458776, 0, 65536, 458780, 0, 65536, 458783, 0, 65536, 524303, 0, 196609, 524304, 0, 196610, 524305, 0, 196610, 524306, 0, 196610, 524307, 0, 196610, 524308, 0, 196610, 524309, 0, 196610, 524310, 0, 196610, 524311, 0, 196610, 524312, 0, 131075, 524316, 0, 65536, 524319, 0, 65536, 589830, 0, 196609, 589831, 0, 196610, 589832, 0, 196610, 589833, 0, 196610, 589834, 0, 196610, 589835, 0, 196610, 589836, 0, 3, 589852, 0, 65536, 589855, 0, 65536, 655363, 0, 196608, 655372, 0, 65536, 655388, 0, 65536, 655391, 0, 65536, 720908, 0, 131073, 720909, 0, 3, 720924, 0, 65536, 720927, 0, 65536, 786445, 0, 131073, 786446, 0, 3, 786456, 0, 196608, 786460, 0, 65536, 786463, 0, 65536, 851982, 0, 131073, 851983, 0, 3, 851986, 0, 196609, 851987, 0, 196610, 851988, 0, 196610, 851989, 0, 196611, 851996, 0, 65536, 851999, 0, 65536, 917506, 0, 196609, 917507, 0, 196610, 917508, 0, 196610, 917509, 0, 3, 917519, 0, 65536, 917532, 0, 65536, 917535, 0, 65536, 983045, 0, 65536, 983055, 0, 131073, 983056, 0, 196610, 983057, 0, 196610, 983058, 0, 196610, 983059, 0, 2, 983060, 0, 196610, 983061, 0, 196610, 983062, 0, 196610, 983063, 0, 196610, 983064, 0, 196610, 983065, 0, 196610, 983066, 0, 196610, 983067, 0, 196610, 983068, 0, 131075, 983071, 0, 131072, 1048581, 0, 65536, 1048588, 0, 1, 1048589, 0, 196611, 1048595, 0, 65536, 1114117, 0, 65536, 1114124, 0, 65536, 1114131, 0, 131072, 1179653, 0, 131073, 1179654, 0, 196610, 1179655, 0, 196610, 1179656, 0, 196610, 1179657, 0, 196610, 1179658, 0, 196610, 1179659, 0, 196610, 1179660, 0, 131075, 1310734, 0, 1, 1310735, 0, 196610, 1310736, 0, 196611, 1310739, 0, 196609, 1310740, 0, 196610, 1310741, 0, 196611, 1376258, 0, 196609, 1376259, 0, 196610, 1376260, 0, 196610, 1376261, 0, 3, 1376270, 0, 65536, 1441797, 0, 131073, 1441798, 0, 196610, 1441799, 0, 196610, 1441800, 0, 196611, 1441803, 0, 196609, 1441804, 0, 196610, 1441805, 0, 196610, 1441806, 0, 65539, 1507342, 0, 131073, 1507343, 0, 196610, 1507344, 0, 196610, 1507345, 0, 196610, 1507346, 0, 196610, 1507347, 0, 196610, 1507348, 0, 196610, 1507349, 0, 196610, 1507350, 0, 196610, 1507351, 0, 196610, 1507352, 0, 196610, 1507353, 0, 196610, 1507354, 0, 196610, 1507355, 0, 196611, 1835008, 0, 196609, 1835009, 0, 196610, 1835010, 0, 196610, 1835011, 0, 196610, 1835012, 0, 196610, 1835013, 0, 196610, 1835014, 0, 196610, 1835015, 0, 196610, 1835016, 0, 196610, 1835017, 0, 196610, 1835018, 0, 196610, 1835019, 0, 196610, 1835020, 0, 196610, 1835021, 0, 196610, 1835022, 0, 3, 1835031, 0, 1, 1835032, 0, 196610, 1835033, 0, 196611, 1835035, 0, 196609, 1835036, 0, 196610, 1835037, 0, 196610, 1835038, 0, 196610, 1835039, 0, 196611, 1900558, 0, 131073, 1900559, 0, 3, 1900566, 0, 1, 1900567, 0, 131075, 1966095, 0, 131073, 1966096, 0, 196611, 1966100, 0, 1, 1966101, 0, 196610, 1966102, 0, 131075, 2031636, 0, 65536, 2097172, 0, 131072, 2162702, 0, 1, 2162703, 0, 196610, 2162704, 0, 2, 2162705, 0, 196611, 2228238, 0, 65536, 2228240, 0, 65536, 2293764, 0, 196609, 2293765, 0, 196610, 2293766, 0, 196610, 2293767, 0, 196610, 2293768, 0, 196610, 2293769, 0, 196610, 2293770, 0, 196610, 2293771, 0, 196610, 2293772, 0, 196610, 2293773, 0, 196610, 2293774, 0, 131075, 2293776, 0, 65536, 2359296, 0, 196609, 2359297, 0, 3, 2359312, 0, 65536, 2359316, 0, 196609, 2359317, 0, 196610, 2359318, 0, 196610, 2359319, 0, 196610, 2359320, 0, 196610, 2359321, 0, 196610, 2359322, 0, 196610, 2359323, 0, 196610, 2359324, 0, 196610, 2359325, 0, 196610, 2359326, 0, 196610, 2359327, 0, 196611, 2424833, 0, 65536, 2424848, 0, 65536, 2490369, 0, 65536, 2490384, 0, 65536, 2555905, 0, 65536, 2555920, 0, 65536, 2621441, 0, 65536, 2621456, 0, 65536, 2686977, 0, 65536, 2686992, 0, 65536, 2752513, 0, 65536, 2752516, 0, 1, 2752517, 0, 196610, 2752518, 0, 196610, 2752519, 0, 196610, 2752520, 0, 196610, 2752521, 0, 196610, 2752522, 0, 196610, 2752523, 0, 196610, 2752524, 0, 196610, 2752525, 0, 196610, 2752526, 0, 196610, 2752527, 0, 196610, 2752528, 0, 131075, 2818049, 0, 65536, 2818052, 0, 65536, 2883585, 0, 65536, 2883588, 0, 65536, 2949121, 0, 65536, 2949124, 0, 65536, 3014657, 0, 65536, 3014660, 0, 65536, 3080193, 0, 131072, 3080196, 0, 131072 ) + +[node name="Ladders" type="TileMap" parent="Tilemaps"] +z_index = 10 +tile_set = ExtResource( 6 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 655360, 0, 131074, 720896, 0, 131074, 786432, 0, 131074, 851968, 0, 131074, 917504, 0, 131074, 983040, 0, 131074, 1048576, 0, 131074, 1114112, 0, 131074, 1179648, 0, 131074, 1245184, 0, 131074, 1310720, 0, 131074, 1376256, 0, 131074, 1441792, 0, 131074, 1507328, 0, 131074, 1572864, 0, 131074, 1638400, 0, 131074, 1703936, 0, 131074, 1769472, 0, 131074 ) + +[node name="Death" type="TileMap" parent="Tilemaps" groups=["death"]] +tile_set = ExtResource( 15 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 458768, 1, 0, 458769, 1, 0, 458770, 1, 0, 458771, 1, 0, 458772, 1, 0, 458773, 1, 0, 458774, 1, 0, 458775, 1, 0, 786452, 1, 0, 917520, 1, 0, 917521, 1, 0, 917522, 1, 0, 917523, 1, 0, 917524, 1, 0, 917525, 1, 0, 917526, 1, 0, 917527, 1, 0, 917528, 1, 0, 917529, 1, 0, 1114121, 1, 0, 1441807, 1, 0, 1441808, 1, 0, 1441809, 1, 0, 1441810, 1, 0, 1441811, 1, 0, 1441812, 1, 0, 1441813, 1, 0, 1441814, 1, 0, 1441815, 1, 0, 1441816, 1, 0, 1441817, 1, 0, 1441818, 1, 0, 1441819, 1, 0, 1769478, 1, 0, 1769485, 1, 0, 2228228, 1, 0, 2228229, 1, 0, 2228230, 1, 0, 2228231, 1, 0, 2228232, 1, 0, 2228233, 1, 0, 2228234, 1, 0, 2228235, 1, 0, 2228236, 1, 0, 2228237, 1, 0 ) + +[node name="Ladders" type="Node2D" parent="."] + +[node name="Ladder" parent="Ladders" instance=ExtResource( 9 )] +position = Vector2( 0, 80 ) +scale = Vector2( 1, 18 ) + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Mines" type="Node2D" parent="Enemies"] + +[node name="Mine" parent="Enemies/Mines" instance=ExtResource( 11 )] +position = Vector2( 48, 120 ) + +[node name="Mine2" parent="Enemies/Mines" instance=ExtResource( 11 )] +position = Vector2( 72, 96 ) + +[node name="Mine4" parent="Enemies/Mines" instance=ExtResource( 11 )] +position = Vector2( 184, 152 ) + +[node name="Squigs" type="Node2D" parent="Enemies"] + +[node name="Squig" parent="Enemies/Squigs" instance=ExtResource( 14 )] +position = Vector2( 136, 416 ) + +[node name="Squig2" parent="Enemies/Squigs" instance=ExtResource( 14 )] +position = Vector2( 200, 432 ) + +[node name="Squig3" parent="Enemies/Squigs" instance=ExtResource( 14 )] +position = Vector2( 88, 528 ) + +[node name="Turtle" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 56, 40 ) +right_down_boundary = 9.0 +speed = 50 + +[node name="Turtle2" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 88, 264 ) +left_up_boundary = 10.0 +speed = 30 + +[node name="Eel" parent="Enemies" instance=ExtResource( 18 )] +position = Vector2( 152, 96 ) +speed = 50.0 + +[node name="Eel2" parent="Enemies" instance=ExtResource( 18 )] +position = Vector2( 144, 256 ) +speed = 50.0 + +[node name="Eel3" parent="Enemies" instance=ExtResource( 18 )] +position = Vector2( 40, 112 ) +speed = 50.0 + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Star" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 88, 136 ) + +[node name="Star2" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 208, 56 ) +color = 1 + +[node name="Key" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 32, 32 ) + +[node name="Key2" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 48, 32 ) + +[node name="Key3" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 40, 104 ) + +[node name="Key18" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 120, 152 ) + +[node name="Key15" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 128, 232 ) + +[node name="Key16" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 80, 216 ) + +[node name="Key17" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 112, 216 ) + +[node name="Key5" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 80, 64 ) + +[node name="Key7" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 192, 32 ) + +[node name="Key8" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 224, 32 ) + +[node name="Key12" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 232, 56 ) + +[node name="Key13" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 232, 88 ) + +[node name="Key14" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 232, 120 ) + +[node name="Key9" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 104, 80 ) + +[node name="Key10" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 112, 88 ) + +[node name="Key11" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 120, 96 ) + +[node name="Key6" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 56, 64 ) + +[node name="Key4" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 16, 104 ) + +[node name="Shard" parent="Collectibles" instance=ExtResource( 22 )] +position = Vector2( 160, 152 ) + +[node name="Star3" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 240, 256 ) +color = 2 + +[node name="Environment" type="Node2D" parent="."] + +[node name="TurningPlatform" parent="Environment" instance=ExtResource( 20 )] +position = Vector2( 168, 40 ) + +[node name="MovingPlatform" parent="Environment" instance=ExtResource( 19 )] +position = Vector2( 212, 104 ) +scale = Vector2( 2, 1 ) +left_up_boundary = 4.0 +move_direction = 1 + +[node name="MovingPlatform2" parent="Environment" instance=ExtResource( 19 )] +position = Vector2( 240, 160 ) +scale = Vector2( 2, 1 ) +speed = 40 +left_up_boundary = 8.0 + +[node name="Rock2" parent="Environment" instance=ExtResource( 23 )] +position = Vector2( 148, 152 ) + +[node name="Bubbles" type="Node2D" parent="."] + +[node name="BubbleSpawner" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 8, 32 ) + +[node name="BubbleSpawner2" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 64, 64 ) + +[node name="BubbleSpawner3" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 96, 120 ) + +[node name="BubbleSpawner4" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 24, 104 ) + +[node name="BubbleSpawner5" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 24, 160 ) + +[node name="BubbleSpawner6" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 120, 152 ) + +[node name="BubbleSpawner7" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 96, 216 ) + +[node name="Fish" parent="." instance=ExtResource( 12 )] +position = Vector2( 72, 64 ) +left_up_boundary = 3.0 +right_down_boundary = 4.0 + +[node name="Fish2" parent="." instance=ExtResource( 12 )] +position = Vector2( 40, 216 ) +left_up_boundary = 2.0 +right_down_boundary = 3.0 + +[node name="Fish3" parent="." instance=ExtResource( 12 )] +position = Vector2( 96, 216 ) +left_up_boundary = 1.0 +right_down_boundary = 3.0 + +[editable path="Enemies/Eel"] +[editable path="Enemies/Eel2"] +[editable path="Enemies/Eel3"] diff --git a/maps/abyss_scholar.tscn b/maps/abyss_scholar.tscn new file mode 100644 index 0000000..f816bc0 --- /dev/null +++ b/maps/abyss_scholar.tscn @@ -0,0 +1,751 @@ +[gd_scene load_steps=50 format=2] + +[ext_resource path="res://maps/map.gd" type="Script" id=1] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/backgrounds/abyss.png" type="Texture" id=3] +[ext_resource path="res://shaders/water_ripple.gdshader" type="Shader" id=4] +[ext_resource path="res://audio/music/moon_trail.ogg" type="AudioStream" id=5] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=6] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=7] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=8] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=9] +[ext_resource path="res://tilesets/t_abyss.tres" type="TileSet" id=10] +[ext_resource path="res://objects/enemy/mine.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/enemy/fish.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/environment/falling_block/falling_block_cave.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/enemy/squig.tscn" type="PackedScene" id=14] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=15] +[ext_resource path="res://objects/enemy/turtle.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=17] +[ext_resource path="res://objects/enemy/eel.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/environment/moving_platform/moving_platform.tscn" type="PackedScene" id=19] +[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=20] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=21] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=22] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/environment/bubble/bubble_spawner.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/respawn_point.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=26] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=27] +[ext_resource path="res://objects/lore/abyss/crater_of_the_abyss.tscn" type="PackedScene" id=28] +[ext_resource path="res://objects/lore/abyss/beel.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/abyss/bullet_fish.tscn" type="PackedScene" id=30] +[ext_resource path="res://objects/lore/abyss/mine.tscn" type="PackedScene" id=31] +[ext_resource path="res://objects/lore/abyss/squig.tscn" type="PackedScene" id=32] +[ext_resource path="res://objects/lore/abyss/turchin.tscn" type="PackedScene" id=33] +[ext_resource path="res://graphics/particles/pixel.png" type="Texture" id=34] + +[sub_resource type="CanvasItemMaterial" id=12] +blend_mode = 3 + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 4 ) +shader_param/offset = 0.5 +shader_param/speed = 1.0 +shader_param/waves = 32.0 +shader_param/color_amount = 0.3 + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 4, 320 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 128, 4 ) + +[sub_resource type="Curve2D" id=13] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, -24, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, 24, -72, 0, 0, 0, 0, 0, -96, 0, 0, 0, 0, 24, -72, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, 24, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="Curve2D" id=15] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 40, 8, 0, 0, 0, 0, 40, 16, 0, 0, 0, 0, 32, 24, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, -8, 16, 0, 0, 0, 0, -8, 8, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="Curve2D" id=14] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -8, 0, 0, 0, 0, 16, -16, 0, 0, 0, 0, 56, -16, 0, 0, 0, 0, 72, -32, 0, 0, 0, 0, 80, -40, 0, 0, 0, 0, 160, -40, 0, 0, 0, 0, 168, -32, 0, 0, 0, 0, 168, -24, 0, 0, 0, 0, 88, -24, 0, 0, 0, 0, 80, -16, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="Curve2D" id=16] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -32, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 24, -32, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 40, -32, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 40, -32, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 24, -32, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 8, -32, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="Curve2D" id=17] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, -16, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 48, -16, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 80, -16, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 48, -16, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 16, -16, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="Curve2D" id=24] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 16, 40, 0, 0, 0, 0, 24, 48, 0, 0, 0, 0, 24, 56, 0, 0, 0, 0, 16, 64, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 16, 64, 0, 0, 0, 0, 24, 56, 0, 0, 0, 0, 24, 48, 0, 0, 0, 0, 16, 40, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="Curve2D" id=23] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 48, 8, 0, 0, 0, 0, 56, 16, 0, 0, 0, 0, 56, 32, 0, 0, 0, 0, 48, 40, 0, 0, 0, 0, 32, 48, 0, 0, 0, 0, 8, 48, 0, 0, 0, 0, -16, 40, 0, 0, 0, 0, -24, 32, 0, 0, 0, 0, -24, 16, 0, 0, 0, 0, -16, 8, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="RectangleShape2D" id=19] +extents = Vector2( 46.9375, 4 ) + +[sub_resource type="RectangleShape2D" id=25] +extents = Vector2( 20, 4 ) + +[sub_resource type="RectangleShape2D" id=20] +extents = Vector2( 80.5, 4 ) + +[sub_resource type="RectangleShape2D" id=21] +extents = Vector2( 42, 4 ) + +[node name="Map2" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 1 ) +target_time_any = 60 +target_time_100 = 160 +music = ExtResource( 5 ) +lore_entries = [ ExtResource( 28 ), ExtResource( 29 ), ExtResource( 30 ), ExtResource( 31 ), ExtResource( 32 ), ExtResource( 33 ) ] + +[node name="Camera2D" parent="." instance=ExtResource( 7 )] +position = Vector2( 0, 384 ) +__meta__ = { +"_edit_lock_": true +} +scroll_h = false +scroll_v = true +respawn_h = false + +[node name="BackgroundLayer" type="CanvasLayer" parent="."] +layer = -50 + +[node name="Background" type="Sprite" parent="BackgroundLayer"] +texture = ExtResource( 3 ) +centered = false +__meta__ = { +"_edit_lock_": true +} + +[node name="EffectLayer" type="CanvasLayer" parent="."] +layer = 50 +follow_viewport_enable = true + +[node name="Depth1" type="ColorRect" parent="EffectLayer"] +visible = false +material = SubResource( 12 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 192.0 +margin_bottom = 192.0 +color = Color( 0.784314, 0.784314, 0.784314, 1 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Depth2" type="ColorRect" parent="EffectLayer"] +visible = false +material = SubResource( 12 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 384.0 +margin_bottom = 384.0 +color = Color( 0.768627, 0.556863, 0.556863, 1 ) + +[node name="WaterRipple" type="ColorRect" parent="EffectLayer"] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_bottom = 384.0 +color = Color( 0.054902, 0.0666667, 0.329412, 1 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="HUD" parent="." instance=ExtResource( 2 )] +song_name = "♫Moon Trail 2023" + +[node name="Depth1" type="Light2D" parent="."] +position = Vector2( 0, 192 ) +scale = Vector2( 256, 192 ) +z_index = 1 +texture = ExtResource( 34 ) +offset = Vector2( 0.5, 0.5 ) +color = Color( 0.148438, 0.0363846, 0.126981, 1 ) +energy = 0.25 +mode = 2 +range_layer_min = -50 + +[node name="Depth2" type="Light2D" parent="."] +position = Vector2( 0, 384 ) +scale = Vector2( 256, 192 ) +z_index = 1 +texture = ExtResource( 34 ) +offset = Vector2( 0.5, 0.5 ) +color = Color( 0.333333, 0.0901961, 0.0901961, 1 ) +energy = 0.5 +mode = 2 +range_layer_min = -50 + +[node name="Player" parent="." instance=ExtResource( 8 )] +position = Vector2( 24, 560 ) +underwater = true + +[node name="LevelBorders" type="StaticBody2D" parent="."] +__meta__ = { +"_edit_group_": true, +"_edit_lock_": true +} + +[node name="LeftWall" type="CollisionShape2D" parent="LevelBorders"] +position = Vector2( -4, 256 ) +shape = SubResource( 7 ) + +[node name="RightWall" type="CollisionShape2D" parent="LevelBorders"] +position = Vector2( 260, 256 ) +shape = SubResource( 7 ) + +[node name="Floor" type="CollisionShape2D" parent="LevelBorders"] +position = Vector2( 128, 580 ) +shape = SubResource( 8 ) + +[node name="Tilemaps" type="Node2D" parent="."] + +[node name="Ground" type="TileMap" parent="Tilemaps" groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 27 ) +z_index = -30 +tile_set = ExtResource( 10 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 131095, 2, 2, 131099, 2, 2, 196631, 2, 2, 196633, 2, 1, 196635, 2, 2, 262166, 0, 1, 262167, 0, 196610, 262168, 0, 196610, 262169, 0, 196610, 262170, 0, 196610, 262171, 0, 196610, 262172, 0, 3, 262175, 0, 0, 327680, 0, 196609, 327681, 0, 196610, 327682, 0, 196610, 327683, 0, 196610, 327684, 0, 196610, 327685, 0, 196610, 327686, 0, 196611, 327702, 0, 65536, 327708, 0, 131072, 327711, 0, 65536, 393231, 0, 196609, 393232, 0, 196610, 393233, 0, 196610, 393234, 0, 196610, 393235, 0, 196610, 393236, 0, 196610, 393237, 0, 196610, 393238, 0, 131075, 393244, -1610612733, 0, 393247, 0, 65536, 458759, 5, 0, 458762, 5, 0, 458780, -1610612733, 0, 458783, 0, 65536, 524295, 5, 0, 524298, 5, 0, 524316, -1610612733, 0, 524319, 0, 65536, 589830, 0, 196609, 589831, 0, 196610, 589832, 0, 196610, 589833, 0, 196610, 589834, 0, 196610, 589835, 0, 196610, 589836, 0, 3, 589848, 0, 196608, 589852, -1610612733, 0, 589855, 0, 65536, 655363, 0, 196608, 655372, 0, 65536, 655378, 0, 196609, 655379, 0, 196610, 655380, 0, 196610, 655381, 0, 196611, 655388, 0, 0, 655391, 0, 65536, 720908, 0, 131073, 720909, 0, 3, 720924, 0, 65536, 720927, 0, 65536, 786445, 0, 131073, 786446, 0, 196610, 786447, 0, 196610, 786448, 0, 196610, 786449, 0, 196610, 786450, 0, 196610, 786451, 0, 2, 786452, 0, 196610, 786453, 0, 196610, 786454, 0, 196610, 786455, 0, 196610, 786456, 0, 196610, 786457, 0, 196610, 786458, 0, 196610, 786459, 0, 196610, 786460, 0, 131075, 786463, 0, 131072, 851972, 2, 1, 917506, 0, 196609, 917507, 0, 196610, 917508, 0, 196610, 917509, 0, 3, 983045, 0, 65536, 1048581, 0, 65536, 1048595, 0, 196609, 1048596, 0, 196610, 1048597, 0, 196611, 1114117, 0, 65536, 1114124, 2, 0, 1179653, 0, 131073, 1179654, 0, 196610, 1179655, 0, 196610, 1179656, 0, 196610, 1179657, 0, 196610, 1179658, 0, 196610, 1179659, 0, 196610, 1179660, 0, 196611, 1245202, 0, 196609, 1245203, 0, 196610, 1245204, 0, 196610, 1245205, 0, 196610, 1245206, 0, 196610, 1245207, 0, 196610, 1245208, 0, 196610, 1245209, 0, 196610, 1245210, 0, 196610, 1245211, 0, 196610, 1245212, 0, 196610, 1245213, 0, 196610, 1245214, 0, 196610, 1245215, 0, 196611, 1310724, 2, 1, 1310732, 5, 0, 1310742, -1073741821, 0, 1376259, 0, 196609, 1376260, 0, 196610, 1376261, 0, 3, 1376264, 2, 0, 1376268, 5, 0, 1376274, 5, 0, 1376278, -1073741821, 0, 1376280, 5, 0, 1376283, 5, 0, 1441797, 0, 131073, 1441798, 0, 196610, 1441799, 0, 196610, 1441800, 0, 196611, 1441803, 0, 196609, 1441804, 0, 196610, 1441805, 0, 196610, 1441806, 0, 196610, 1441807, 0, 3, 1441810, 5, 0, 1441814, -1073741821, 0, 1441816, 5, 0, 1441819, 5, 0, 1507343, 0, 131073, 1507344, 0, 196610, 1507345, 0, 196610, 1507346, 0, 196610, 1507347, 0, 196610, 1507348, 0, 196610, 1507349, 0, 196610, 1507350, 0, 196610, 1507351, 0, 196610, 1507352, 0, 196610, 1507353, 0, 196610, 1507354, 0, 196610, 1507355, 0, 196610, 1507356, 0, 196610, 1507357, 0, 196611, 1638402, 5, 0, 1638407, 5, 0, 1638411, 5, 0, 1703938, 5, 0, 1703943, 5, 0, 1703947, 5, 0, 1769474, 5, 0, 1769479, 5, 0, 1769483, 5, 0, 1835008, 0, 196609, 1835009, 0, 196610, 1835010, 0, 196610, 1835011, 0, 196610, 1835012, 0, 196610, 1835013, 0, 196610, 1835014, 0, 196610, 1835015, 0, 196610, 1835016, 0, 196610, 1835017, 0, 196610, 1835018, 0, 196610, 1835019, 0, 196610, 1835020, 0, 196610, 1835021, 0, 196610, 1835022, 0, 3, 1835034, 0, 196609, 1835035, 0, 196610, 1835036, 0, 196610, 1835037, 0, 196610, 1835038, 0, 196610, 1835039, 0, 196611, 1900558, 0, 131073, 1900559, 0, 3, 1966095, 0, 131073, 1966096, 0, 196611, 2031636, 0, 196608, 2097166, 2, 0, 2097169, 2, 0, 2162701, 0, 196609, 2162702, 0, 196610, 2162703, 0, 196610, 2162704, 0, 196610, 2162705, 0, 196610, 2162706, 0, 196611, 2162710, 0, 196609, 2162711, 0, 196610, 2162712, 0, 196611, 2424841, 0, 196609, 2424842, 0, 196611, 2424857, 0, 0, 2424860, 0, 196609, 2424861, 0, 196610, 2424862, 0, 196610, 2424863, 0, 3, 2490372, 2, 0, 2490374, 2, 1, 2490383, 0, 196609, 2490384, 0, 196610, 2490385, 0, 196610, 2490386, 0, 196611, 2490393, 0, 65536, 2490399, 0, 65536, 2555907, 0, 196609, 2555908, 0, 196610, 2555909, 0, 196610, 2555910, 0, 196610, 2555911, 0, 196611, 2555929, 0, 131072, 2555935, 0, 65536, 2621465, -1073741821, 0, 2621469, 0, 196609, 2621470, 0, 196610, 2621471, 0, 131075, 2687001, -1073741821, 0, 2752537, -1073741821, 0, 2818071, 0, 196609, 2818072, 0, 196610, 2818073, 0, 2, 2818074, 0, 196610, 2818075, 0, 196610, 2818076, 0, 196611, 2883609, 0, 65536, 2883614, 0, 196609, 2883615, 0, 3, 2949134, 0, 196609, 2949135, 0, 196610, 2949136, 0, 196610, 2949137, 0, 196610, 2949138, 0, 196610, 2949139, 0, 196611, 2949145, 0, 65536, 2949150, 2, 3, 2949151, 0, 65536, 3014681, 0, 131073, 3014682, 0, 196610, 3014683, 0, 196610, 3014684, 0, 196610, 3014685, 0, 196610, 3014686, 0, 196610, 3014687, 0, 131075, 3342336, 3, 0, 3342337, 3, 0, 3342338, 3, 0, 3342339, 0, 196609, 3342340, 0, 3, 3342341, 2, 0, 3342355, 5, 0, 3342360, 5, 0, 3407876, 0, 65537, 3407877, 0, 3, 3407881, 0, 196608, 3407891, 5, 0, 3407896, 5, 0, 3473412, 0, 65537, 3473413, 0, 131074, 3473414, 0, 3, 3473415, 2, 1, 3473427, 5, 0, 3473432, 5, 0, 3538948, 0, 65536, 3538950, 0, 131073, 3538951, 0, 3, 3538954, 2, 0, 3538960, 2, 1, 3538961, -1073741824, 1, 3538962, 0, 196610, 3538963, 0, 196610, 3538964, 0, 196610, 3538965, 0, 196610, 3538966, 0, 196610, 3538967, 0, 196610, 3538968, 0, 196610, 3538969, 0, 196610, 3538970, 0, 196611, 3604484, 0, 65536, 3604487, 0, 131073, 3604488, 0, 196610, 3604489, 0, 196610, 3604490, 0, 196610, 3604491, 0, 196610, 3604492, 0, 196611, 3604496, 0, 1, 3604497, 0, 131075, 3670020, 0, 65536, 3670030, 2, 1, 3670031, 0, 1, 3670032, 0, 131075, 3735556, 0, 65536, 3735566, 0, 1, 3735567, 0, 131075, 3801091, 0, 1, 3801092, 0, 131075, 3801097, 0, 196609, 3801098, 0, 196610, 3801099, 0, 2, 3801100, 0, 196610, 3801101, 0, 196610, 3801102, 0, 131075, 3866627, 0, 65536, 3866635, 0, 65536, 3866645, 5, 0, 3932163, 0, 65536, 3932167, 0, 196609, 3932168, 0, 196611, 3932171, 0, 65536, 3932175, 2, 0, 3932179, 2, 1, 3932181, 5, 0, 3997699, 0, 65536, 3997707, 0, 131072, 3997709, 0, 196609, 3997710, 0, 196610, 3997711, 0, 196610, 3997712, 0, 196610, 3997713, 0, 196610, 3997714, 0, 196610, 3997715, 0, 196610, 3997716, 0, 196610, 3997717, 0, 196611, 4063235, 0, 65536, 4128771, 0, 65536, 4128794, 0, 196609, 4128795, 0, 196610, 4128796, 0, 2, 4128797, 0, 3, 4194307, 0, 65536, 4194317, 5, 0, 4194324, 5, 0, 4194327, 0, 196609, 4194328, 0, 196611, 4194332, 0, 131073, 4194333, 0, 131075, 4259843, 0, 65536, 4259853, 5, 0, 4259860, 5, 0, 4325379, 0, 131072, 4325387, 0, 1, 4325388, 0, 2, 4325389, 0, 3, 4325393, 0, 1, 4325394, 0, 2, 4325395, 0, 2, 4325396, 0, 2, 4325397, 0, 196610, 4325398, 0, 196610, 4325399, 0, 196610, 4325400, 0, 196610, 4325401, 0, 3, 4390923, 0, 131073, 4390924, 0, 131074, 4390925, 0, 131074, 4390926, 0, 196610, 4390927, 0, 196610, 4390928, 0, 196610, 4390929, 0, 131074, 4390930, 0, 131074, 4390931, 0, 131074, 4390932, 0, 131075, 4390937, 0, 131073, 4390938, 0, 196610, 4390939, 0, 196610, 4390940, 0, 196610, 4390941, 0, 196611, 4390942, 3, 0, 4390943, 3, 0, 4456455, 0, 1, 4456456, 0, 3, 4521990, 0, 1, 4521991, 0, 65538, 4521992, 0, 65539, 4521996, 2, 0, 4522000, 2, 0, 4522004, 2, 0, 4522008, 2, 0, 4522015, 0, 0, 4587520, 0, 1, 4587521, 0, 2, 4587522, 0, 2, 4587523, 0, 2, 4587524, 0, 2, 4587525, 0, 2, 4587526, 0, 65538, 4587527, 0, 65538, 4587528, 0, 65538, 4587529, 0, 2, 4587530, 0, 2, 4587531, 0, 2, 4587532, 0, 2, 4587533, 0, 2, 4587534, 0, 2, 4587535, 0, 2, 4587536, 0, 2, 4587537, 0, 2, 4587538, 0, 2, 4587539, 0, 2, 4587540, 0, 2, 4587541, 0, 2, 4587542, 0, 2, 4587543, 0, 2, 4587544, 0, 2, 4587545, 0, 2, 4587546, 0, 2, 4587547, 0, 2, 4587548, 0, 2, 4587549, 0, 2, 4587550, 0, 2, 4587551, 0, 65539, 4653056, 0, 131073, 4653057, 0, 131074, 4653058, 0, 131074, 4653059, 0, 131074, 4653060, 0, 131074, 4653061, 0, 131074, 4653062, 0, 131074, 4653063, 0, 131074, 4653064, 0, 131074, 4653065, 0, 131074, 4653066, 0, 131074, 4653067, 0, 131074, 4653068, 0, 131074, 4653069, 0, 131074, 4653070, 0, 131074, 4653071, 0, 131074, 4653072, 0, 131074, 4653073, 0, 131074, 4653074, 0, 131074, 4653075, 0, 131074, 4653076, 0, 131074, 4653077, 0, 131074, 4653078, 0, 131074, 4653079, 0, 131074, 4653080, 0, 131074, 4653081, 0, 131074, 4653082, 0, 131074, 4653083, 0, 131074, 4653084, 0, 131074, 4653085, 0, 131074, 4653086, 0, 131074, 4653087, 0, 131075 ) + +[node name="Cracks" type="TileMap" parent="Tilemaps"] +tile_set = ExtResource( 10 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 262169, 4, 0, 589832, 4, 0, 917507, 4, 0, 1376259, 4, 0, 1507351, 4, 0, 1507356, 4, 0, 1835016, 4, 0, 2424841, 4, 0, 2424862, 4, 0, 2949137, 4, 0, 3342339, 4, 0, 3538964, 4, 0, 3604491, 4, 0, 4390939, 4, 0, 4587523, 4, 0 ) + +[node name="Ladders" type="TileMap" parent="Tilemaps"] +z_index = 10 +tile_set = ExtResource( 6 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 327689, 0, 131074, 393225, 0, 131074, 655360, 0, 131074, 720896, 0, 131074, 786432, 0, 131074, 851968, 0, 131074, 917504, 0, 131074, 983040, 0, 131074, 1048576, 0, 131074, 1114112, 0, 131074, 1179648, 0, 131074, 1245184, 0, 131074, 1310720, 0, 131074, 1376256, 0, 131074, 1441792, 0, 131074, 1441823, 0, 131074, 1507328, 0, 131074, 1507359, 0, 131074, 1572864, 0, 131074, 1572895, 0, 131074, 1638400, 0, 131074, 1638431, 0, 131074, 1703936, 0, 131074, 1703967, 0, 131074, 1769472, 0, 131074, 1769503, 0, 131074, 2097163, 0, 131074, 2162699, 0, 131074, 2228235, 0, 131074, 2555904, 0, 131074, 2555917, 0, 131074, 2621440, 0, 131074, 2621453, 0, 131074, 2686976, 0, 131074, 2686989, 0, 131074, 2752512, 0, 131074, 2818048, 0, 131074, 2883595, 0, 131074, 2949131, 0, 131074, 3014667, 0, 131074, 3080203, 0, 131074, 3145739, 0, 131074, 3211275, 0, 131074, 3276811, 0, 131074, 3342365, 0, 131074, 3407901, 0, 131074, 3473437, 0, 131074, 3538945, 0, 131074, 3538973, 0, 131074, 3604481, 0, 131074, 3604509, 0, 131074, 3670017, 0, 131074, 3670045, 0, 131074, 3735553, 0, 131074, 3735581, 0, 131074, 3801089, 0, 131074, 3801117, 0, 131074, 3866625, 0, 131074, 3866628, 0, 131074, 3866653, 0, 131074, 3932161, 0, 131074, 3932164, 0, 131074, 3932189, 0, 131074, 3997697, 0, 131074, 3997700, 0, 131074, 3997725, 0, 131074, 4063233, 0, 131074, 4063236, 0, 131074, 4063261, 0, 131074, 4128769, 0, 131074, 4128772, 0, 131074, 4194305, 0, 131074, 4194308, 0, 131074, 4259841, 0, 131074, 4259844, 0, 131074, 4325377, 0, 131074, 4325380, 0, 131074, 4390913, 0, 131074, 4456449, 0, 131074 ) + +[node name="Death" type="TileMap" parent="Tilemaps" groups=["death"]] +tile_set = ExtResource( 15 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 327695, 1, 0, 327696, 1, 0, 327697, 1, 0, 327698, 1, 0, 327699, 1, 0, 327700, 1, 0, 327701, 1, 0, 720912, 1, 0, 720913, 1, 0, 720914, 1, 0, 720915, 1, 0, 720916, 1, 0, 720917, 1, 0, 720918, 1, 0, 720919, 1, 0, 720920, 1, 0, 720921, 1, 0, 720922, 1, 0, 720923, 1, 0, 1114121, 1, 0, 1179666, 1, 0, 1179667, 1, 0, 1179668, 1, 0, 1179669, 1, 0, 1179670, 1, 0, 1179671, 1, 0, 1179672, 1, 0, 1179673, 1, 0, 1179674, 1, 0, 1179675, 1, 0, 1179676, 1, 0, 1179677, 1, 0, 1179678, 1, 0, 1179679, 1, 0, 1769478, 1, 0, 1769485, 1, 0, 4325390, 1, 0, 4325391, 1, 0, 4325392, 1, 0 ) + +[node name="Environment" type="Node2D" parent="."] + +[node name="TurningPlatform" parent="Environment" instance=ExtResource( 20 )] +position = Vector2( 168, 32 ) + +[node name="MovingPlatform2" parent="Environment" instance=ExtResource( 19 )] +position = Vector2( 240, 136 ) +scale = Vector2( 2, 1 ) +speed = 40 +left_up_boundary = 8.0 + +[node name="MovingPlatform3" parent="Environment" instance=ExtResource( 19 )] +position = Vector2( 184, 240 ) +scale = Vector2( 2, 1 ) +speed = 30 +left_up_boundary = 3.0 +right_down_boundary = 3.0 +move_direction = 1 + +[node name="FallingBlocks" type="Node2D" parent="Environment"] + +[node name="FallingBlock" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 0, 360 ) + +[node name="FallingBlock2" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 8, 360 ) + +[node name="FallingBlock3" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 16, 360 ) + +[node name="FallingBlock4" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 24, 360 ) + +[node name="FallingBlock5" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 32, 360 ) + +[node name="FallingBlock6" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 40, 360 ) + +[node name="FallingBlock7" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 168, 328 ) + +[node name="FallingBlock9" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 168, 352 ) + +[node name="FallingBlock8" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 152, 312 ) + +[node name="FallingBlock10" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 184, 304 ) + +[node name="Ladders" type="Node2D" parent="Environment"] + +[node name="Ladder" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 0, 80 ) +scale = Vector2( 1, 18 ) +can_climb_left = false + +[node name="Ladder2" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 232, 408 ) +scale = Vector2( 1, 12 ) + +[node name="Ladder6" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 248, 176 ) +scale = Vector2( 1, 6 ) +can_climb_right = false + +[node name="Ladder3" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 88, 352 ) +scale = Vector2( 1, 7 ) + +[node name="Ladder5" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 0, 312 ) +scale = Vector2( 1, 5 ) +can_climb_left = false + +[node name="Ladder9" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 88, 256 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder10" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 104, 312 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder8" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 72, 40 ) +scale = Vector2( 1, 2 ) + +[node name="Ladder4" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 32, 472 ) +scale = Vector2( 1, 8 ) +can_climb_left = false + +[node name="Ladder7" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 8, 432 ) +scale = Vector2( 1, 15 ) + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Mines" type="Node2D" parent="Enemies"] + +[node name="Mine" parent="Enemies/Mines" instance=ExtResource( 11 )] +position = Vector2( 44, 120 ) + +[node name="Mine2" parent="Enemies/Mines" instance=ExtResource( 11 )] +position = Vector2( 80, 96 ) + +[node name="Mine4" parent="Enemies/Mines" instance=ExtResource( 11 )] +position = Vector2( 184, 128 ) + +[node name="Squigs" type="Node2D" parent="Enemies"] + +[node name="Squig2" parent="Enemies/Squigs" instance=ExtResource( 14 )] +position = Vector2( 132, 352 ) +left_up_boundary = 4.0 +speed = 30 + +[node name="Squig3" parent="Enemies/Squigs" instance=ExtResource( 14 )] +position = Vector2( 88, 288 ) +left_up_boundary = 7.0 +speed = 30 + +[node name="Eels" type="Node2D" parent="Enemies"] +position = Vector2( 24, 0 ) + +[node name="Eel4" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( -24, 528 ) +curve = SubResource( 13 ) +speed = 60.0 + +[node name="Eel" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( 120, 72 ) +curve = SubResource( 15 ) +speed = 50.0 + +[node name="Eel2" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( 48, 1472 ) +curve = SubResource( 14 ) + +[node name="Eel6" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( 176, 240 ) +curve = SubResource( 16 ) +speed = 45.0 + +[node name="Eel7" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( 136, 184 ) +curve = SubResource( 17 ) + +[node name="Eel8" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( 192, 296 ) +curve = SubResource( 24 ) + +[node name="Eel3" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( 40, 104 ) +curve = SubResource( 23 ) + +[node name="Fishes" type="Node2D" parent="Enemies"] + +[node name="Fish" parent="Enemies/Fishes" instance=ExtResource( 12 )] +position = Vector2( 72, 64 ) +left_up_boundary = 3.0 +right_down_boundary = 4.0 + +[node name="Fish4" parent="Enemies/Fishes" instance=ExtResource( 12 )] +position = Vector2( 128, 552 ) +left_up_boundary = 5.0 +right_down_boundary = 8.0 +speed = 40 + +[node name="Fish5" parent="Enemies/Fishes" instance=ExtResource( 12 )] +position = Vector2( 120, 520 ) +left_up_boundary = 3.0 +right_down_boundary = 8.0 +speed = 60 + +[node name="Fish6" parent="Enemies/Fishes" instance=ExtResource( 12 )] +position = Vector2( 24, 352 ) +left_up_boundary = 3.0 +right_down_boundary = 7.0 +speed = 60 + +[node name="Turtle" type="Node2D" parent="Enemies"] + +[node name="Turtle" parent="Enemies/Turtle" instance=ExtResource( 16 )] +position = Vector2( 112, 32 ) +left_up_boundary = 7.0 +right_down_boundary = 8.0 +speed = 50 +spike_positions = [ 0.0 ] + +[node name="Turtle2" parent="Enemies/Turtle" instance=ExtResource( 16 )] +position = Vector2( 24, 280 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 +speed = 30 +spike_positions = [ 0.0 ] + +[node name="Turtle3" parent="Enemies/Turtle" instance=ExtResource( 16 )] +position = Vector2( 192, 472 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 +speed = 30 +spike_positions = [ 0.0 ] +spike_direction = 1 + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Star" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 88, 136 ) +color = 3 + +[node name="Star2" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 208, 56 ) +color = 4 + +[node name="Key" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 32, 32 ) + +[node name="Key2" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 48, 32 ) + +[node name="Key3" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 40, 104 ) + +[node name="Key18" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 24, 160 ) + +[node name="Key15" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 248, 344 ) + +[node name="Key16" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 96, 432 ) + +[node name="Key17" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 248, 288 ) + +[node name="Key5" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 88, 64 ) + +[node name="Key7" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 160, 240 ) + +[node name="Key8" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 232, 216 ) + +[node name="Key12" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 104, 80 ) + +[node name="Key13" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 24, 72 ) + +[node name="Key14" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 112, 168 ) + +[node name="Key9" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 88, 168 ) + +[node name="Key10" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 136, 176 ) + +[node name="Key11" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 56, 168 ) + +[node name="Key6" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 48, 64 ) + +[node name="Key4" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 16, 104 ) + +[node name="Shard" parent="Collectibles" instance=ExtResource( 22 )] +position = Vector2( 160, 120 ) +number = 3 + +[node name="Shard4" parent="Collectibles" instance=ExtResource( 22 )] +position = Vector2( 208, 360 ) +number = 1 + +[node name="Star4" parent="Collectibles" instance=ExtResource( 17 )] +modulate = Color( 0.764706, 0.752941, 1, 1 ) +position = Vector2( 104, 480 ) + +[node name="Shard2" parent="Collectibles" instance=ExtResource( 22 )] +position = Vector2( 0, 256 ) +number = 2 + +[node name="Shard3" parent="Collectibles" instance=ExtResource( 22 )] +position = Vector2( 232, 552 ) + +[node name="Star5" parent="Collectibles" instance=ExtResource( 17 )] +modulate = Color( 0.803922, 0.905882, 1, 1 ) +position = Vector2( 8, 424 ) +color = 1 + +[node name="Key19" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 48, 544 ) + +[node name="Key20" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 64, 536 ) + +[node name="Key21" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 80, 552 ) + +[node name="Key22" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 96, 520 ) + +[node name="Key23" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 144, 520 ) + +[node name="Key24" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 184, 504 ) + +[node name="Key25" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 128, 480 ) + +[node name="Key26" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 56, 472 ) + +[node name="Key27" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 72, 456 ) + +[node name="Key28" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 104, 456 ) + +[node name="Key29" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 200, 288 ) + +[node name="Key36" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 112, 352 ) + +[node name="Key37" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 152, 352 ) + +[node name="Key38" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 184, 336 ) + +[node name="Key39" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 208, 496 ) + +[node name="Key40" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 144, 296 ) + +[node name="Key41" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 120, 296 ) + +[node name="Key44" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 144, 256 ) + +[node name="Key45" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 104, 256 ) + +[node name="Key46" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 224, 288 ) + +[node name="Key47" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 208, 216 ) + +[node name="Key49" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 144, 552 ) + +[node name="Key50" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 208, 552 ) + +[node name="Key48" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 184, 256 ) + +[node name="Key42" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 24, 304 ) + +[node name="Key43" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 56, 304 ) + +[node name="Key30" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 64, 432 ) + +[node name="Key31" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 40, 304 ) + +[node name="Key33" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 136, 424 ) + +[node name="Key34" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 176, 424 ) + +[node name="Key35" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 208, 424 ) + +[node name="Key32" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 32, 400 ) + +[node name="Star6" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 184, 176 ) +color = 2 + +[node name="Arrow" parent="Collectibles" instance=ExtResource( 23 )] +position = Vector2( 240, 312 ) + +[node name="Bubbles" type="Node2D" parent="."] + +[node name="BubbleSpawner" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 200, 24 ) + +[node name="BubbleSpawner2" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 64, 64 ) + +[node name="BubbleSpawner3" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 88, 136 ) +delay = 1.5 + +[node name="BubbleSpawner4" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 24, 104 ) + +[node name="BubbleSpawner5" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 24, 160 ) + +[node name="BubbleSpawner8" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 24, 552 ) + +[node name="BubbleSpawner10" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 88, 432 ) + +[node name="BubbleSpawner13" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 72, 288 ) + +[node name="BubbleSpawner18" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 136, 352 ) + +[node name="BubbleSpawner15" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 240, 288 ) + +[node name="BubbleSpawner16" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 224, 176 ) + +[node name="BubbleSpawner17" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 184, 176 ) + +[node name="BubbleSpawner12" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 24, 400 ) + +[node name="BubbleSpawner11" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 160, 424 ) + +[node name="BubbleSpawner9" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 216, 528 ) + +[node name="BubbleSpawner6" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 136, 40 ) + +[node name="BubbleSpawner7" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 64, 216 ) + +[node name="Respawns" type="Node2D" parent="."] + +[node name="RespawnPoint" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 88, 400 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint"] +position = Vector2( -44.9375, 4 ) +shape = SubResource( 19 ) + +[node name="RespawnPoint2" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 88, 368 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint2"] +position = Vector2( -44.125, 4 ) +shape = SubResource( 19 ) + +[node name="RespawnPoint4" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 96, 368 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint4"] +position = Vector2( 20, 4 ) +shape = SubResource( 25 ) + +[node name="RespawnPoint3" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 96, 400 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint3"] +position = Vector2( 79.5, 4 ) +shape = SubResource( 20 ) + +[node name="RespawnPoint5" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 248, 200 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint5"] +position = Vector2( -34, 4 ) +shape = SubResource( 21 ) + +[node name="RespawnPoint6" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 248, 176 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint6"] +position = Vector2( -32, 4 ) +shape = SubResource( 21 ) + +[node name="RespawnPoint7" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 8, 208 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint7"] +position = Vector2( 36, 4 ) +shape = SubResource( 21 ) + +[node name="RespawnPoint8" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 8, 168 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint8"] +position = Vector2( 36, 4 ) +shape = SubResource( 21 ) + +[node name="Exit" parent="." instance=ExtResource( 26 )] +position = Vector2( 16, 28 ) +cost = 25 diff --git a/maps/boss/boss1_arena.gd b/maps/boss/boss1_arena.gd new file mode 100644 index 0000000..091ca90 --- /dev/null +++ b/maps/boss/boss1_arena.gd @@ -0,0 +1,51 @@ +extends "res://maps/map.gd" + +const Text3D = preload("res://objects/hud/3d_text.tscn") + +var speccy_can_yap: bool = true + +func _ready(): + Game.current_sector = Vector2.ZERO + +func _on_Boss1_died(): + Game.change_map(load("res://maps/level_select.tscn")) + + +func _on_Boss1_entered_phase(phase): + match phase: + 2: + $DelayedArrow2.start() + speccy_can_yap = false + 3: + $DelayedArrow3.start() + 4: + $ExitTimer.start() + if not Debug.prey_slaughtered: + var text_3d = Text3D.instance() + text_3d.anim = "victory" + self.add_child(text_3d) + else: + var text_3d = Text3D.instance() + text_3d.anim = "prey slaughtered" + self.add_child(text_3d) + Game.instance_node(load("res://objects/environment/blood_rain/blood_rain.tscn"),0,0,self) + + +func _on_ExitTimer_timeout(): + Game.can_pause = false + Game.save_boss() + if Game.marathon_mode: + Game.current_level += 1 + if Game.current_level > LevelData.marathon_end: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(load("res://menus/main_menu.tscn").instance()) + else: + Game.change_map(LevelData.levels[Game.current_level].scene) + else: + Game.change_map(load("res://menus/level_select_scholar.tscn")) + + +func _on_SpeccyTimer_timeout() -> void: + if speccy_can_yap: + $Speccy.appear() diff --git a/maps/boss/boss1_arena.tscn b/maps/boss/boss1_arena.tscn new file mode 100644 index 0000000..d346699 --- /dev/null +++ b/maps/boss/boss1_arena.tscn @@ -0,0 +1,122 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://objects/enemy/boss/scrump.tscn" type="PackedScene" id=1] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/backgrounds/mountain_clouds.png" type="Texture" id=3] +[ext_resource path="res://graphics/backgrounds/mountain_sunset.png" type="Texture" id=4] +[ext_resource path="res://tilesets/t_mountain.tres" type="TileSet" id=5] +[ext_resource path="res://objects/hud/hud_boss.tscn" type="PackedScene" id=6] +[ext_resource path="res://maps/boss/boss1_arena.gd" type="Script" id=7] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=8] +[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=9] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=10] +[ext_resource path="res://audio/music/klystron.ogg" type="AudioStream" id=11] +[ext_resource path="res://objects/delayed_instance.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/environment/death tile/death_tile.tscn" type="PackedScene" id=13] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=14] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=15] +[ext_resource path="res://objects/lore/boss/the_scrump.tscn" type="PackedScene" id=16] +[ext_resource path="res://graphics/turniwood/turning_platform_wood_dark.png" type="Texture" id=17] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=18] + +[node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 7 ) +music = ExtResource( 11 ) +lore_entries = [ ExtResource( 16 ) ] + +[node name="BossHUD" parent="." instance=ExtResource( 6 )] +song_name = "♫Klystron" + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +z_index = -2 +texture = ExtResource( 4 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Sprite2" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +z_index = -2 +texture = ExtResource( 3 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="TileMap" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 2 +material = ExtResource( 15 ) +tile_set = ExtResource( 5 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( -65537, 0, 0, -131072, 0, 0, -131071, 0, 0, -131070, 0, 0, -131069, 0, 0, -131068, 0, 0, -131067, 0, 0, -131066, 0, 0, -131065, 0, 0, -131064, 0, 0, -131063, 0, 0, -131062, 0, 0, -131061, 0, 0, -131060, 0, 0, -131059, 0, 0, -131058, 0, 0, -131057, 0, 0, -131056, 0, 0, -131055, 0, 0, -131054, 0, 0, -131053, 0, 0, -131052, 0, 0, -131051, 0, 0, -131050, 0, 0, -131049, 0, 0, -131048, 0, 0, -131047, 0, 0, -131046, 0, 0, -131045, 0, 0, -131044, 0, 0, -131043, 0, 0, -131042, 0, 0, -131041, 0, 0, -131040, 0, 0, -1, 0, 0, -65504, 0, 0, 65535, 0, 0, 32, 0, 0, 131071, 0, 0, 65568, 0, 0, 196607, 0, 0, 131104, 0, 0, 262143, 0, 0, 196640, 0, 0, 327679, 0, 0, 262176, 0, 0, 393215, 0, 0, 327712, 0, 0, 458751, 0, 0, 393248, 0, 0, 524287, 0, 0, 458784, 0, 0, 589823, 0, 0, 524320, 0, 0, 655359, 0, 0, 589856, 0, 0, 720895, 0, 0, 655370, 0, 65536, 655371, 0, 65537, 655372, 0, 65538, 655392, 0, 0, 786431, 0, 0, 720928, 0, 0, 851967, 0, 0, 786436, 0, 65536, 786437, 0, 65537, 786438, 0, 65538, 786464, 0, 0, 917503, 0, 0, 852000, 0, 0, 983039, 0, 0, 917536, 0, 0, 1048575, 0, 0, 983072, 0, 0, 1114111, 0, 0, 1048608, 0, 0, 1179647, 0, 0, 1114122, 0, 65536, 1114123, 0, 65537, 1114124, 0, 65537, 1114125, 0, 65537, 1114126, 0, 65538, 1114144, 0, 0, 1245183, 0, 0, 1179680, 0, 0, 1310719, 0, 0, 1245216, 0, 0, 1376255, 0, 0, 1310720, 0, 65537, 1310721, 0, 65537, 1310722, 0, 65537, 1310723, 0, 65537, 1310724, 0, 65537, 1310725, 0, 65537, 1310726, 0, 65537, 1310727, 0, 65537, 1310728, 0, 65537, 1310729, 0, 65537, 1310730, 0, 65537, 1310731, 0, 65537, 1310732, 0, 65537, 1310733, 0, 65537, 1310734, 0, 65537, 1310735, 0, 65537, 1310736, 0, 65537, 1310737, 0, 65537, 1310738, 0, 65537, 1310739, 0, 65537, 1310740, 0, 0, 1310752, 0, 0, 1441791, 0, 0, 1376276, 0, 0, 1376288, 0, 0, 1507327, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441824, 0, 0, 1572863, 0, 0, 1507360, 0, 0, 1638399, 0, 0, 1572896, 0, 0 ) + +[node name="Player" parent="." instance=ExtResource( 2 )] +position = Vector2( 48, 160 ) +use_iframes = true + +[node name="Ladder" type="TileMap" parent="."] +tile_set = ExtResource( 14 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 786440, 0, 2, 851976, 0, 2, 917512, 0, 2 ) + +[node name="Boss1" parent="." instance=ExtResource( 1 )] +position = Vector2( 168, 112 ) +left_up_boundary = 10.0 +right_down_boundary = 2.0 + +[node name="TurningPlatform" parent="." instance=ExtResource( 9 )] +position = Vector2( 72, 144 ) +texture = ExtResource( 17 ) + +[node name="TurningPlatform2" parent="." instance=ExtResource( 9 )] +position = Vector2( 120, 144 ) +texture = ExtResource( 17 ) + +[node name="Ladder2" parent="." instance=ExtResource( 10 )] +position = Vector2( 64, 96 ) +scale = Vector2( 1, 3 ) + +[node name="DelayedArrow" parent="." instance=ExtResource( 12 )] +delay = 5.0 +autostart = true + +[node name="Arrow" parent="DelayedArrow" instance=ExtResource( 8 )] +position = Vector2( 96, 128 ) + +[node name="DelayedArrow2" parent="." instance=ExtResource( 12 )] +delay = 5.0 + +[node name="Arrow2" parent="DelayedArrow2" instance=ExtResource( 8 )] +position = Vector2( 40, 88 ) + +[node name="DelayedArrow3" parent="." instance=ExtResource( 12 )] +delay = 5.0 + +[node name="Arrow3" parent="DelayedArrow3" instance=ExtResource( 8 )] +position = Vector2( 88, 72 ) + +[node name="DeathTile" parent="." instance=ExtResource( 13 )] +position = Vector2( 0, 192 ) +scale = Vector2( 32, 1 ) + +[node name="ExitTimer" type="Timer" parent="."] +wait_time = 5.0 +one_shot = true + +[node name="Speccy" parent="." instance=ExtResource( 18 )] +position = Vector2( 96, 80 ) +message = "shoot_the_eye" + +[node name="SpeccyTimer" type="Timer" parent="."] +process_mode = 0 +wait_time = 30.0 +one_shot = true +autostart = true + +[connection signal="died" from="Boss1" to="." method="_on_Boss1_died"] +[connection signal="entered_phase" from="Boss1" to="." method="_on_Boss1_entered_phase"] +[connection signal="timeout" from="ExitTimer" to="." method="_on_ExitTimer_timeout"] +[connection signal="timeout" from="SpeccyTimer" to="." method="_on_SpeccyTimer_timeout"] diff --git a/maps/boss/boss2_arena.gd b/maps/boss/boss2_arena.gd new file mode 100644 index 0000000..959ee44 --- /dev/null +++ b/maps/boss/boss2_arena.gd @@ -0,0 +1,44 @@ +extends "res://maps/map.gd" + +const Text3D = preload("res://objects/hud/3d_text.tscn") + +var speccy_will_yell: bool = true + +func _ready(): + Game.current_sector = Vector2.ZERO + +func _on_2600_entered_phase(phase): + match phase: + 2: + Audio.play_sound(Audio.a_glass_crack,Audio.ac_mech_hurt) + $DelayedArrow2.start() + speccy_will_yell = false + 3: + Audio.play_sound(Audio.a_glass_break,Audio.ac_mech_hurt) + $DelayedArrow3.start() + 4: + $ExitTimer.start() + var text_3d = Text3D.instance() + text_3d.anim = "victory" + yield(get_tree(), "idle_frame") + self.add_child(text_3d) + + +func _on_ExitTimer_timeout(): + Game.can_pause = false + Game.save_boss() + if Game.marathon_mode: + Game.current_level += 1 + if Game.current_level > LevelData.marathon_end: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(load("res://menus/marathon_results.tscn").instance()) + else: + Game.change_map(LevelData.levels[Game.current_level].scene) + else: + Game.change_map(load("res://menus/level_select_scholar.tscn")) + + +func _on_SpeccyTimer_timeout() -> void: + if speccy_will_yell: + $Speccy.appear() diff --git a/maps/boss/boss2_arena.tscn b/maps/boss/boss2_arena.tscn new file mode 100644 index 0000000..f127836 --- /dev/null +++ b/maps/boss/boss2_arena.tscn @@ -0,0 +1,160 @@ +[gd_scene load_steps=20 format=2] + +[ext_resource path="res://tilesets/t_factory.tres" type="TileSet" id=1] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=2] +[ext_resource path="res://objects/environment/falling_block/falling_block_lab.tscn" type="PackedScene" id=3] +[ext_resource path="res://graphics/backgrounds/steel.png" type="Texture" id=4] +[ext_resource path="res://maps/boss/boss2_arena.gd" type="Script" id=5] +[ext_resource path="res://objects/hud/hud_boss.tscn" type="PackedScene" id=6] +[ext_resource path="res://audio/music/klystron_vip.ogg" type="AudioStream" id=7] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=8] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=9] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=10] +[ext_resource path="res://objects/lore/boss/dr_intelli.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/delayed_instance.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/environment/death tile/death_tile.tscn" type="PackedScene" id=13] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=14] +[ext_resource path="res://objects/enemy/boss/2600.tscn" type="PackedScene" id=15] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=16] +[ext_resource path="res://objects/lore/boss/2600.tscn" type="PackedScene" id=17] +[ext_resource path="res://objects/lore/boss/steel_factory.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=19] + +[node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 5 ) +music = ExtResource( 7 ) +lore_entries = [ ExtResource( 17 ), ExtResource( 11 ), ExtResource( 18 ) ] + +[node name="BossHUD" parent="." instance=ExtResource( 6 )] +song_name = "♫Klystron VIP" + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +z_index = -2 +texture = ExtResource( 4 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="2600" parent="." instance=ExtResource( 15 )] +position = Vector2( 152, 8 ) + +[node name="Ground" type="Node2D" parent="."] + +[node name="TileMap" type="TileMap" parent="Ground" groups=["can_stain"]] +light_mask = 2 +material = ExtResource( 9 ) +tile_set = ExtResource( 1 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 65535, 0, 0, 131071, 0, 0, 196607, 0, 0, 262143, 0, 0, 327679, 0, 0, 393215, 0, 0, 458751, 0, 0, 393228, 0, 0, 393229, 0, 0, 393230, 0, 0, 393231, 0, 0, 524287, 0, 0, 458763, 0, 131074, 458764, 0, 131074, 458765, 0, 131074, 458766, 0, 131074, 589823, 0, 0, 524298, 0, 131074, 524299, 0, 131074, 524300, 0, 131074, 524301, 0, 131074, 524302, 0, 131074, 655359, 0, 0, 589829, 0, 0, 589830, 0, 0, 589833, 0, 0, 589839, 0, 131074, 589840, 0, 131074, 720895, 0, 0, 655376, 0, 131074, 786431, 0, 0, 720909, 0, 131074, 720910, 0, 131074, 720911, 0, 131074, 720912, 0, 131074, 851967, 0, 0, 786447, 0, 131074, 917503, 0, 0, 851971, 0, 0, 851972, 0, 0, 851973, 0, 0, 851974, 0, 0, 851977, 0, 0, 851978, 0, 0, 851979, 0, 0, 983039, 0, 0, 1048575, 0, 0, 983040, 0, 0, 1114111, 0, 0, 1048576, 0, 0, 1048577, 0, 0, 1048583, 0, 131074, 1179647, 0, 0, 1114112, 0, 0, 1114113, 0, 0, 1114114, 0, 0, 1114119, 0, 131074, 1245183, 0, 0, 1179650, 0, 0, 1179651, 0, 0, 1179652, 0, 0, 1179653, 0, 0, 1179654, 0, 0, 1179655, 0, 0, 1179656, 0, 0, 1179657, 0, 0, 1310719, 0, 0, 1376255, 0, 0, 1310734, 0, 0, 1310735, 0, 0, 1441791, 0, 0, 1507327, 0, 0, 1441792, 0, 1, 1441793, 0, 2, 1441794, 0, 2, 1441795, 0, 2, 1441796, 0, 2, 1441797, 0, 2, 1441798, 0, 2, 1441799, 0, 2, 1441800, 0, 2, 1441801, 0, 2, 1441802, 0, 2, 1441803, 0, 2, 1441804, 0, 2, 1441805, 0, 2, 1441806, 0, 2, 1441807, 0, 2, 1441808, 0, 2, 1441809, 0, 2, 1441810, 0, 2, 1441811, 0, 2, 1441812, 0, 2, 1441813, 0, 2, 1441814, 0, 2, 1441815, 0, 2, 1441816, 0, 2, 1441817, 0, 2, 1441818, 0, 2, 1441819, 0, 2, 1441820, 0, 2, 1441821, 0, 2, 1441822, 0, 2, 1441823, 0, 3, 1572863, 0, 0, 1507328, 0, 65536, 1507329, 0, 0, 1507330, 0, 65536, 1507331, 0, 0, 1507332, 0, 65536, 1507333, 0, 0, 1507334, 0, 65536, 1507335, 0, 0, 1507336, 0, 65536, 1507337, 0, 0, 1507338, 0, 65536, 1507339, 0, 0, 1507340, 0, 65536, 1507341, 0, 0, 1507342, 0, 65536, 1507343, 0, 0, 1507344, 0, 65536, 1507345, 0, 0, 1507346, 0, 65536, 1507347, 0, 0, 1507348, 0, 65536, 1507349, 0, 0, 1507350, 0, 65536, 1507351, 0, 0, 1507352, 0, 65536, 1507353, 0, 0, 1507354, 0, 65536, 1507355, 0, 0, 1507356, 0, 65536, 1507357, 0, 0, 1507358, 0, 65536, 1507359, 0, 0 ) + +[node name="Collapse" type="TileMap" parent="Ground" groups=["can_stain", "delete_on_collapse"]] +light_mask = 2 +material = ExtResource( 9 ) +tile_set = ExtResource( 1 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 589826, 0, 0, 589827, 0, 0, 589828, 0, 0, 589831, 0, 0, 589832, 0, 0, 851975, 0, 0, 851976, 0, 0 ) + +[node name="Ladder" type="TileMap" parent="Ground"] +tile_set = ExtResource( 14 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 655372, 0, 196609, 720908, 0, 196609, 786444, 0, 196609, 851980, 0, 196609 ) + +[node name="Death" type="TileMap" parent="Ground" groups=["death"]] +light_mask = 0 +tile_set = ExtResource( 16 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1048578, 1, 0, 1114118, 1, 0, 1179658, -1610612735, 0 ) + +[node name="FallingBlock2" parent="Ground" instance=ExtResource( 3 )] +position = Vector2( 96, 152 ) + +[node name="FallingBlock8" parent="Ground" instance=ExtResource( 3 )] +position = Vector2( 64, 40 ) + +[node name="FallingBlock6" parent="Ground" instance=ExtResource( 3 )] +position = Vector2( 32, 40 ) + +[node name="FallingBlock4" parent="Ground" instance=ExtResource( 3 )] +position = Vector2( 8, 56 ) + +[node name="Player" parent="." instance=ExtResource( 2 )] +position = Vector2( 24, 176 ) +use_iframes = true + +[node name="Ladder2" parent="." instance=ExtResource( 10 )] +position = Vector2( 96, 80 ) +scale = Vector2( 1, 4 ) + +[node name="DelayedArrow" parent="." instance=ExtResource( 12 )] +delay = 0.1 +autostart = true + +[node name="Arrow" parent="DelayedArrow" instance=ExtResource( 8 )] +position = Vector2( 64, 168 ) + +[node name="DelayedArrow2" parent="." instance=ExtResource( 12 )] +delay = 0.1 + +[node name="Arrow2" parent="DelayedArrow2" instance=ExtResource( 8 )] +position = Vector2( 72, 168 ) + +[node name="DelayedArrow3" parent="." instance=ExtResource( 12 )] +delay = 0.1 + +[node name="Arrow3" parent="DelayedArrow3" instance=ExtResource( 8 )] +position = Vector2( 80, 168 ) + +[node name="DeathTile" parent="." instance=ExtResource( 13 )] +position = Vector2( 0, 192 ) +scale = Vector2( 32, 1 ) + +[node name="ExitTimer" type="Timer" parent="."] +wait_time = 5.0 +one_shot = true + +[node name="Enemies" type="Node2D" parent="."] + +[node name="ColorRect" type="ColorRect" parent="."] +visible = false +margin_left = 155.0 +margin_top = 75.0 +margin_right = 163.0 +margin_bottom = 228.0 +rect_rotation = 45.0 + +[node name="ColorRect3" type="ColorRect" parent="."] +visible = false +margin_left = 152.0 +margin_top = 67.0 +margin_right = 160.0 +margin_bottom = 220.0 +rect_rotation = 70.0 + +[node name="ColorRect2" type="ColorRect" parent="."] +visible = false +margin_left = 8.0 +margin_top = 59.0 +margin_right = 152.0 +margin_bottom = 67.0 + +[node name="Speccy" parent="." instance=ExtResource( 19 )] +position = Vector2( 152, 176 ) +flip = true +message = "break_the_glass" + +[node name="SpeccyTimer" type="Timer" parent="."] +process_mode = 0 +wait_time = 45.0 +one_shot = true +autostart = true + +[connection signal="entered_phase" from="2600" to="." method="_on_2600_entered_phase"] +[connection signal="timeout" from="ExitTimer" to="." method="_on_ExitTimer_timeout"] +[connection signal="timeout" from="SpeccyTimer" to="." method="_on_SpeccyTimer_timeout"] diff --git a/maps/boss/boss3_arena.gd b/maps/boss/boss3_arena.gd new file mode 100644 index 0000000..2c36a93 --- /dev/null +++ b/maps/boss/boss3_arena.gd @@ -0,0 +1,100 @@ +extends "res://maps/map.gd" + + +onready var sg_health: TextureProgress = $"%SGHealthBar" +onready var sg_energy: TextureProgress = $"%SGEnergyBar" +onready var fami_health: TextureProgress = $"%FamiHealthBar" +onready var laser_ok: TextureRect = $"%LaserOk" +onready var sg2083: KinematicBody2D = $"2083" +onready var famira: Node2D = $Famira + + +func _ready() -> void: + sg_energy.max_value = sg2083.max_energy + sg2083.state = sg2083.State.INACTIVE + famira.animation_player.play("grow", -1.0, 0.0) + Audio.play_sound(Audio.a_ominous,Audio.ac_collectible) + Audio.play_music(load("res://audio/music/the_dirt_under_the_meadow.ogg")) + + +func _on_2083_health_changed(amount) -> void: + sg_health.value = amount - 4 + + +func _on_Famira_health_changed(amount) -> void: + fami_health.value = ceil(amount) - 3 + + +func _on_cutscene_finished() -> void: + sg2083.visible = true + famira.visible = true + famira.animation_player.play("grow") + $AnimationPlayer.play("drop-stg") + Audio.play_music(load("res://audio/music/rumble_revolution.ogg")) + yield(get_tree().create_timer(0.5), "timeout") + $FamiCutscene/FamiHuman.visible = false + + +func fade() -> void: + Fade.fade_out(0.4) + Game.can_pause = true + yield(Fade, "fade_finished") + sg2083.anims.play("force idle") + Fade.fade_in(0.4) + $"%GUI".visible = true + yield(Fade, "fade_finished") + sg2083.state = sg2083.State.STAND + $FamiCutscene.queue_free() + Game.can_pause = true + Game.can_restart = true + famira.state_chart.send_event("transformed") + + +func start_fight() -> void: + famira.animation_player.state_chart.send_event("transformed") + + +func _on_2083_energy_changed(amount,laser_energy) -> void: + sg_energy.value = amount - 3 + #Display heads up of laser status + if amount >= laser_energy: + if !Audio.ac_collectible.is_playing() && $"%LaserOk".visible == false: Audio.play_sound(Audio.a_laser_ready,Audio.ac_collectible) + $"%LaserOk".visible = true + else: + $"%LaserOk".visible = false + + +func _on_Famira_died() -> void: + sg2083.state = sg2083.State.INACTIVE + SpeedrunTimer.timer_running = false + Game.can_pause = false + var tween = create_tween() + tween.set_trans(Tween.TRANS_CUBIC) + tween.tween_property($"%Camera", "global_position:x", famira.global_position.x - 128, 0.5) + tween.tween_interval(10.0) + tween.tween_callback(self, "_on_death_cooldown") + + +func _on_death_cooldown() -> void: + Game.can_pause = false + if Game.marathon_mode: + Game.current_level += 1 + if Game.current_level > LevelData.marathon_end: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(load("res://menus/marathon_results.tscn").instance()) + else: + Game.change_map(LevelData.levels[Game.current_level].scene) + else: + Game.change_map(load("res://cutscenes/ending_future.tscn")) + +func _notification(what: int) -> void: + match what: + NOTIFICATION_WM_FOCUS_OUT: + if !Game.can_pause: + Audio.pause_all(true) + get_tree().paused = true + NOTIFICATION_WM_FOCUS_IN: + if !Game.can_pause: + Audio.pause_all(false) + get_tree().paused = false diff --git a/maps/boss/boss3_arena.tscn b/maps/boss/boss3_arena.tscn new file mode 100644 index 0000000..26217b9 --- /dev/null +++ b/maps/boss/boss3_arena.tscn @@ -0,0 +1,372 @@ +[gd_scene load_steps=33 format=2] + +[ext_resource path="res://objects/enemy/boss/sg2083.tscn" type="PackedScene" id=1] +[ext_resource path="res://tilesets/t_laboratory.tres" type="TileSet" id=2] +[ext_resource path="res://maps/boss/boss3_arena.gd" type="Script" id=3] +[ext_resource path="res://objects/enemy/boss/famira.tscn" type="PackedScene" id=4] +[ext_resource path="res://ui/theme.tres" type="Theme" id=5] +[ext_resource path="res://tilesets/t_station.tres" type="TileSet" id=6] +[ext_resource path="res://cutscenes/fami_cutscene.tscn" type="PackedScene" id=7] +[ext_resource path="res://objects/lore/boss/fami.tscn" type="PackedScene" id=8] +[ext_resource path="res://graphics/backgrounds/fami_rooftop.png" type="Texture" id=9] +[ext_resource path="res://graphics/hud/laser_ok.png" type="Texture" id=10] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=11] +[ext_resource path="res://graphics/hud/2083_energy_back.png" type="Texture" id=12] +[ext_resource path="res://graphics/hud/famira_health_filled.png" type="Texture" id=13] +[ext_resource path="res://graphics/hud/famira_health_back.png" type="Texture" id=14] +[ext_resource path="res://graphics/hud/2083_energy_filled.png" type="Texture" id=15] +[ext_resource path="res://graphics/hud/2083_health_filled.png" type="Texture" id=16] +[ext_resource path="res://graphics/hud/2083_health_back.png" type="Texture" id=17] +[ext_resource path="res://shaders/color_noise.gdshader" type="Shader" id=18] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=19] +[ext_resource path="res://shaders/beam_cycle.gdshader" type="Shader" id=20] +[ext_resource path="res://graphics/enemy/boss/stg_2600/beam_gradient.png" type="Texture" id=21] +[ext_resource path="res://graphics/hud/laser_ok_text.png" type="Texture" id=22] +[ext_resource path="res://graphics/npc/speccy.png" type="Texture" id=23] +[ext_resource path="res://objects/lore/boss/sg_2083.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/lore/hills/sg.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/lore/lab/scope.tscn" type="PackedScene" id=26] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=27] + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 19 ) +shader_param/color_1 = Color( 1, 0.282353, 0, 0 ) +shader_param/color_2 = Color( 0.478431, 0.113725, 0, 0.619608 ) +shader_param/checker_size = Vector2( 4, 6 ) +shader_param/pan_speed = Vector2( 4, 6 ) +shader_param/cycle_speed = Vector2( 8, 0 ) +shader_param/cycle_alternation = Vector2( 1, 8 ) +shader_param/uv_transform = Transform2D( 1, 2, 1, 3, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 18 ) +shader_param/animate_noise = true +shader_param/noise_intensity = 1.0 +shader_param/fps = 60.0 + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 20 ) +shader_param/cycle_speed = 3.0 +shader_param/gradient = ExtResource( 21 ) + +[sub_resource type="Animation" id=1] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("2083:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 12 ) ] +} +tracks/1/type = "bezier" +tracks/1/path = NodePath("2083:position:x") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"points": PoolRealArray( 0, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0 ) +} +tracks/2/type = "bezier" +tracks/2/path = NodePath("2083:position:y") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"points": PoolRealArray( 12, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0 ) +} +tracks/3/type = "value" +tracks/3/path = NodePath("2083:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("CanvasLayer/Sprite:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("FamiCutscene:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} + +[sub_resource type="Animation" id=2] +resource_name = "drop-stg" +length = 4.4 +tracks/0/type = "bezier" +tracks/0/path = NodePath("2083:position:y") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"points": PoolRealArray( -300, -0.25, 0, 0.2, 0, 12, -0.1, -149.978, 0.25, 0 ), +"times": PoolRealArray( 3, 3.5 ) +} +tracks/1/type = "value" +tracks/1/path = NodePath("2083:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 3 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("FamiCutscene") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 3.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "kill_cop" +} ] +} +tracks/3/type = "method" +tracks/3/path = NodePath("2083") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 3.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ true ], +"method": "land" +} ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("FamiCutscene:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 3, 4.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ true, false ] +} +tracks/5/type = "method" +tracks/5/path = NodePath(".") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 4 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "fade" +} ] +} + +[node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 3 ) +lore_entries = [ ExtResource( 8 ), ExtResource( 25 ), ExtResource( 24 ), ExtResource( 26 ) ] + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = -11 + +[node name="Sprite" type="Sprite" parent="CanvasLayer"] +position = Vector2( 128, 0 ) +texture = ExtResource( 9 ) +centered = false +offset = Vector2( -128, 0 ) + +[node name="ColorRect2" type="ColorRect" parent="CanvasLayer"] +material = SubResource( 4 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="ColorRect" type="ColorRect" parent="CanvasLayer"] +material = SubResource( 3 ) +margin_right = 256.0 +margin_bottom = 192.0 +color = Color( 1, 0, 0, 0.333333 ) + +[node name="GUI" type="CanvasLayer" parent="."] +unique_name_in_owner = true +visible = false + +[node name="Control" type="Control" parent="GUI"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 5 ) + +[node name="Energy" type="Control" parent="GUI/Control"] +margin_left = 8.0 +margin_top = 167.0 +margin_right = 161.0 +margin_bottom = 178.0 + +[node name="SGEnergyBar" type="TextureProgress" parent="GUI/Control/Energy"] +unique_name_in_owner = true +margin_right = 153.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +value = 100.0 +texture_under = ExtResource( 12 ) +texture_progress = ExtResource( 15 ) + +[node name="Label" type="Label" parent="GUI/Control/Energy"] +material = ExtResource( 11 ) +margin_left = -7.0 +margin_top = 11.0 +margin_right = 146.0 +margin_bottom = 21.0 +text = " Energy" + +[node name="LaserBack" type="TextureRect" parent="GUI/Control/Energy"] +margin_left = 60.0 +margin_top = 11.0 +margin_right = 100.0 +margin_bottom = 22.0 +texture = ExtResource( 10 ) + +[node name="LaserOk" type="TextureRect" parent="GUI/Control/Energy"] +unique_name_in_owner = true +visible = false +material = SubResource( 5 ) +margin_left = 60.0 +margin_top = 11.0 +margin_right = 100.0 +margin_bottom = 22.0 +texture = ExtResource( 22 ) + +[node name="FamiHealth" type="Control" parent="GUI/Control/Energy"] +margin_left = 140.0 +margin_top = -163.0 +margin_right = 286.0 +margin_bottom = -152.0 + +[node name="FamiHealthBar" type="TextureProgress" parent="GUI/Control/Energy/FamiHealth"] +unique_name_in_owner = true +margin_right = 146.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +value = 100.0 +texture_under = ExtResource( 14 ) +texture_progress = ExtResource( 13 ) + +[node name="Label" type="Label" parent="GUI/Control/Energy/FamiHealth"] +material = ExtResource( 11 ) +margin_left = 16.0 +margin_top = 11.0 +margin_right = 162.0 +margin_bottom = 21.0 +text = "Super Famira" + +[node name="SGHealth" type="Control" parent="GUI/Control"] +margin_left = 8.0 +margin_top = 4.0 +margin_right = 407.0 +margin_bottom = 192.0 + +[node name="SGHealthBar" type="TextureProgress" parent="GUI/Control/SGHealth"] +unique_name_in_owner = true +margin_right = 399.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +value = 100.0 +texture_under = ExtResource( 17 ) +texture_progress = ExtResource( 16 ) + +[node name="Label" type="Label" parent="GUI/Control/SGHealth"] +material = ExtResource( 11 ) +margin_top = 11.0 +margin_right = 399.0 +margin_bottom = 21.0 +text = "SG-2083" + +[node name="TileMap2" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 27 ) +tile_set = ExtResource( 6 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 1506202, 0, 131073, 1506203, 0, 131073, 1506204, 0, 131073, 1506205, 0, 131073, 1506206, 0, 131073, 1506207, 0, 131073, 1506208, 0, 131073, 1506209, 0, 131073, 1506210, 0, 131073, 1506211, 0, 131073, 1506212, 0, 131073, 1506213, 0, 131073, 1506214, 0, 131073, 1506215, 0, 131073, 1506216, 0, 131073, 1506217, 0, 131073, 1506218, 0, 131073, 1506219, 0, 131073, 1506220, 0, 131073, 1506221, 0, 131073, 1506222, 0, 131073, 1506223, 0, 131073, 1506224, 0, 131073, 1506225, 0, 131073, 1506226, 0, 131073, 1506227, 0, 131073, 1506228, 0, 131073, 1506229, 0, 131073, 1506230, 0, 131073, 1506231, 0, 131073, 1506232, 0, 131073, 1506233, 0, 131073, 1506234, 0, 131073, 1506235, 0, 131073, 1506236, 0, 131073, 1506237, 0, 131073, 1506238, 0, 131073, 1506239, 0, 131073, 1506240, 0, 131073, 1506241, 0, 131073, 1506242, 0, 131073, 1506243, 0, 131073, 1506244, 0, 131073, 1506245, 0, 131073, 1506246, 0, 131073, 1506247, 0, 131073, 1506248, 0, 131073, 1506249, 0, 131073, 1506250, 0, 131073, 1506251, 0, 131073, 1506252, 0, 131073, 1506253, 0, 131073, 1506254, 0, 131073, 1506255, 0, 131073, 1506256, 0, 131073, 1506257, 0, 131073, 1506258, 0, 131073, 1506259, 0, 131073, 1506260, 0, 131073, 1506261, 0, 131073, 1506262, 0, 131073, 1506263, 0, 131073, 1506264, 0, 131073, 1506265, 0, 131073, 1506266, 0, 131073, 1506267, 0, 131073, 1506268, 0, 131073, 1506269, 0, 131073, 1506270, 0, 131073, 1506271, 0, 131073, 1506272, 0, 131073, 1506273, 0, 131073, 1506274, 0, 131073, 1506275, 0, 131073, 1506276, 0, 131073, 1506277, 0, 131073, 1506278, 0, 131073, 1506279, 0, 131073, 1506280, 0, 131073, 1506281, 0, 131073, 1506282, 0, 131073, 1506283, 0, 131073, 1506284, 0, 131073, 1506285, 0, 131073, 1506286, 0, 131073, 1506287, 0, 131073, 1506288, 0, 131073, 1506289, 0, 131073, 1506290, 0, 131073, 1506291, 0, 131073, 1506292, 0, 131073, 1506293, 0, 131073, 1506294, 0, 131073, 1506295, 0, 131073, 1506296, 0, 131073, 1506297, 0, 131073, 1506298, 0, 131073, 1506299, 0, 131073, 1506300, 0, 131073, 1506301, 0, 131073, 1506302, 0, 131073, 1506303, 0, 131073, 1506304, 0, 131073, 1506305, 0, 131073, 1506306, 0, 131073, 1506307, 0, 131073, 1506308, 0, 131073, 1506309, 0, 131073, 1506310, 0, 131073, 1506311, 0, 131073, 1506312, 0, 131073, 1506313, 0, 131073, 1506314, 0, 131073, 1506315, 0, 131073, 1506316, 0, 131073, 1506317, 0, 131073, 1506318, 0, 131073, 1506319, 0, 131073, 1506320, 0, 131073, 1506321, 0, 131073, 1506322, 0, 131073, 1506323, 0, 131073, 1506324, 0, 131073, 1506325, 0, 131073, 1506326, 0, 131073, 1506327, 0, 131073, 1506328, 0, 131073, 1506329, 0, 131073, 1506330, 0, 131073, 1506331, 0, 131073, 1506332, 0, 131073, 1506333, 0, 131073, 1506334, 0, 131073, 1506335, 0, 131073, 1506336, 0, 131073, 1506337, 0, 131073, 1506338, 0, 131073, 1506339, 0, 131073, 1506340, 0, 131073, 1506341, 0, 131073, 1506342, 0, 131073, 1506343, 0, 131073, 1506344, 0, 131073, 1506345, 0, 131073, 1506346, 0, 131073, 1506347, 0, 131073, 1506348, 0, 131073, 1506349, 0, 131073, 1506350, 0, 131073, 1506351, 0, 131073, 1506352, 0, 131073, 1506353, 0, 131073, 1506354, 0, 131073, 1506355, 0, 131073, 1506356, 0, 131073, 1506357, 0, 131073, 1506358, 0, 131073, 1506359, 0, 131073, 1506360, 0, 131073, 1506361, 0, 131073, 1506362, 0, 131073, 1506363, 0, 131073, 1506364, 0, 131073, 1506365, 0, 131073, 1506366, 0, 131073, 1506367, 0, 131073, 1506368, 0, 131073, 1506369, 0, 131073, 1506370, 0, 131073, 1506371, 0, 131073, 1506372, 0, 131073, 1506373, 0, 131073, 1506374, 0, 131073, 1506375, 0, 131073, 1506376, 0, 131073, 1506377, 0, 131073, 1506378, 0, 131073, 1506379, 0, 131073, 1506380, 0, 131073, 1506381, 0, 131073, 1506382, 0, 131073, 1506383, 0, 131073, 1506384, 0, 131073, 1506385, 0, 131073, 1506386, 0, 131073, 1506387, 0, 131073, 1506388, 0, 131073, 1506389, 0, 131073, 1506390, 0, 131073, 1506391, 0, 131073, 1506392, 0, 131073, 1506393, 0, 131073, 1506394, 0, 131073, 1506395, 0, 131073, 1506396, 0, 131073, 1506397, 0, 131073, 1506398, 0, 131073, 1506399, 0, 131073, 1506400, 0, 131073, 1506401, 0, 131073, 1506402, 0, 131073, 1506403, 0, 131073, 1506404, 0, 131073, 1506405, 0, 131073, 1506406, 0, 131073, 1506407, 0, 131073, 1506408, 0, 131073, 1506409, 0, 131073, 1506410, 0, 131073, 1506411, 0, 131073, 1506412, 0, 131073, 1506413, 0, 131073, 1506414, 0, 131073, 1506415, 0, 131073, 1506416, 0, 131073, 1506417, 0, 131073, 1506418, 0, 131073, 1506419, 0, 131073, 1506420, 0, 131073, 1506421, 0, 131073, 1506422, 0, 131073, 1506423, 0, 131073, 1506424, 0, 131073, 1506425, 0, 131073, 1506426, 0, 131073, 1506427, 0, 131073, 1506428, 0, 131073, 1506429, 0, 131073, 1506430, 0, 131073, 1506431, 0, 131073, 1506432, 0, 131073, 1506433, 0, 131073, 1506434, 0, 131073, 1506435, 0, 131073, 1506436, 0, 131073, 1506437, 0, 131073, 1506438, 0, 131073, 1506439, 0, 131073, 1506440, 0, 131073, 1506441, 0, 131073, 1506442, 0, 131073, 1506443, 0, 131073, 1506444, 0, 131073, 1506445, 0, 131073, 1506446, 0, 131073, 1506447, 0, 131073, 1506448, 0, 131073, 1506449, 0, 131073, 1506450, 0, 131073, 1506451, 0, 131073, 1506452, 0, 131073, 1506453, 0, 131073, 1506454, 0, 131073, 1506455, 0, 131073, 1506456, 0, 131073, 1506457, 0, 131073, 1506458, 0, 131073, 1506459, 0, 131073, 1506460, 0, 131073, 1506461, 0, 131073, 1506462, 0, 131073, 1506463, 0, 131073, 1506464, 0, 131073, 1506465, 0, 131073, 1506466, 0, 131073, 1506467, 0, 131073, 1506468, 0, 131073, 1506469, 0, 131073, 1506470, 0, 131073, 1506471, 0, 131073, 1506472, 0, 131073, 1506473, 0, 131073, 1506474, 0, 131073, 1506475, 0, 131073, 1506476, 0, 131073, 1506477, 0, 131073, 1506478, 0, 131073, 1506479, 0, 131073, 1506480, 0, 131073, 1506481, 0, 131073, 1506482, 0, 131073, 1506483, 0, 131073, 1506484, 0, 131073, 1506485, 0, 131073, 1506486, 0, 131073, 1506487, 0, 131073, 1506488, 0, 131073, 1506489, 0, 131073, 1506490, 0, 131073, 1506491, 0, 131073, 1506492, 0, 131073, 1506493, 0, 131073, 1506494, 0, 131073, 1506495, 0, 131073, 1506496, 0, 131073, 1506497, 0, 131073, 1506498, 0, 131073, 1506499, 0, 131073, 1506500, 0, 131073, 1506501, 0, 131073, 1506502, 0, 131073, 1506503, 0, 131073, 1506504, 0, 131073, 1506505, 0, 131073, 1506506, 0, 131073, 1506507, 0, 131073, 1506508, 0, 131073, 1506509, 0, 131073, 1506510, 0, 131073, 1506511, 0, 131073, 1506512, 0, 131073, 1506513, 0, 131073, 1506514, 0, 131073, 1506515, 0, 131073, 1506516, 0, 131073, 1506517, 0, 131073, 1506518, 0, 131073, 1506519, 0, 131073, 1506520, 0, 131073, 1506521, 0, 131073, 1506522, 0, 131073, 1506523, 0, 131073, 1506524, 0, 131073, 1506525, 0, 131073, 1506526, 0, 131073, 1506527, 0, 131073, 1506528, 0, 131073, 1506529, 0, 131073, 1506530, 0, 131073, 1506531, 0, 131073, 1506532, 0, 131073, 1506533, 0, 131073, 1506534, 0, 131073, 1506535, 0, 131073, 1506536, 0, 131073, 1506537, 0, 131073, 1506538, 0, 131073, 1506539, 0, 131073, 1506540, 0, 131073, 1506541, 0, 131073, 1506542, 0, 131073, 1506543, 0, 131073, 1506544, 0, 131073, 1506545, 0, 131073, 1506546, 0, 131073, 1506547, 0, 131073, 1506548, 0, 131073, 1506549, 0, 131073, 1506550, 0, 131073, 1506551, 0, 131073, 1506552, 0, 131073, 1506553, 0, 131073, 1506554, 0, 131073, 1506555, 0, 131073, 1506556, 0, 131073, 1506557, 0, 131073, 1506558, 0, 131073, 1506559, 0, 131073, 1506560, 0, 131073, 1506561, 0, 131073, 1506562, 0, 131073, 1506563, 0, 131073, 1506564, 0, 131073, 1506565, 0, 131073, 1506566, 0, 131073, 1506567, 0, 131073, 1506568, 0, 131073, 1506569, 0, 131073, 1506570, 0, 131073, 1506571, 0, 131073, 1506572, 0, 131073, 1506573, 0, 131073, 1506574, 0, 131073, 1506575, 0, 131073, 1506576, 0, 131073, 1506577, 0, 131073, 1506578, 0, 131073, 1506579, 0, 131073, 1506580, 0, 131073, 1506581, 0, 131073, 1506582, 0, 131073, 1506583, 0, 131073, 1506584, 0, 131073, 1506585, 0, 131073, 1506586, 0, 131073, 1506587, 0, 131073, 1506588, 0, 131073, 1506589, 0, 131073, 1506590, 0, 131073, 1506591, 0, 131073, 1506592, 0, 131073, 1506593, 0, 131073, 1506594, 0, 131073, 1506595, 0, 131073, 1506596, 0, 131073, 1506597, 0, 131073, 1506598, 0, 131073, 1506599, 0, 131073, 1506600, 0, 131073, 1506601, 0, 131073, 1506602, 0, 131073, 1506603, 0, 131073, 1506604, 0, 131073, 1506605, 0, 131073, 1506606, 0, 131073, 1506607, 0, 131073, 1506608, 0, 131073, 1506609, 0, 131073, 1506610, 0, 131073, 1506611, 0, 131073, 1506612, 0, 131073, 1506613, 0, 131073, 1506614, 0, 131073, 1506615, 0, 131073, 1506616, 0, 131073, 1506617, 0, 131073, 1506618, 0, 131073, 1506619, 0, 131073, 1506620, 0, 131073, 1506621, 0, 131073, 1506622, 0, 131073, 1506623, 0, 131073, 1506624, 0, 131073, 1506625, 0, 131073, 1506626, 0, 131073, 1506627, 0, 131073, 1506628, 0, 131073, 1506629, 0, 131073, 1506630, 0, 131073, 1506631, 0, 131073, 1506632, 0, 131073, 1506633, 0, 131073, 1506634, 0, 131073, 1506635, 0, 131073, 1506636, 0, 131073, 1506637, 0, 131073, 1506638, 0, 131073, 1506639, 0, 131073, 1506640, 0, 131073, 1506641, 0, 131073, 1506642, 0, 131073, 1506643, 0, 131073, 1506644, 0, 131073, 1506645, 0, 131073, 1506646, 0, 131073, 1506647, 0, 131073, 1506648, 0, 131073, 1506649, 0, 131073, 1506650, 0, 131073, 1506651, 0, 131073, 1506652, 0, 131073, 1506653, 0, 131073, 1506654, 0, 131073, 1506655, 0, 131073, 1506656, 0, 131073, 1506657, 0, 131073, 1506658, 0, 131073, 1506659, 0, 131073, 1506660, 0, 131073, 1506661, 0, 131073, 1506662, 0, 131073, 1506663, 0, 131073, 1506664, 0, 131073, 1506665, 0, 131073, 1506666, 0, 131073, 1506667, 0, 131073, 1506668, 0, 131073, 1506669, 0, 131073, 1506670, 0, 131073, 1506671, 0, 131073, 1506672, 0, 131073, 1506673, 0, 131073, 1506674, 0, 131073, 1506675, 0, 131073, 1506676, 0, 131073, 1506677, 0, 131073, 1506678, 0, 131073, 1506679, 0, 131073, 1506680, 0, 131073, 1506681, 0, 131073, 1506682, 0, 131073, 1506683, 0, 131073, 1506684, 0, 131073, 1506685, 0, 131073, 1506686, 0, 131073, 1506687, 0, 131073, 1506688, 0, 131073, 1506689, 0, 131073, 1506690, 0, 131073, 1506691, 0, 131073, 1506692, 0, 131073, 1506693, 0, 131073, 1506694, 0, 131073, 1506695, 0, 131073, 1506696, 0, 131073, 1506697, 0, 131073, 1506698, 0, 131073, 1506699, 0, 131073, 1506700, 0, 131073, 1506701, 0, 131073, 1506702, 0, 131073, 1506703, 0, 131073, 1506704, 0, 131073, 1506705, 0, 131073, 1506706, 0, 131073, 1506707, 0, 131073, 1506708, 0, 131073, 1506709, 0, 131073, 1506710, 0, 131073, 1506711, 0, 131073, 1506712, 0, 131073, 1506713, 0, 131073, 1506714, 0, 131073, 1506715, 0, 131073, 1506716, 0, 131073, 1506717, 0, 131073, 1506718, 0, 131073, 1506719, 0, 131073, 1506720, 0, 131073, 1506721, 0, 131073, 1506722, 0, 131073, 1506723, 0, 131073, 1506724, 0, 131073, 1506725, 0, 131073, 1506726, 0, 131073, 1506727, 0, 131073, 1506728, 0, 131073, 1506729, 0, 131073, 1506730, 0, 131073, 1506731, 0, 131073, 1506732, 0, 131073, 1506733, 0, 131073, 1506734, 0, 131073, 1506735, 0, 131073, 1506736, 0, 131073, 1506737, 0, 131073, 1506738, 0, 131073, 1506739, 0, 131073, 1506740, 0, 131073, 1506741, 0, 131073, 1506742, 0, 131073, 1506743, 0, 131073, 1506744, 0, 131073, 1506745, 0, 131073, 1506746, 0, 131073, 1506747, 0, 131073, 1506748, 0, 131073, 1506749, 0, 131073, 1506750, 0, 131073, 1506751, 0, 131073, 1506752, 0, 131073, 1506753, 0, 131073, 1506754, 0, 131073, 1506755, 0, 131073, 1506756, 0, 131073, 1506757, 0, 131073, 1506758, 0, 131073, 1506759, 0, 131073, 1506760, 0, 131073, 1506761, 0, 131073, 1506762, 0, 131073, 1506763, 0, 131073, 1506764, 0, 131073, 1506765, 0, 131073, 1506766, 0, 131073, 1506767, 0, 131073, 1506768, 0, 131073, 1506769, 0, 131073, 1506770, 0, 131073, 1506771, 0, 131073, 1506772, 0, 131073, 1506773, 0, 131073, 1506774, 0, 131073, 1506775, 0, 131073, 1506776, 0, 131073, 1506777, 0, 131073, 1506778, 0, 131073, 1506779, 0, 131073, 1506780, 0, 131073, 1506781, 0, 131073, 1506782, 0, 131073, 1506783, 0, 131073, 1506784, 0, 131073, 1506785, 0, 131073, 1506786, 0, 131073, 1506787, 0, 131073, 1506788, 0, 131073, 1506789, 0, 131073, 1506790, 0, 131073, 1506791, 0, 131073, 1506792, 0, 131073, 1506793, 0, 131073, 1506794, 0, 131073, 1506795, 0, 131073, 1506796, 0, 131073, 1506797, 0, 131073, 1506798, 0, 131073, 1506799, 0, 131073, 1506800, 0, 131073, 1506801, 0, 131073, 1506802, 0, 131073, 1506803, 0, 131073, 1506804, 0, 131073, 1506805, 0, 131073, 1506806, 0, 131073, 1506807, 0, 131073, 1506808, 0, 131073, 1506809, 0, 131073, 1506810, 0, 131073, 1506811, 0, 131073, 1506812, 0, 131073, 1506813, 0, 131073, 1506814, 0, 131073, 1506815, 0, 131073, 1506816, 0, 131073, 1506817, 0, 131073, 1506818, 0, 131073, 1506819, 0, 131073, 1506820, 0, 131073, 1506821, 0, 131073, 1506822, 0, 131073, 1506823, 0, 131073, 1506824, 0, 131073, 1506825, 0, 131073, 1506826, 0, 131073, 1506827, 0, 131073, 1506828, 0, 131073, 1506829, 0, 131073, 1506830, 0, 131073, 1506831, 0, 131073, 1506832, 0, 131073, 1506833, 0, 131073, 1506834, 0, 131073, 1506835, 0, 131073, 1506836, 0, 131073, 1506837, 0, 131073, 1506838, 0, 131073, 1506839, 0, 131073, 1506840, 0, 131073, 1506841, 0, 131073, 1506842, 0, 131073, 1506843, 0, 131073, 1506844, 0, 131073, 1506845, 0, 131073, 1506846, 0, 131073, 1506847, 0, 131073, 1506848, 0, 131073, 1506849, 0, 131073, 1506850, 0, 131073, 1506851, 0, 131073, 1506852, 0, 131073, 1506853, 0, 131073, 1506854, 0, 131073, 1506855, 0, 131073, 1506856, 0, 131073, 1506857, 0, 131073, 1506858, 0, 131073, 1506859, 0, 131073, 1506860, 0, 131073, 1506861, 0, 131073, 1506862, 0, 131073, 1506863, 0, 131073, 1506864, 0, 131073, 1506865, 0, 131073, 1506866, 0, 131073, 1506867, 0, 131073, 1506868, 0, 131073, 1506869, 0, 131073, 1506870, 0, 131073, 1506871, 0, 131073, 1506872, 0, 131073, 1506873, 0, 131073, 1506874, 0, 131073, 1506875, 0, 131073, 1506876, 0, 131073, 1506877, 0, 131073, 1506878, 0, 131073, 1506879, 0, 131073, 1506880, 0, 131073, 1506881, 0, 131073, 1506882, 0, 131073, 1506883, 0, 131073, 1506884, 0, 131073, 1506885, 0, 131073, 1506886, 0, 131073, 1506887, 0, 131073, 1506888, 0, 131073, 1506889, 0, 131073, 1506890, 0, 131073, 1506891, 0, 131073, 1506892, 0, 131073, 1506893, 0, 131073, 1506894, 0, 131073, 1506895, 0, 131073, 1506896, 0, 131073, 1506897, 0, 131073, 1506898, 0, 131073, 1506899, 0, 131073, 1506900, 0, 131073, 1506901, 0, 131073, 1506902, 0, 131073, 1506903, 0, 131073, 1506904, 0, 131073, 1506905, 0, 131073, 1506906, 0, 131073, 1506907, 0, 131073, 1506908, 0, 131073, 1506909, 0, 131073, 1506910, 0, 131073, 1506911, 0, 131073, 1506912, 0, 131073, 1506913, 0, 131073, 1506914, 0, 131073, 1506915, 0, 131073, 1506916, 0, 131073, 1506917, 0, 131073, 1506918, 0, 131073, 1506919, 0, 131073, 1506920, 0, 131073, 1506921, 0, 131073, 1506922, 0, 131073, 1506923, 0, 131073, 1506924, 0, 131073, 1506925, 0, 131073, 1506926, 0, 131073, 1506927, 0, 131073, 1506928, 0, 131073, 1506929, 0, 131073, 1506930, 0, 131073, 1506931, 0, 131073, 1506932, 0, 131073, 1506933, 0, 131073, 1506934, 0, 131073, 1506935, 0, 131073, 1506936, 0, 131073, 1506937, 0, 131073, 1506938, 0, 131073, 1506939, 0, 131073, 1506940, 0, 131073, 1506941, 0, 131073, 1506942, 0, 131073, 1506943, 0, 131073, 1506944, 0, 131073, 1506945, 0, 131073, 1506946, 0, 131073, 1506947, 0, 131073, 1506948, 0, 131073, 1506949, 0, 131073, 1506950, 0, 131073, 1506951, 0, 131073, 1506952, 0, 131073, 1506953, 0, 131073, 1506954, 0, 131073, 1506955, 0, 131073, 1506956, 0, 131073, 1506957, 0, 131073, 1506958, 0, 131073, 1506959, 0, 131073, 1506960, 0, 131073, 1506961, 0, 131073, 1506962, 0, 131073, 1506963, 0, 131073, 1506964, 0, 131073, 1506965, 0, 131073, 1506966, 0, 131073, 1506967, 0, 131073, 1506968, 0, 131073, 1506969, 0, 131073, 1506970, 0, 131073, 1506971, 0, 131073, 1506972, 0, 131073, 1506973, 0, 131073, 1506974, 0, 131073, 1506975, 0, 131073, 1506976, 0, 131073, 1506977, 0, 131073, 1506978, 0, 131073, 1506979, 0, 131073, 1506980, 0, 131073, 1506981, 0, 131073, 1506982, 0, 131073, 1506983, 0, 131073, 1506984, 0, 131073, 1506985, 0, 131073, 1506986, 0, 131073, 1506987, 0, 131073, 1506988, 0, 131073, 1506989, 0, 131073, 1506990, 0, 131073, 1506991, 0, 131073, 1506992, 0, 131073, 1506993, 0, 131073, 1506994, 0, 131073, 1506995, 0, 131073, 1506996, 0, 131073, 1506997, 0, 131073, 1506998, 0, 131073, 1506999, 0, 131073, 1507000, 0, 131073, 1507001, 0, 131073, 1507002, 0, 131073, 1507003, 0, 131073, 1507004, 0, 131073, 1507005, 0, 131073, 1507006, 0, 131073, 1507007, 0, 131073, 1507008, 0, 131073, 1507009, 0, 131073, 1507010, 0, 131073, 1507011, 0, 131073, 1507012, 0, 131073, 1507013, 0, 131073, 1507014, 0, 131073, 1507015, 0, 131073, 1507016, 0, 131073, 1507017, 0, 131073, 1507018, 0, 131073, 1507019, 0, 131073, 1507020, 0, 131073, 1507021, 0, 131073, 1507022, 0, 131073, 1507023, 0, 131073, 1507024, 0, 131073, 1507025, 0, 131073, 1507026, 0, 131073, 1507027, 0, 131073, 1507028, 0, 131073, 1507029, 0, 131073, 1507030, 0, 131073, 1507031, 0, 131073, 1507032, 0, 131073, 1507033, 0, 131073, 1507034, 0, 131073, 1507035, 0, 131073, 1507036, 0, 131073, 1507037, 0, 131073, 1507038, 0, 131073, 1507039, 0, 131073, 1507040, 0, 131073, 1507041, 0, 131073, 1507042, 0, 131073, 1507043, 0, 131073, 1507044, 0, 131073, 1507045, 0, 131073, 1507046, 0, 131073, 1507047, 0, 131073, 1507048, 0, 131073, 1507049, 0, 131073, 1507050, 0, 131073, 1507051, 0, 131073, 1507052, 0, 131073, 1507053, 0, 131073, 1507054, 0, 131073, 1507055, 0, 131073, 1507056, 0, 131073, 1507057, 0, 131073, 1507058, 0, 131073, 1507059, 0, 131073, 1507060, 0, 131073, 1507061, 0, 131073, 1507062, 0, 131073, 1507063, 0, 131073, 1507064, 0, 131073, 1507065, 0, 131073, 1507066, 0, 131073, 1507067, 0, 131073, 1507068, 0, 131073, 1507069, 0, 131073, 1507070, 0, 131073, 1507071, 0, 131073, 1507072, 0, 131073, 1507073, 0, 131073, 1507074, 0, 131073, 1507075, 0, 131073, 1507076, 0, 131073, 1507077, 0, 131073, 1507078, 0, 131073, 1507079, 0, 131073, 1507080, 0, 131073, 1507081, 0, 131073, 1507082, 0, 131073, 1507083, 0, 131073, 1507084, 0, 131073, 1507085, 0, 131073, 1507086, 0, 131073, 1507087, 0, 131073, 1507088, 0, 131073, 1507089, 0, 131073, 1507090, 0, 131073, 1507091, 0, 131073, 1507092, 0, 131073, 1507093, 0, 131073, 1507094, 0, 131073, 1507095, 0, 131073, 1507096, 0, 131073, 1507097, 0, 131073, 1507098, 0, 131073, 1507099, 0, 131073, 1507100, 0, 131073, 1507101, 0, 131073, 1507102, 0, 131073, 1507103, 0, 131073, 1507104, 0, 131073, 1507105, 0, 131073, 1507106, 0, 131073, 1507107, 0, 131073, 1507108, 0, 131073, 1507109, 0, 131073, 1507110, 0, 131073, 1507111, 0, 131073, 1507112, 0, 131073, 1507113, 0, 131073, 1507114, 0, 131073, 1507115, 0, 131073, 1507116, 0, 131073, 1507117, 0, 131073, 1507118, 0, 131073, 1507119, 0, 131073, 1507120, 0, 131073, 1507121, 0, 131073, 1507122, 0, 131073, 1507123, 0, 131073, 1507124, 0, 131073, 1507125, 0, 131073, 1507126, 0, 131073, 1507127, 0, 131073, 1507128, 0, 131073, 1507129, 0, 131073, 1507130, 0, 131073, 1507131, 0, 131073, 1507132, 0, 131073, 1507133, 0, 131073, 1507134, 0, 131073, 1507135, 0, 131073, 1507136, 0, 131073, 1507137, 0, 131073, 1507138, 0, 131073, 1507139, 0, 131073, 1507140, 0, 131073, 1507141, 0, 131073, 1507142, 0, 131073, 1507143, 0, 131073, 1507144, 0, 131073, 1507145, 0, 131073, 1507146, 0, 131073, 1507147, 0, 131073, 1507148, 0, 131073, 1507149, 0, 131073, 1507150, 0, 131073, 1507151, 0, 131073, 1507152, 0, 131073, 1507153, 0, 131073, 1507154, 0, 131073, 1507155, 0, 131073, 1507156, 0, 131073, 1507157, 0, 131073, 1507158, 0, 131073, 1507159, 0, 131073, 1507160, 0, 131073, 1507161, 0, 131073, 1507162, 0, 131073, 1507163, 0, 131073, 1507164, 0, 131073, 1507165, 0, 131073, 1507166, 0, 131073, 1507167, 0, 131073, 1507168, 0, 131073, 1507169, 0, 131073, 1507170, 0, 131073, 1507171, 0, 131073, 1507172, 0, 131073, 1507173, 0, 131073, 1507174, 0, 131073, 1507175, 0, 131073, 1507176, 0, 131073, 1507177, 0, 131073, 1507178, 0, 131073, 1507179, 0, 131073, 1507180, 0, 131073, 1507181, 0, 131073, 1507182, 0, 131073, 1507183, 0, 131073, 1507184, 0, 131073, 1507185, 0, 131073, 1507186, 0, 131073, 1507187, 0, 131073, 1507188, 0, 131073, 1507189, 0, 131073, 1507190, 0, 131073, 1507191, 0, 131073, 1507192, 0, 131073, 1507193, 0, 131073, 1507194, 0, 131073, 1507195, 0, 131073, 1507196, 0, 131073, 1507197, 0, 131073, 1507198, 0, 131073, 1507199, 0, 131073, 1507200, 0, 131073, 1507201, 0, 131073, 1507202, 0, 131073, 1507203, 0, 131073, 1507204, 0, 131073, 1507205, 0, 131073, 1507206, 0, 131073, 1507207, 0, 131073, 1507208, 0, 131073, 1507209, 0, 131073, 1507210, 0, 131073, 1507211, 0, 131073, 1507212, 0, 131073, 1507213, 0, 131073, 1507214, 0, 131073, 1507215, 0, 131073, 1507216, 0, 131073, 1507217, 0, 131073, 1507218, 0, 131073, 1507219, 0, 131073, 1507220, 0, 131073, 1507221, 0, 131073, 1507222, 0, 131073, 1507223, 0, 131073, 1507224, 0, 131073, 1507225, 0, 131073, 1507226, 0, 131073, 1507227, 0, 131073, 1507228, 0, 131073, 1507229, 0, 131073, 1507230, 0, 131073, 1507231, 0, 131073, 1507232, 0, 131073, 1507233, 0, 131073, 1507234, 0, 131073, 1507235, 0, 131073, 1507236, 0, 131073, 1507237, 0, 131073, 1507238, 0, 131073, 1507239, 0, 131073, 1507240, 0, 131073, 1507241, 0, 131073, 1507242, 0, 131073, 1507243, 0, 131073, 1507244, 0, 131073, 1507245, 0, 131073, 1507246, 0, 131073, 1507247, 0, 131073, 1507248, 0, 131073, 1507249, 0, 131073, 1507250, 0, 131073, 1507251, 0, 131073, 1507252, 0, 131073, 1507253, 0, 131073, 1507254, 0, 131073, 1507255, 0, 131073, 1507256, 0, 131073, 1507257, 0, 131073, 1507258, 0, 131073, 1507259, 0, 131073, 1507260, 0, 131073, 1507261, 0, 131073, 1507262, 0, 131073, 1507263, 0, 131073, 1507264, 0, 131073, 1507265, 0, 131073, 1507266, 0, 131073, 1507267, 0, 131073, 1507268, 0, 131073, 1507269, 0, 131073, 1507270, 0, 131073, 1507271, 0, 131073, 1507272, 0, 131073, 1507273, 0, 131073, 1507274, 0, 131073, 1507275, 0, 131073, 1507276, 0, 131073, 1507277, 0, 131073, 1507278, 0, 131073, 1507279, 0, 131073, 1507280, 0, 131073, 1507281, 0, 131073, 1507282, 0, 131073, 1507283, 0, 131073, 1507284, 0, 131073, 1507285, 0, 131073, 1507286, 0, 131073, 1507287, 0, 131073, 1507288, 0, 131073, 1507289, 0, 131073, 1507290, 0, 131073, 1507291, 0, 131073, 1507292, 0, 131073, 1507293, 0, 131073, 1507294, 0, 131073, 1507295, 0, 131073, 1507296, 0, 131073, 1507297, 0, 131073, 1507298, 0, 131073, 1507299, 0, 131073, 1507300, 0, 131073, 1507301, 0, 131073, 1507302, 0, 131073, 1507303, 0, 131073, 1507304, 0, 131073, 1507305, 0, 131073, 1507306, 0, 131073, 1507307, 0, 131073, 1507308, 0, 131073, 1507309, 0, 131073, 1507310, 0, 131073, 1507311, 0, 131073, 1507312, 0, 131073, 1507313, 0, 131073, 1507314, 0, 131073, 1507315, 0, 131073, 1507316, 0, 131073, 1507317, 0, 131073, 1507318, 0, 131073, 1507319, 0, 131073, 1507320, 0, 131073, 1507321, 0, 131073, 1507322, 0, 131073, 1507323, 0, 131073, 1507324, 0, 131073, 1507325, 0, 131073, 1507326, 0, 131073, 1507327, 0, 131073, 1441792, 0, 131073, 1441793, 0, 131073, 1441794, 0, 131073, 1441795, 0, 131073, 1441796, 0, 131073, 1441797, 0, 131073, 1441798, 0, 131073, 1441799, 0, 131073, 1441800, 0, 131073, 1441801, 0, 131073, 1441802, 0, 131073, 1441803, 0, 131073, 1441804, 0, 131073, 1441805, 0, 131073, 1441806, 0, 131073, 1441807, 0, 131073, 1441808, 0, 131073, 1441809, 0, 131073, 1441810, 0, 131073, 1441811, 0, 131073, 1441812, 0, 131073, 1441813, 0, 131073, 1441814, 0, 131073, 1441815, 0, 131073, 1441816, 0, 131073, 1441817, 0, 131073, 1441818, 0, 131073, 1441819, 0, 131073, 1441820, 0, 131073, 1441821, 0, 131073, 1441822, 0, 131073, 1441823, 0, 131073, 1441824, 0, 131073, 1441825, 0, 131073, 1441826, 0, 131073, 1441827, 0, 131073, 1441828, 0, 131073, 1441829, 0, 131073, 1441830, 0, 131073, 1441831, 0, 131073, 1441832, 0, 131073, 1441833, 0, 131073, 1441834, 0, 131073, 1441835, 0, 131073, 1441836, 0, 131073, 1441837, 0, 131073, 1441838, 0, 131073, 1441839, 0, 131073, 1441840, 0, 131073, 1441841, 0, 131073, 1441842, 0, 131073, 1441843, 0, 131073, 1441844, 0, 131073, 1441845, 0, 131073, 1441846, 0, 131073, 1441847, 0, 131073, 1441848, 0, 131073, 1441849, 0, 131073, 1441850, 0, 131073, 1441851, 0, 131073, 1441852, 0, 131073, 1441853, 0, 131073, 1441854, 0, 131073, 1441855, 0, 131073, 1441856, 0, 131073, 1441857, 0, 131073, 1441858, 0, 131073, 1441859, 0, 131073, 1441860, 0, 131073, 1441861, 0, 131073, 1441862, 0, 131073, 1441863, 0, 131073, 1441864, 0, 131073, 1441865, 0, 131073, 1441866, 0, 131073, 1441867, 0, 131073, 1441868, 0, 131073, 1441869, 0, 131073, 1441870, 0, 131073, 1441871, 0, 131073, 1441872, 0, 131073, 1441873, 0, 131073, 1441874, 0, 131073, 1441875, 0, 131073, 1441876, 0, 131073, 1441877, 0, 131073, 1441878, 0, 131073, 1441879, 0, 131073, 1441880, 0, 131073, 1441881, 0, 131073, 1441882, 0, 131073, 1441883, 0, 131073, 1441884, 0, 131073, 1441885, 0, 131073, 1441886, 0, 131073, 1441887, 0, 131073, 1572429, 1, 196608, 1638417, 0, 131073, 1638432, 0, 131073 ) + +[node name="TileMap" type="TileMap" parent="TileMap2" groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 27 ) +tile_set = ExtResource( 2 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 1571738, 1, 1, 1571739, 1, 2, 1571740, 1, 2, 1571741, 1, 2, 1571742, 1, 2, 1571743, 1, 2, 1571744, 1, 2, 1571745, 1, 2, 1571746, 1, 2, 1571747, 1, 2, 1571748, 1, 2, 1571749, 1, 2, 1571750, 1, 2, 1571751, 1, 2, 1571752, 1, 2, 1571753, 1, 2, 1571754, 1, 2, 1571755, 1, 2, 1571756, 1, 2, 1571757, 1, 2, 1571758, 1, 2, 1571759, 1, 2, 1571760, 1, 2, 1571761, 1, 2, 1571762, 1, 2, 1571763, 1, 2, 1571764, 1, 2, 1571765, 1, 2, 1571766, 1, 2, 1571767, 1, 2, 1571768, 1, 2, 1571769, 1, 2, 1571770, 1, 2, 1571771, 1, 2, 1571772, 1, 2, 1571773, 1, 2, 1571774, 1, 2, 1571775, 1, 2, 1571776, 1, 2, 1571777, 1, 2, 1571778, 1, 2, 1571779, 1, 2, 1571780, 1, 2, 1571781, 1, 2, 1571782, 1, 2, 1571783, 1, 2, 1571784, 1, 2, 1571785, 1, 2, 1571786, 1, 2, 1571787, 1, 2, 1571788, 1, 2, 1571789, 1, 2, 1571790, 1, 2, 1571791, 1, 2, 1571792, 1, 2, 1571793, 1, 2, 1571794, 1, 2, 1571795, 1, 2, 1571796, 1, 2, 1571797, 1, 2, 1571798, 1, 2, 1571799, 1, 2, 1571800, 1, 2, 1571801, 1, 2, 1571802, 1, 2, 1571803, 1, 2, 1571804, 1, 2, 1571805, 1, 2, 1571806, 1, 2, 1571807, 1, 2, 1571808, 1, 2, 1571809, 1, 2, 1571810, 1, 2, 1571811, 1, 2, 1571812, 1, 2, 1571813, 1, 2, 1571814, 1, 2, 1571815, 1, 2, 1571816, 1, 2, 1571817, 1, 2, 1571818, 1, 2, 1571819, 1, 2, 1571820, 1, 2, 1571821, 1, 2, 1571822, 1, 2, 1571823, 1, 2, 1571824, 1, 2, 1571825, 1, 2, 1571826, 1, 2, 1571827, 1, 2, 1571828, 1, 2, 1571829, 1, 2, 1571830, 1, 2, 1571831, 1, 2, 1571832, 1, 2, 1571833, 1, 2, 1571834, 1, 2, 1571835, 1, 2, 1571836, 1, 2, 1571837, 1, 2, 1571838, 1, 2, 1571839, 1, 2, 1571840, 1, 2, 1571841, 1, 2, 1571842, 1, 2, 1571843, 1, 2, 1571844, 1, 2, 1571845, 1, 2, 1571846, 1, 2, 1571847, 1, 2, 1571848, 1, 2, 1571849, 1, 2, 1571850, 1, 2, 1571851, 1, 2, 1571852, 1, 2, 1571853, 1, 2, 1571854, 1, 2, 1571855, 1, 2, 1571856, 1, 2, 1571857, 1, 2, 1571858, 1, 2, 1571859, 1, 2, 1571860, 1, 2, 1571861, 1, 2, 1571862, 1, 2, 1571863, 1, 2, 1571864, 1, 2, 1571865, 1, 2, 1571866, 1, 2, 1571867, 1, 2, 1571868, 1, 2, 1571869, 1, 2, 1571870, 1, 2, 1571871, 1, 2, 1571872, 1, 2, 1571873, 1, 2, 1571874, 1, 2, 1571875, 1, 2, 1571876, 1, 2, 1571877, 1, 2, 1571878, 1, 2, 1571879, 1, 2, 1571880, 1, 2, 1571881, 1, 2, 1571882, 1, 2, 1571883, 1, 2, 1571884, 1, 2, 1571885, 1, 2, 1571886, 1, 2, 1571887, 1, 2, 1571888, 1, 2, 1571889, 1, 2, 1571890, 1, 2, 1571891, 1, 2, 1571892, 1, 2, 1571893, 1, 2, 1571894, 1, 2, 1571895, 1, 2, 1571896, 1, 2, 1571897, 1, 2, 1571898, 1, 2, 1571899, 1, 2, 1571900, 1, 2, 1571901, 1, 2, 1571902, 1, 2, 1571903, 1, 2, 1571904, 1, 2, 1571905, 1, 2, 1571906, 1, 2, 1571907, 1, 2, 1571908, 1, 2, 1571909, 1, 2, 1571910, 1, 2, 1571911, 1, 2, 1571912, 1, 2, 1571913, 1, 2, 1571914, 1, 2, 1571915, 1, 2, 1571916, 1, 2, 1571917, 1, 2, 1571918, 1, 2, 1571919, 1, 2, 1571920, 1, 2, 1571921, 1, 2, 1571922, 1, 2, 1571923, 1, 2, 1571924, 1, 2, 1571925, 1, 2, 1571926, 1, 2, 1571927, 1, 2, 1571928, 1, 2, 1571929, 1, 2, 1571930, 1, 2, 1571931, 1, 2, 1571932, 1, 2, 1571933, 1, 2, 1571934, 1, 2, 1571935, 1, 2, 1571936, 1, 2, 1571937, 1, 2, 1571938, 1, 2, 1571939, 1, 2, 1571940, 1, 2, 1571941, 1, 2, 1571942, 1, 2, 1571943, 1, 2, 1571944, 1, 2, 1571945, 1, 2, 1571946, 1, 2, 1571947, 1, 2, 1571948, 1, 2, 1571949, 1, 2, 1571950, 1, 2, 1571951, 1, 2, 1571952, 1, 2, 1571953, 1, 2, 1571954, 1, 2, 1571955, 1, 2, 1571956, 1, 2, 1571957, 1, 2, 1571958, 1, 2, 1571959, 1, 2, 1571960, 1, 2, 1571961, 1, 2, 1571962, 1, 2, 1571963, 1, 2, 1571964, 1, 2, 1571965, 1, 2, 1571966, 1, 2, 1571967, 1, 2, 1571968, 1, 2, 1571969, 1, 2, 1571970, 1, 2, 1571971, 1, 2, 1571972, 1, 2, 1571973, 1, 2, 1571974, 1, 2, 1571975, 1, 2, 1571976, 1, 2, 1571977, 1, 2, 1571978, 1, 2, 1571979, 1, 2, 1571980, 1, 2, 1571981, 1, 2, 1571982, 1, 2, 1571983, 1, 2, 1571984, 1, 2, 1571985, 1, 2, 1571986, 1, 2, 1571987, 1, 2, 1571988, 1, 2, 1571989, 1, 2, 1571990, 1, 2, 1571991, 1, 2, 1571992, 1, 2, 1571993, 1, 2, 1571994, 1, 2, 1571995, 1, 2, 1571996, 1, 2, 1571997, 1, 2, 1571998, 1, 2, 1571999, 1, 2, 1572000, 1, 2, 1572001, 1, 2, 1572002, 1, 2, 1572003, 1, 2, 1572004, 1, 2, 1572005, 1, 2, 1572006, 1, 2, 1572007, 1, 2, 1572008, 1, 2, 1572009, 1, 2, 1572010, 1, 2, 1572011, 1, 2, 1572012, 1, 2, 1572013, 1, 2, 1572014, 1, 2, 1572015, 1, 2, 1572016, 1, 2, 1572017, 1, 2, 1572018, 1, 2, 1572019, 1, 2, 1572020, 1, 2, 1572021, 1, 2, 1572022, 1, 2, 1572023, 1, 2, 1572024, 1, 2, 1572025, 1, 2, 1572026, 1, 2, 1572027, 1, 2, 1572028, 1, 2, 1572029, 1, 2, 1572030, 1, 2, 1572031, 1, 2, 1572032, 1, 2, 1572033, 1, 2, 1572034, 1, 2, 1572035, 1, 2, 1572036, 1, 2, 1572037, 1, 2, 1572038, 1, 2, 1572039, 1, 2, 1572040, 1, 2, 1572041, 1, 2, 1572042, 1, 2, 1572043, 1, 2, 1572044, 1, 2, 1572045, 1, 2, 1572046, 1, 2, 1572047, 1, 2, 1572048, 1, 2, 1572049, 1, 2, 1572050, 1, 2, 1572051, 1, 2, 1572052, 1, 2, 1572053, 1, 2, 1572054, 1, 2, 1572055, 1, 2, 1572056, 1, 2, 1572057, 1, 2, 1572058, 1, 2, 1572059, 1, 2, 1572060, 1, 2, 1572061, 1, 2, 1572062, 1, 2, 1572063, 1, 2, 1572064, 1, 2, 1572065, 1, 2, 1572066, 1, 2, 1572067, 1, 2, 1572068, 1, 2, 1572069, 1, 2, 1572070, 1, 2, 1572071, 1, 2, 1572072, 1, 2, 1572073, 1, 2, 1572074, 1, 2, 1572075, 1, 2, 1572076, 1, 2, 1572077, 1, 2, 1572078, 1, 2, 1572079, 1, 2, 1572080, 1, 2, 1572081, 1, 2, 1572082, 1, 2, 1572083, 1, 2, 1572084, 1, 2, 1572085, 1, 2, 1572086, 1, 2, 1572087, 1, 2, 1572088, 1, 2, 1572089, 1, 2, 1572090, 1, 2, 1572091, 1, 2, 1572092, 1, 2, 1572093, 1, 2, 1572094, 1, 2, 1572095, 1, 2, 1572096, 1, 2, 1572097, 1, 2, 1572098, 1, 2, 1572099, 1, 2, 1572100, 1, 2, 1572101, 1, 2, 1572102, 1, 2, 1572103, 1, 2, 1572104, 1, 2, 1572105, 1, 2, 1572106, 1, 2, 1572107, 1, 2, 1572108, 1, 2, 1572109, 1, 2, 1572110, 1, 2, 1572111, 1, 2, 1572112, 1, 2, 1572113, 1, 2, 1572114, 1, 2, 1572115, 1, 2, 1572116, 1, 2, 1572117, 1, 2, 1572118, 1, 2, 1572119, 1, 2, 1572120, 1, 2, 1572121, 1, 2, 1572122, 1, 2, 1572123, 1, 2, 1572124, 1, 2, 1572125, 1, 2, 1572126, 1, 2, 1572127, 1, 2, 1572128, 1, 2, 1572129, 1, 2, 1572130, 1, 2, 1572131, 1, 2, 1572132, 1, 2, 1572133, 1, 2, 1572134, 1, 2, 1572135, 1, 2, 1572136, 1, 2, 1572137, 1, 2, 1572138, 1, 2, 1572139, 1, 2, 1572140, 1, 2, 1572141, 1, 2, 1572142, 1, 2, 1572143, 1, 2, 1572144, 1, 2, 1572145, 1, 2, 1572146, 1, 2, 1572147, 1, 2, 1572148, 1, 2, 1572149, 1, 2, 1572150, 1, 2, 1572151, 1, 2, 1572152, 1, 2, 1572153, 1, 2, 1572154, 1, 2, 1572155, 1, 2, 1572156, 1, 2, 1572157, 1, 2, 1572158, 1, 2, 1572159, 1, 2, 1572160, 1, 2, 1572161, 1, 2, 1572162, 1, 2, 1572163, 1, 2, 1572164, 1, 2, 1572165, 1, 2, 1572166, 1, 2, 1572167, 1, 2, 1572168, 1, 2, 1572169, 1, 2, 1572170, 1, 2, 1572171, 1, 2, 1572172, 1, 2, 1572173, 1, 2, 1572174, 1, 2, 1572175, 1, 2, 1572176, 1, 2, 1572177, 1, 2, 1572178, 1, 2, 1572179, 1, 2, 1572180, 1, 2, 1572181, 1, 2, 1572182, 1, 2, 1572183, 1, 2, 1572184, 1, 2, 1572185, 1, 2, 1572186, 1, 2, 1572187, 1, 2, 1572188, 1, 2, 1572189, 1, 2, 1572190, 1, 2, 1572191, 1, 2, 1572192, 1, 2, 1572193, 1, 2, 1572194, 1, 2, 1572195, 1, 2, 1572196, 1, 2, 1572197, 1, 2, 1572198, 1, 2, 1572199, 1, 2, 1572200, 1, 2, 1572201, 1, 2, 1572202, 1, 2, 1572203, 1, 2, 1572204, 1, 2, 1572205, 1, 2, 1572206, 1, 2, 1572207, 1, 2, 1572208, 1, 2, 1572209, 1, 2, 1572210, 1, 2, 1572211, 1, 2, 1572212, 1, 2, 1572213, 1, 2, 1572214, 1, 2, 1572215, 1, 2, 1572216, 1, 2, 1572217, 1, 2, 1572218, 1, 2, 1572219, 1, 2, 1572220, 1, 2, 1572221, 1, 2, 1572222, 1, 2, 1572223, 1, 2, 1572224, 1, 2, 1572225, 1, 2, 1572226, 1, 2, 1572227, 1, 2, 1572228, 1, 2, 1572229, 1, 2, 1572230, 1, 2, 1572231, 1, 2, 1572232, 1, 2, 1572233, 1, 2, 1572234, 1, 2, 1572235, 1, 2, 1572236, 1, 2, 1572237, 1, 2, 1572238, 1, 2, 1572239, 1, 2, 1572240, 1, 2, 1572241, 1, 2, 1572242, 1, 2, 1572243, 1, 2, 1572244, 1, 2, 1572245, 1, 2, 1572246, 1, 2, 1572247, 1, 2, 1572248, 1, 2, 1572249, 1, 2, 1572250, 1, 2, 1572251, 1, 2, 1572252, 1, 2, 1572253, 1, 2, 1572254, 1, 2, 1572255, 1, 2, 1572256, 1, 2, 1572257, 1, 2, 1572258, 1, 2, 1572259, 1, 2, 1572260, 1, 2, 1572261, 1, 2, 1572262, 1, 2, 1572263, 1, 2, 1572264, 1, 2, 1572265, 1, 2, 1572266, 1, 2, 1572267, 1, 2, 1572268, 1, 2, 1572269, 1, 2, 1572270, 1, 2, 1572271, 1, 2, 1572272, 1, 2, 1572273, 1, 2, 1572274, 1, 2, 1572275, 1, 2, 1572276, 1, 2, 1572277, 1, 2, 1572278, 1, 2, 1572279, 1, 2, 1572280, 1, 2, 1572281, 1, 2, 1572282, 1, 2, 1572283, 1, 2, 1572284, 1, 2, 1572285, 1, 2, 1572286, 1, 2, 1572287, 1, 2, 1572288, 1, 2, 1572289, 1, 2, 1572290, 1, 2, 1572291, 1, 2, 1572292, 1, 2, 1572293, 1, 2, 1572294, 1, 2, 1572295, 1, 2, 1572296, 1, 2, 1572297, 1, 2, 1572298, 1, 2, 1572299, 1, 2, 1572300, 1, 2, 1572301, 1, 2, 1572302, 1, 2, 1572303, 1, 2, 1572304, 1, 2, 1572305, 1, 2, 1572306, 1, 2, 1572307, 1, 2, 1572308, 1, 2, 1572309, 1, 2, 1572310, 1, 2, 1572311, 1, 2, 1572312, 1, 2, 1572313, 1, 2, 1572314, 1, 2, 1572315, 1, 2, 1572316, 1, 2, 1572317, 1, 2, 1572318, 1, 2, 1572319, 1, 2, 1572320, 1, 2, 1572321, 1, 2, 1572322, 1, 2, 1572323, 1, 2, 1572324, 1, 2, 1572325, 1, 2, 1572326, 1, 2, 1572327, 1, 2, 1572328, 1, 2, 1572329, 1, 2, 1572330, 1, 2, 1572331, 1, 2, 1572332, 1, 2, 1572333, 1, 2, 1572334, 1, 2, 1572335, 1, 2, 1572336, 1, 2, 1572337, 1, 2, 1572338, 1, 2, 1572339, 1, 2, 1572340, 1, 2, 1572341, 1, 2, 1572342, 1, 2, 1572343, 1, 2, 1572344, 1, 2, 1572345, 1, 2, 1572346, 1, 2, 1572347, 1, 2, 1572348, 1, 2, 1572349, 1, 2, 1572350, 1, 2, 1572351, 1, 2, 1572352, 1, 2, 1572353, 1, 2, 1572354, 1, 2, 1572355, 1, 2, 1572356, 1, 2, 1572357, 1, 2, 1572358, 1, 2, 1572359, 1, 2, 1572360, 1, 2, 1572361, 1, 2, 1572362, 1, 2, 1572363, 1, 2, 1572364, 1, 2, 1572365, 1, 2, 1572366, 1, 2, 1572367, 1, 2, 1572368, 1, 2, 1572369, 1, 2, 1572370, 1, 2, 1572371, 1, 2, 1572372, 1, 2, 1572373, 1, 2, 1572374, 1, 2, 1572375, 1, 2, 1572376, 1, 2, 1572377, 1, 2, 1572378, 1, 2, 1572379, 1, 2, 1572380, 1, 2, 1572381, 1, 2, 1572382, 1, 2, 1572383, 1, 2, 1572384, 1, 2, 1572385, 1, 2, 1572386, 1, 2, 1572387, 1, 2, 1572388, 1, 2, 1572389, 1, 2, 1572390, 1, 2, 1572391, 1, 2, 1572392, 1, 2, 1572393, 1, 2, 1572394, 1, 2, 1572395, 1, 2, 1572396, 1, 2, 1572397, 1, 2, 1572398, 1, 2, 1572399, 1, 2, 1572400, 1, 2, 1572401, 1, 2, 1572402, 1, 2, 1572403, 1, 2, 1572404, 1, 2, 1572405, 1, 2, 1572406, 1, 2, 1572407, 1, 2, 1572408, 1, 2, 1572409, 1, 2, 1572410, 1, 2, 1572411, 1, 2, 1572412, 1, 2, 1572413, 1, 2, 1572414, 1, 2, 1572415, 1, 2, 1572416, 1, 2, 1572417, 1, 2, 1572418, 1, 2, 1572419, 1, 2, 1572420, 1, 2, 1572421, 1, 2, 1572422, 1, 2, 1572423, 1, 2, 1572424, 1, 2, 1572425, 1, 2, 1572426, 1, 2, 1572427, 1, 2, 1572428, 1, 2, 1572429, 1, 2, 1572430, 1, 2, 1572431, 1, 2, 1572432, 1, 2, 1572433, 1, 2, 1572434, 1, 2, 1572435, 1, 2, 1572436, 1, 2, 1572437, 1, 2, 1572438, 1, 2, 1572439, 1, 2, 1572440, 1, 2, 1572441, 1, 2, 1572442, 1, 2, 1572443, 1, 2, 1572444, 1, 2, 1572445, 1, 2, 1572446, 1, 2, 1572447, 1, 2, 1572448, 1, 2, 1572449, 1, 2, 1572450, 1, 2, 1572451, 1, 2, 1572452, 1, 2, 1572453, 1, 2, 1572454, 1, 2, 1572455, 1, 2, 1572456, 1, 2, 1572457, 1, 2, 1572458, 1, 2, 1572459, 1, 2, 1572460, 1, 2, 1572461, 1, 2, 1572462, 1, 2, 1572463, 1, 2, 1572464, 1, 2, 1572465, 1, 2, 1572466, 1, 2, 1572467, 1, 2, 1572468, 1, 2, 1572469, 1, 2, 1572470, 1, 2, 1572471, 1, 2, 1572472, 1, 2, 1572473, 1, 2, 1572474, 1, 2, 1572475, 1, 2, 1572476, 1, 2, 1572477, 1, 2, 1572478, 1, 2, 1572479, 1, 2, 1572480, 1, 2, 1572481, 1, 2, 1572482, 1, 2, 1572483, 1, 2, 1572484, 1, 2, 1572485, 1, 2, 1572486, 1, 2, 1572487, 1, 2, 1572488, 1, 2, 1572489, 1, 2, 1572490, 1, 2, 1572491, 1, 2, 1572492, 1, 2, 1572493, 1, 2, 1572494, 1, 2, 1572495, 1, 2, 1572496, 1, 2, 1572497, 1, 2, 1572498, 1, 2, 1572499, 1, 2, 1572500, 1, 2, 1572501, 1, 2, 1572502, 1, 2, 1572503, 1, 2, 1572504, 1, 2, 1572505, 1, 2, 1572506, 1, 2, 1572507, 1, 2, 1572508, 1, 2, 1572509, 1, 2, 1572510, 1, 2, 1572511, 1, 2, 1572512, 1, 2, 1572513, 1, 2, 1572514, 1, 2, 1572515, 1, 2, 1572516, 1, 2, 1572517, 1, 2, 1572518, 1, 2, 1572519, 1, 2, 1572520, 1, 2, 1572521, 1, 2, 1572522, 1, 2, 1572523, 1, 2, 1572524, 1, 2, 1572525, 1, 2, 1572526, 1, 2, 1572527, 1, 2, 1572528, 1, 2, 1572529, 1, 2, 1572530, 1, 2, 1572531, 1, 2, 1572532, 1, 2, 1572533, 1, 2, 1572534, 1, 2, 1572535, 1, 2, 1572536, 1, 2, 1572537, 1, 2, 1572538, 1, 2, 1572539, 1, 2, 1572540, 1, 2, 1572541, 1, 2, 1572542, 1, 2, 1572543, 1, 2, 1572544, 1, 2, 1572545, 1, 2, 1572546, 1, 2, 1572547, 1, 2, 1572548, 1, 2, 1572549, 1, 2, 1572550, 1, 2, 1572551, 1, 2, 1572552, 1, 2, 1572553, 1, 2, 1572554, 1, 2, 1572555, 1, 2, 1572556, 1, 2, 1572557, 1, 2, 1572558, 1, 2, 1572559, 1, 2, 1572560, 1, 2, 1572561, 1, 2, 1572562, 1, 2, 1572563, 1, 2, 1572564, 1, 2, 1572565, 1, 2, 1572566, 1, 2, 1572567, 1, 2, 1572568, 1, 2, 1572569, 1, 2, 1572570, 1, 2, 1572571, 1, 2, 1572572, 1, 2, 1572573, 1, 2, 1572574, 1, 2, 1572575, 1, 2, 1572576, 1, 2, 1572577, 1, 2, 1572578, 1, 2, 1572579, 1, 2, 1572580, 1, 2, 1572581, 1, 2, 1572582, 1, 2, 1572583, 1, 2, 1572584, 1, 2, 1572585, 1, 2, 1572586, 1, 2, 1572587, 1, 2, 1572588, 1, 2, 1572589, 1, 2, 1572590, 1, 2, 1572591, 1, 2, 1572592, 1, 2, 1572593, 1, 2, 1572594, 1, 2, 1572595, 1, 2, 1572596, 1, 2, 1572597, 1, 2, 1572598, 1, 2, 1572599, 1, 2, 1572600, 1, 2, 1572601, 1, 2, 1572602, 1, 2, 1572603, 1, 2, 1572604, 1, 2, 1572605, 1, 2, 1572606, 1, 2, 1572607, 1, 2, 1572608, 1, 2, 1572609, 1, 2, 1572610, 1, 2, 1572611, 1, 2, 1572612, 1, 2, 1572613, 1, 2, 1572614, 1, 2, 1572615, 1, 2, 1572616, 1, 2, 1572617, 1, 2, 1572618, 1, 2, 1572619, 1, 2, 1572620, 1, 2, 1572621, 1, 2, 1572622, 1, 2, 1572623, 1, 2, 1572624, 1, 2, 1572625, 1, 2, 1572626, 1, 2, 1572627, 1, 2, 1572628, 1, 2, 1572629, 1, 2, 1572630, 1, 2, 1572631, 1, 2, 1572632, 1, 2, 1572633, 1, 2, 1572634, 1, 2, 1572635, 1, 2, 1572636, 1, 2, 1572637, 1, 2, 1572638, 1, 2, 1572639, 1, 2, 1572640, 1, 2, 1572641, 1, 2, 1572642, 1, 2, 1572643, 1, 2, 1572644, 1, 2, 1572645, 1, 2, 1572646, 1, 2, 1572647, 1, 2, 1572648, 1, 2, 1572649, 1, 2, 1572650, 1, 2, 1572651, 1, 2, 1572652, 1, 2, 1572653, 1, 2, 1572654, 1, 2, 1572655, 1, 2, 1572656, 1, 2, 1572657, 1, 2, 1572658, 1, 2, 1572659, 1, 2, 1572660, 1, 2, 1572661, 1, 2, 1572662, 1, 2, 1572663, 1, 2, 1572664, 1, 2, 1572665, 1, 2, 1572666, 1, 2, 1572667, 1, 2, 1572668, 1, 2, 1572669, 1, 2, 1572670, 1, 2, 1572671, 1, 2, 1572672, 1, 2, 1572673, 1, 2, 1572674, 1, 2, 1572675, 1, 2, 1572676, 1, 2, 1572677, 1, 2, 1572678, 1, 2, 1572679, 1, 2, 1572680, 1, 2, 1572681, 1, 2, 1572682, 1, 2, 1572683, 1, 2, 1572684, 1, 2, 1572685, 1, 2, 1572686, 1, 2, 1572687, 1, 2, 1572688, 1, 2, 1572689, 1, 2, 1572690, 1, 2, 1572691, 1, 2, 1572692, 1, 2, 1572693, 1, 2, 1572694, 1, 2, 1572695, 1, 2, 1572696, 1, 2, 1572697, 1, 2, 1572698, 1, 2, 1572699, 1, 2, 1572700, 1, 2, 1572701, 1, 2, 1572702, 1, 2, 1572703, 1, 2, 1572704, 1, 2, 1572705, 1, 2, 1572706, 1, 2, 1572707, 1, 2, 1572708, 1, 2, 1572709, 1, 2, 1572710, 1, 2, 1572711, 1, 2, 1572712, 1, 2, 1572713, 1, 2, 1572714, 1, 2, 1572715, 1, 2, 1572716, 1, 2, 1572717, 1, 2, 1572718, 1, 2, 1572719, 1, 2, 1572720, 1, 2, 1572721, 1, 2, 1572722, 1, 2, 1572723, 1, 2, 1572724, 1, 2, 1572725, 1, 2, 1572726, 1, 2, 1572727, 1, 2, 1572728, 1, 2, 1572729, 1, 2, 1572730, 1, 2, 1572731, 1, 2, 1572732, 1, 2, 1572733, 1, 2, 1572734, 1, 2, 1572735, 1, 2, 1572736, 1, 2, 1572737, 1, 2, 1572738, 1, 2, 1572739, 1, 2, 1572740, 1, 2, 1572741, 1, 2, 1572742, 1, 2, 1572743, 1, 2, 1572744, 1, 2, 1572745, 1, 2, 1572746, 1, 2, 1572747, 1, 2, 1572748, 1, 2, 1572749, 1, 2, 1572750, 1, 2, 1572751, 1, 2, 1572752, 1, 2, 1572753, 1, 2, 1572754, 1, 2, 1572755, 1, 2, 1572756, 1, 2, 1572757, 1, 2, 1572758, 1, 2, 1572759, 1, 2, 1572760, 1, 2, 1572761, 1, 2, 1572762, 1, 2, 1572763, 1, 2, 1572764, 1, 2, 1572765, 1, 2, 1572766, 1, 2, 1572767, 1, 2, 1572768, 1, 2, 1572769, 1, 2, 1572770, 1, 2, 1572771, 1, 2, 1572772, 1, 2, 1572773, 1, 2, 1572774, 1, 2, 1572775, 1, 2, 1572776, 1, 2, 1572777, 1, 2, 1572778, 1, 2, 1572779, 1, 2, 1572780, 1, 2, 1572781, 1, 2, 1572782, 1, 2, 1572783, 1, 2, 1572784, 1, 2, 1572785, 1, 2, 1572786, 1, 2, 1572787, 1, 2, 1572788, 1, 2, 1572789, 1, 2, 1572790, 1, 2, 1572791, 1, 2, 1572792, 1, 2, 1572793, 1, 2, 1572794, 1, 2, 1572795, 1, 2, 1572796, 1, 2, 1572797, 1, 2, 1572798, 1, 2, 1572799, 1, 2, 1572800, 1, 2, 1572801, 1, 2, 1572802, 1, 2, 1572803, 1, 2, 1572804, 1, 2, 1572805, 1, 2, 1572806, 1, 2, 1572807, 1, 2, 1572808, 1, 2, 1572809, 1, 2, 1572810, 1, 2, 1572811, 1, 2, 1572812, 1, 2, 1572813, 1, 2, 1572814, 1, 2, 1572815, 1, 2, 1572816, 1, 2, 1572817, 1, 2, 1572818, 1, 2, 1572819, 1, 2, 1572820, 1, 2, 1572821, 1, 2, 1572822, 1, 2, 1572823, 1, 2, 1572824, 1, 2, 1572825, 1, 2, 1572826, 1, 2, 1572827, 1, 2, 1572828, 1, 2, 1572829, 1, 2, 1572830, 1, 2, 1572831, 1, 2, 1572832, 1, 2, 1572833, 1, 2, 1572834, 1, 2, 1572835, 1, 2, 1572836, 1, 2, 1572837, 1, 2, 1572838, 1, 2, 1572839, 1, 2, 1572840, 1, 2, 1572841, 1, 2, 1572842, 1, 2, 1572843, 1, 2, 1572844, 1, 2, 1572845, 1, 2, 1572846, 1, 2, 1572847, 1, 2, 1572848, 1, 2, 1572849, 1, 2, 1572850, 1, 2, 1572851, 1, 2, 1572852, 1, 2, 1572853, 1, 2, 1572854, 1, 2, 1572855, 1, 2, 1572856, 1, 2, 1572857, 1, 2, 1572858, 1, 2, 1572859, 1, 2, 1572860, 1, 2, 1572861, 1, 2, 1572862, 1, 2, 1572863, 1, 2, 1507328, 1, 2, 1507329, 1, 2, 1507330, 1, 2, 1507331, 1, 2, 1507332, 1, 2, 1507333, 1, 2, 1507334, 1, 2, 1507335, 1, 2, 1507336, 1, 2, 1507337, 1, 2, 1507338, 1, 2, 1507339, 1, 2, 1507340, 1, 2, 1507341, 1, 2, 1507342, 1, 2, 1507343, 1, 2, 1507344, 1, 2, 1507345, 1, 2, 1507346, 1, 2, 1507347, 1, 2, 1507348, 1, 2, 1507349, 1, 2, 1507350, 1, 2, 1507351, 1, 2, 1507352, 1, 2, 1507353, 1, 2, 1507354, 1, 2, 1507355, 1, 2, 1507356, 1, 2, 1507357, 1, 2, 1507358, 1, 2, 1507359, 1, 2, 1507360, 1, 2, 1507361, 1, 2, 1507362, 1, 2, 1507363, 1, 2, 1507364, 1, 2, 1507365, 1, 2, 1507366, 1, 2, 1507367, 1, 2, 1507368, 1, 2, 1507369, 1, 2, 1507370, 1, 2, 1507371, 1, 2, 1507372, 1, 2, 1507373, 1, 2, 1507374, 1, 2, 1507375, 1, 2, 1507376, 1, 2, 1507377, 1, 2, 1507378, 1, 2, 1507379, 1, 2, 1507380, 1, 2, 1507381, 1, 2, 1507382, 1, 2, 1507383, 1, 2, 1507384, 1, 2, 1507385, 1, 2, 1507386, 1, 2, 1507387, 1, 2, 1507388, 1, 2, 1507389, 1, 2, 1507390, 1, 2, 1507391, 1, 2, 1507392, 1, 2, 1507393, 1, 2, 1507394, 1, 2, 1507395, 1, 2, 1507396, 1, 2, 1507397, 1, 2, 1507398, 1, 2, 1507399, 1, 2, 1507400, 1, 2, 1507401, 1, 2, 1507402, 1, 2, 1507403, 1, 2, 1507404, 1, 2, 1507405, 1, 2, 1507406, 1, 2, 1507407, 1, 2, 1507408, 1, 2, 1507409, 1, 2, 1507410, 1, 2, 1507411, 1, 2, 1507412, 1, 2, 1507413, 1, 2, 1507414, 1, 2, 1507415, 1, 2, 1507416, 1, 2, 1507417, 1, 2, 1507418, 1, 2, 1507419, 1, 2, 1507420, 1, 2, 1507421, 1, 2, 1507422, 1, 2, 1507423, 1, 3, 1637274, 1, 65537, 1637275, 1, 65538, 1637276, 1, 65538, 1637277, 1, 65538, 1637278, 1, 65538, 1637279, 1, 65538, 1637280, 1, 65538, 1637281, 1, 65538, 1637282, 1, 65538, 1637283, 1, 65538, 1637284, 1, 65538, 1637285, 1, 65538, 1637286, 1, 65538, 1637287, 1, 65538, 1637288, 1, 65538, 1637289, 1, 65538, 1637290, 1, 65538, 1637291, 1, 65538, 1637292, 1, 65538, 1637293, 1, 65538, 1637294, 1, 65538, 1637295, 1, 65538, 1637296, 1, 65538, 1637297, 1, 65538, 1637298, 1, 65538, 1637299, 1, 65538, 1637300, 1, 65538, 1637301, 1, 65538, 1637302, 1, 65538, 1637303, 1, 65538, 1637304, 1, 65538, 1637305, 1, 65538, 1637306, 1, 65538, 1637307, 1, 65538, 1637308, 1, 65538, 1637309, 1, 65538, 1637310, 1, 65538, 1637311, 1, 65538, 1637312, 1, 65538, 1637313, 1, 65538, 1637314, 1, 65538, 1637315, 1, 65538, 1637316, 1, 65538, 1637317, 1, 65538, 1637318, 1, 65538, 1637319, 1, 65538, 1637320, 1, 65538, 1637321, 1, 65538, 1637322, 1, 65538, 1637323, 1, 65538, 1637324, 1, 65538, 1637325, 1, 65538, 1637326, 1, 65538, 1637327, 1, 65538, 1637328, 1, 65538, 1637329, 1, 65538, 1637330, 1, 65538, 1637331, 1, 65538, 1637332, 1, 65538, 1637333, 1, 65538, 1637334, 1, 65538, 1637335, 1, 65538, 1637336, 1, 65538, 1637337, 1, 65538, 1637338, 1, 65538, 1637339, 1, 65538, 1637340, 1, 65538, 1637341, 1, 65538, 1637342, 1, 65538, 1637343, 1, 65538, 1637344, 1, 65538, 1637345, 1, 65538, 1637346, 1, 65538, 1637347, 1, 65538, 1637348, 1, 65538, 1637349, 1, 65538, 1637350, 1, 65538, 1637351, 1, 65538, 1637352, 1, 65538, 1637353, 1, 65538, 1637354, 1, 65538, 1637355, 1, 65538, 1637356, 1, 65538, 1637357, 1, 65538, 1637358, 1, 65538, 1637359, 1, 65538, 1637360, 1, 65538, 1637361, 1, 65538, 1637362, 1, 65538, 1637363, 1, 65538, 1637364, 1, 65538, 1637365, 1, 65538, 1637366, 1, 65538, 1637367, 1, 65538, 1637368, 1, 65538, 1637369, 1, 65538, 1637370, 1, 65538, 1637371, 1, 65538, 1637372, 1, 65538, 1637373, 1, 65538, 1637374, 1, 65538, 1637375, 1, 65538, 1637376, 1, 65538, 1637377, 1, 65538, 1637378, 1, 65538, 1637379, 1, 65538, 1637380, 1, 65538, 1637381, 1, 65538, 1637382, 1, 65538, 1637383, 1, 65538, 1637384, 1, 65538, 1637385, 1, 65538, 1637386, 1, 65538, 1637387, 1, 65538, 1637388, 1, 65538, 1637389, 1, 65538, 1637390, 1, 65538, 1637391, 1, 65538, 1637392, 1, 65538, 1637393, 1, 65538, 1637394, 1, 65538, 1637395, 1, 65538, 1637396, 1, 65538, 1637397, 1, 65538, 1637398, 1, 65538, 1637399, 1, 65538, 1637400, 1, 65538, 1637401, 1, 65538, 1637402, 1, 65538, 1637403, 1, 65538, 1637404, 1, 65538, 1637405, 1, 65538, 1637406, 1, 65538, 1637407, 1, 65538, 1637408, 1, 65538, 1637409, 1, 65538, 1637410, 1, 65538, 1637411, 1, 65538, 1637412, 1, 65538, 1637413, 1, 65538, 1637414, 1, 65538, 1637415, 1, 65538, 1637416, 1, 65538, 1637417, 1, 65538, 1637418, 1, 65538, 1637419, 1, 65538, 1637420, 1, 65538, 1637421, 1, 65538, 1637422, 1, 65538, 1637423, 1, 65538, 1637424, 1, 65538, 1637425, 1, 65538, 1637426, 1, 65538, 1637427, 1, 65538, 1637428, 1, 65538, 1637429, 1, 65538, 1637430, 1, 65538, 1637431, 1, 65538, 1637432, 1, 65538, 1637433, 1, 65538, 1637434, 1, 65538, 1637435, 1, 65538, 1637436, 1, 65538, 1637437, 1, 65538, 1637438, 1, 65538, 1637439, 1, 65538, 1637440, 1, 65538, 1637441, 1, 65538, 1637442, 1, 65538, 1637443, 1, 65538, 1637444, 1, 65538, 1637445, 1, 65538, 1637446, 1, 65538, 1637447, 1, 65538, 1637448, 1, 65538, 1637449, 1, 65538, 1637450, 1, 65538, 1637451, 1, 65538, 1637452, 1, 65538, 1637453, 1, 65538, 1637454, 1, 65538, 1637455, 1, 65538, 1637456, 1, 65538, 1637457, 1, 65538, 1637458, 1, 65538, 1637459, 1, 65538, 1637460, 1, 65538, 1637461, 1, 65538, 1637462, 1, 65538, 1637463, 1, 65538, 1637464, 1, 65538, 1637465, 1, 65538, 1637466, 1, 65538, 1637467, 1, 65538, 1637468, 1, 65538, 1637469, 1, 65538, 1637470, 1, 65538, 1637471, 1, 65538, 1637472, 1, 65538, 1637473, 1, 65538, 1637474, 1, 65538, 1637475, 1, 65538, 1637476, 1, 65538, 1637477, 1, 65538, 1637478, 1, 65538, 1637479, 1, 65538, 1637480, 1, 65538, 1637481, 1, 65538, 1637482, 1, 65538, 1637483, 1, 65538, 1637484, 1, 65538, 1637485, 1, 65538, 1637486, 1, 65538, 1637487, 1, 65538, 1637488, 1, 65538, 1637489, 1, 65538, 1637490, 1, 65538, 1637491, 1, 65538, 1637492, 1, 65538, 1637493, 1, 65538, 1637494, 1, 65538, 1637495, 1, 65538, 1637496, 1, 65538, 1637497, 1, 65538, 1637498, 1, 65538, 1637499, 1, 65538, 1637500, 1, 65538, 1637501, 1, 65538, 1637502, 1, 65538, 1637503, 1, 65538, 1637504, 1, 65538, 1637505, 1, 65538, 1637506, 1, 65538, 1637507, 1, 65538, 1637508, 1, 65538, 1637509, 1, 65538, 1637510, 1, 65538, 1637511, 1, 65538, 1637512, 1, 65538, 1637513, 1, 65538, 1637514, 1, 65538, 1637515, 1, 65538, 1637516, 1, 65538, 1637517, 1, 65538, 1637518, 1, 65538, 1637519, 1, 65538, 1637520, 1, 65538, 1637521, 1, 65538, 1637522, 1, 65538, 1637523, 1, 65538, 1637524, 1, 65538, 1637525, 1, 65538, 1637526, 1, 65538, 1637527, 1, 65538, 1637528, 1, 65538, 1637529, 1, 65538, 1637530, 1, 65538, 1637531, 1, 65538, 1637532, 1, 65538, 1637533, 1, 65538, 1637534, 1, 65538, 1637535, 1, 65538, 1637536, 1, 65538, 1637537, 1, 65538, 1637538, 1, 65538, 1637539, 1, 65538, 1637540, 1, 65538, 1637541, 1, 65538, 1637542, 1, 65538, 1637543, 1, 65538, 1637544, 1, 65538, 1637545, 1, 65538, 1637546, 1, 65538, 1637547, 1, 65538, 1637548, 1, 65538, 1637549, 1, 65538, 1637550, 1, 65538, 1637551, 1, 65538, 1637552, 1, 65538, 1637553, 1, 65538, 1637554, 1, 65538, 1637555, 1, 65538, 1637556, 1, 65538, 1637557, 1, 65538, 1637558, 1, 65538, 1637559, 1, 65538, 1637560, 1, 65538, 1637561, 1, 65538, 1637562, 1, 65538, 1637563, 1, 65538, 1637564, 1, 65538, 1637565, 1, 65538, 1637566, 1, 65538, 1637567, 1, 65538, 1637568, 1, 65538, 1637569, 1, 65538, 1637570, 1, 65538, 1637571, 1, 65538, 1637572, 1, 65538, 1637573, 1, 65538, 1637574, 1, 65538, 1637575, 1, 65538, 1637576, 1, 65538, 1637577, 1, 65538, 1637578, 1, 65538, 1637579, 1, 65538, 1637580, 1, 65538, 1637581, 1, 65538, 1637582, 1, 65538, 1637583, 1, 65538, 1637584, 1, 65538, 1637585, 1, 65538, 1637586, 1, 65538, 1637587, 1, 65538, 1637588, 1, 65538, 1637589, 1, 65538, 1637590, 1, 65538, 1637591, 1, 65538, 1637592, 1, 65538, 1637593, 1, 65538, 1637594, 1, 65538, 1637595, 1, 65538, 1637596, 1, 65538, 1637597, 1, 65538, 1637598, 1, 65538, 1637599, 1, 65538, 1637600, 1, 65538, 1637601, 1, 65538, 1637602, 1, 65538, 1637603, 1, 65538, 1637604, 1, 65538, 1637605, 1, 65538, 1637606, 1, 65538, 1637607, 1, 65538, 1637608, 1, 65538, 1637609, 1, 65538, 1637610, 1, 65538, 1637611, 1, 65538, 1637612, 1, 65538, 1637613, 1, 65538, 1637614, 1, 65538, 1637615, 1, 65538, 1637616, 1, 65538, 1637617, 1, 65538, 1637618, 1, 65538, 1637619, 1, 65538, 1637620, 1, 65538, 1637621, 1, 65538, 1637622, 1, 65538, 1637623, 1, 65538, 1637624, 1, 65538, 1637625, 1, 65538, 1637626, 1, 65538, 1637627, 1, 65538, 1637628, 1, 65538, 1637629, 1, 65538, 1637630, 1, 65538, 1637631, 1, 65538, 1637632, 1, 65538, 1637633, 1, 65538, 1637634, 1, 65538, 1637635, 1, 65538, 1637636, 1, 65538, 1637637, 1, 65538, 1637638, 1, 65538, 1637639, 1, 65538, 1637640, 1, 65538, 1637641, 1, 65538, 1637642, 1, 65538, 1637643, 1, 65538, 1637644, 1, 65538, 1637645, 1, 65538, 1637646, 1, 65538, 1637647, 1, 65538, 1637648, 1, 65538, 1637649, 1, 65538, 1637650, 1, 65538, 1637651, 1, 65538, 1637652, 1, 65538, 1637653, 1, 65538, 1637654, 1, 65538, 1637655, 1, 65538, 1637656, 1, 65538, 1637657, 1, 65538, 1637658, 1, 65538, 1637659, 1, 65538, 1637660, 1, 65538, 1637661, 1, 65538, 1637662, 1, 65538, 1637663, 1, 65538, 1637664, 1, 65538, 1637665, 1, 65538, 1637666, 1, 65538, 1637667, 1, 65538, 1637668, 1, 65538, 1637669, 1, 65538, 1637670, 1, 65538, 1637671, 1, 65538, 1637672, 1, 65538, 1637673, 1, 65538, 1637674, 1, 65538, 1637675, 1, 65538, 1637676, 1, 65538, 1637677, 1, 65538, 1637678, 1, 65538, 1637679, 1, 65538, 1637680, 1, 65538, 1637681, 1, 65538, 1637682, 1, 65538, 1637683, 1, 65538, 1637684, 1, 65538, 1637685, 1, 65538, 1637686, 1, 65538, 1637687, 1, 65538, 1637688, 1, 65538, 1637689, 1, 65538, 1637690, 1, 65538, 1637691, 1, 65538, 1637692, 1, 65538, 1637693, 1, 65538, 1637694, 1, 65538, 1637695, 1, 65538, 1637696, 1, 65538, 1637697, 1, 65538, 1637698, 1, 65538, 1637699, 1, 65538, 1637700, 1, 65538, 1637701, 1, 65538, 1637702, 1, 65538, 1637703, 1, 65538, 1637704, 1, 65538, 1637705, 1, 65538, 1637706, 1, 65538, 1637707, 1, 65538, 1637708, 1, 65538, 1637709, 1, 65538, 1637710, 1, 65538, 1637711, 1, 65538, 1637712, 1, 65538, 1637713, 1, 65538, 1637714, 1, 65538, 1637715, 1, 65538, 1637716, 1, 65538, 1637717, 1, 65538, 1637718, 1, 65538, 1637719, 1, 65538, 1637720, 1, 65538, 1637721, 1, 65538, 1637722, 1, 65538, 1637723, 1, 65538, 1637724, 1, 65538, 1637725, 1, 65538, 1637726, 1, 65538, 1637727, 1, 65538, 1637728, 1, 65538, 1637729, 1, 65538, 1637730, 1, 65538, 1637731, 1, 65538, 1637732, 1, 65538, 1637733, 1, 65538, 1637734, 1, 65538, 1637735, 1, 65538, 1637736, 1, 65538, 1637737, 1, 65538, 1637738, 1, 65538, 1637739, 1, 65538, 1637740, 1, 65538, 1637741, 1, 65538, 1637742, 1, 65538, 1637743, 1, 65538, 1637744, 1, 65538, 1637745, 1, 65538, 1637746, 1, 65538, 1637747, 1, 65538, 1637748, 1, 65538, 1637749, 1, 65538, 1637750, 1, 65538, 1637751, 1, 65538, 1637752, 1, 65538, 1637753, 1, 65538, 1637754, 1, 65538, 1637755, 1, 65538, 1637756, 1, 65538, 1637757, 1, 65538, 1637758, 1, 65538, 1637759, 1, 65538, 1637760, 1, 65538, 1637761, 1, 65538, 1637762, 1, 65538, 1637763, 1, 65538, 1637764, 1, 65538, 1637765, 1, 65538, 1637766, 1, 65538, 1637767, 1, 65538, 1637768, 1, 65538, 1637769, 1, 65538, 1637770, 1, 65538, 1637771, 1, 65538, 1637772, 1, 65538, 1637773, 1, 65538, 1637774, 1, 65538, 1637775, 1, 65538, 1637776, 1, 65538, 1637777, 1, 65538, 1637778, 1, 65538, 1637779, 1, 65538, 1637780, 1, 65538, 1637781, 1, 65538, 1637782, 1, 65538, 1637783, 1, 65538, 1637784, 1, 65538, 1637785, 1, 65538, 1637786, 1, 65538, 1637787, 1, 65538, 1637788, 1, 65538, 1637789, 1, 65538, 1637790, 1, 65538, 1637791, 1, 65538, 1637792, 1, 65538, 1637793, 1, 65538, 1637794, 1, 65538, 1637795, 1, 65538, 1637796, 1, 65538, 1637797, 1, 65538, 1637798, 1, 65538, 1637799, 1, 65538, 1637800, 1, 65538, 1637801, 1, 65538, 1637802, 1, 65538, 1637803, 1, 65538, 1637804, 1, 65538, 1637805, 1, 65538, 1637806, 1, 65538, 1637807, 1, 65538, 1637808, 1, 65538, 1637809, 1, 65538, 1637810, 1, 65538, 1637811, 1, 65538, 1637812, 1, 65538, 1637813, 1, 65538, 1637814, 1, 65538, 1637815, 1, 65538, 1637816, 1, 65538, 1637817, 1, 65538, 1637818, 1, 65538, 1637819, 1, 65538, 1637820, 1, 65538, 1637821, 1, 65538, 1637822, 1, 65538, 1637823, 1, 65538, 1637824, 1, 65538, 1637825, 1, 65538, 1637826, 1, 65538, 1637827, 1, 65538, 1637828, 1, 65538, 1637829, 1, 65538, 1637830, 1, 65538, 1637831, 1, 65538, 1637832, 1, 65538, 1637833, 1, 65538, 1637834, 1, 65538, 1637835, 1, 65538, 1637836, 1, 65538, 1637837, 1, 65538, 1637838, 1, 65538, 1637839, 1, 65538, 1637840, 1, 65538, 1637841, 1, 65538, 1637842, 1, 65538, 1637843, 1, 65538, 1637844, 1, 65538, 1637845, 1, 65538, 1637846, 1, 65538, 1637847, 1, 65538, 1637848, 1, 65538, 1637849, 1, 65538, 1637850, 1, 65538, 1637851, 1, 65538, 1637852, 1, 65538, 1637853, 1, 65538, 1637854, 1, 65538, 1637855, 1, 65538, 1637856, 1, 65538, 1637857, 1, 65538, 1637858, 1, 65538, 1637859, 1, 65538, 1637860, 1, 65538, 1637861, 1, 65538, 1637862, 1, 65538, 1637863, 1, 65538, 1637864, 1, 65538, 1637865, 1, 65538, 1637866, 1, 65538, 1637867, 1, 65538, 1637868, 1, 65538, 1637869, 1, 65538, 1637870, 1, 65538, 1637871, 1, 65538, 1637872, 1, 65538, 1637873, 1, 65538, 1637874, 1, 65538, 1637875, 1, 65538, 1637876, 1, 65538, 1637877, 1, 65538, 1637878, 1, 65538, 1637879, 1, 65538, 1637880, 1, 65538, 1637881, 1, 65538, 1637882, 1, 65538, 1637883, 1, 65538, 1637884, 1, 65538, 1637885, 1, 65538, 1637886, 1, 65538, 1637887, 1, 65538, 1637888, 1, 65538, 1637889, 1, 65538, 1637890, 1, 65538, 1637891, 1, 65538, 1637892, 1, 65538, 1637893, 1, 65538, 1637894, 1, 65538, 1637895, 1, 65538, 1637896, 1, 65538, 1637897, 1, 65538, 1637898, 1, 65538, 1637899, 1, 65538, 1637900, 1, 65538, 1637901, 1, 65538, 1637902, 1, 65538, 1637903, 1, 65538, 1637904, 1, 65538, 1637905, 1, 65538, 1637906, 1, 65538, 1637907, 1, 65538, 1637908, 1, 65538, 1637909, 1, 65538, 1637910, 1, 65538, 1637911, 1, 65538, 1637912, 1, 65538, 1637913, 1, 65538, 1637914, 1, 65538, 1637915, 1, 65538, 1637916, 1, 65538, 1637917, 1, 65538, 1637918, 1, 65538, 1637919, 1, 65538, 1637920, 1, 65538, 1637921, 1, 65538, 1637922, 1, 65538, 1637923, 1, 65538, 1637924, 1, 65538, 1637925, 1, 65538, 1637926, 1, 65538, 1637927, 1, 65538, 1637928, 1, 65538, 1637929, 1, 65538, 1637930, 1, 65538, 1637931, 1, 65538, 1637932, 1, 65538, 1637933, 1, 65538, 1637934, 1, 65538, 1637935, 1, 65538, 1637936, 1, 65538, 1637937, 1, 65538, 1637938, 1, 65538, 1637939, 1, 65538, 1637940, 1, 65538, 1637941, 1, 65538, 1637942, 1, 65538, 1637943, 1, 65538, 1637944, 1, 65538, 1637945, 1, 65538, 1637946, 1, 65538, 1637947, 1, 65538, 1637948, 1, 65538, 1637949, 1, 65538, 1637950, 1, 65538, 1637951, 1, 65538, 1637952, 1, 65538, 1637953, 1, 65538, 1637954, 1, 65538, 1637955, 1, 65538, 1637956, 1, 65538, 1637957, 1, 65538, 1637958, 1, 65538, 1637959, 1, 65538, 1637960, 1, 65538, 1637961, 1, 65538, 1637962, 1, 65538, 1637963, 1, 65538, 1637964, 1, 65538, 1637965, 1, 65538, 1637966, 1, 65538, 1637967, 1, 65538, 1637968, 1, 65538, 1637969, 1, 65538, 1637970, 1, 65538, 1637971, 1, 65538, 1637972, 1, 65538, 1637973, 1, 65538, 1637974, 1, 65538, 1637975, 1, 65538, 1637976, 1, 65538, 1637977, 1, 65538, 1637978, 1, 65538, 1637979, 1, 65538, 1637980, 1, 65538, 1637981, 1, 65538, 1637982, 1, 65538, 1637983, 1, 65538, 1637984, 1, 65538, 1637985, 1, 65538, 1637986, 1, 65538, 1637987, 1, 65538, 1637988, 1, 65538, 1637989, 1, 65538, 1637990, 1, 65538, 1637991, 1, 65538, 1637992, 1, 65538, 1637993, 1, 65538, 1637994, 1, 65538, 1637995, 1, 65538, 1637996, 1, 65538, 1637997, 1, 65538, 1637998, 1, 65538, 1637999, 1, 65538, 1638000, 1, 65538, 1638001, 1, 65538, 1638002, 1, 65538, 1638003, 1, 65538, 1638004, 1, 65538, 1638005, 1, 65538, 1638006, 1, 65538, 1638007, 1, 65538, 1638008, 1, 65538, 1638009, 1, 65538, 1638010, 1, 65538, 1638011, 1, 65538, 1638012, 1, 65538, 1638013, 1, 65538, 1638014, 1, 65538, 1638015, 1, 65538, 1638016, 1, 65538, 1638017, 1, 65538, 1638018, 1, 65538, 1638019, 1, 65538, 1638020, 1, 65538, 1638021, 1, 65538, 1638022, 1, 65538, 1638023, 1, 65538, 1638024, 1, 65538, 1638025, 1, 65538, 1638026, 1, 65538, 1638027, 1, 65538, 1638028, 1, 65538, 1638029, 1, 65538, 1638030, 1, 65538, 1638031, 1, 65538, 1638032, 1, 65538, 1638033, 1, 65538, 1638034, 1, 65538, 1638035, 1, 65538, 1638036, 1, 65538, 1638037, 1, 65538, 1638038, 1, 65538, 1638039, 1, 65538, 1638040, 1, 65538, 1638041, 1, 65538, 1638042, 1, 65538, 1638043, 1, 65538, 1638044, 1, 65538, 1638045, 1, 65538, 1638046, 1, 65538, 1638047, 1, 65538, 1638048, 1, 65538, 1638049, 1, 65538, 1638050, 1, 65538, 1638051, 1, 65538, 1638052, 1, 65538, 1638053, 1, 65538, 1638054, 1, 65538, 1638055, 1, 65538, 1638056, 1, 65538, 1638057, 1, 65538, 1638058, 1, 65538, 1638059, 1, 65538, 1638060, 1, 65538, 1638061, 1, 65538, 1638062, 1, 65538, 1638063, 1, 65538, 1638064, 1, 65538, 1638065, 1, 65538, 1638066, 1, 65538, 1638067, 1, 65538, 1638068, 1, 65538, 1638069, 1, 65538, 1638070, 1, 65538, 1638071, 1, 65538, 1638072, 1, 65538, 1638073, 1, 65538, 1638074, 1, 65538, 1638075, 1, 65538, 1638076, 1, 65538, 1638077, 1, 65538, 1638078, 1, 65538, 1638079, 1, 65538, 1638080, 1, 65538, 1638081, 1, 65538, 1638082, 1, 65538, 1638083, 1, 65538, 1638084, 1, 65538, 1638085, 1, 65538, 1638086, 1, 65538, 1638087, 1, 65538, 1638088, 1, 65538, 1638089, 1, 65538, 1638090, 1, 65538, 1638091, 1, 65538, 1638092, 1, 65538, 1638093, 1, 65538, 1638094, 1, 65538, 1638095, 1, 65538, 1638096, 1, 65538, 1638097, 1, 65538, 1638098, 1, 65538, 1638099, 1, 65538, 1638100, 1, 65538, 1638101, 1, 65538, 1638102, 1, 65538, 1638103, 1, 65538, 1638104, 1, 65538, 1638105, 1, 65538, 1638106, 1, 65538, 1638107, 1, 65538, 1638108, 1, 65538, 1638109, 1, 65538, 1638110, 1, 65538, 1638111, 1, 65538, 1638112, 1, 65538, 1638113, 1, 65538, 1638114, 1, 65538, 1638115, 1, 65538, 1638116, 1, 65538, 1638117, 1, 65538, 1638118, 1, 65538, 1638119, 1, 65538, 1638120, 1, 65538, 1638121, 1, 65538, 1638122, 1, 65538, 1638123, 1, 65538, 1638124, 1, 65538, 1638125, 1, 65538, 1638126, 1, 65538, 1638127, 1, 65538, 1638128, 1, 65538, 1638129, 1, 65538, 1638130, 1, 65538, 1638131, 1, 65538, 1638132, 1, 65538, 1638133, 1, 65538, 1638134, 1, 65538, 1638135, 1, 65538, 1638136, 1, 65538, 1638137, 1, 65538, 1638138, 1, 65538, 1638139, 1, 65538, 1638140, 1, 65538, 1638141, 1, 65538, 1638142, 1, 65538, 1638143, 1, 65538, 1638144, 1, 65538, 1638145, 1, 65538, 1638146, 1, 65538, 1638147, 1, 65538, 1638148, 1, 65538, 1638149, 1, 65538, 1638150, 1, 65538, 1638151, 1, 65538, 1638152, 1, 65538, 1638153, 1, 65538, 1638154, 1, 65538, 1638155, 1, 65538, 1638156, 1, 65538, 1638157, 1, 65538, 1638158, 1, 65538, 1638159, 1, 65538, 1638160, 1, 65538, 1638161, 1, 65538, 1638162, 1, 65538, 1638163, 1, 65538, 1638164, 1, 65538, 1638165, 1, 65538, 1638166, 1, 65538, 1638167, 1, 65538, 1638168, 1, 65538, 1638169, 1, 65538, 1638170, 1, 65538, 1638171, 1, 65538, 1638172, 1, 65538, 1638173, 1, 65538, 1638174, 1, 65538, 1638175, 1, 65538, 1638176, 1, 65538, 1638177, 1, 65538, 1638178, 1, 65538, 1638179, 1, 65538, 1638180, 1, 65538, 1638181, 1, 65538, 1638182, 1, 65538, 1638183, 1, 65538, 1638184, 1, 65538, 1638185, 1, 65538, 1638186, 1, 65538, 1638187, 1, 65538, 1638188, 1, 65538, 1638189, 1, 65538, 1638190, 1, 65538, 1638191, 1, 65538, 1638192, 1, 65538, 1638193, 1, 65538, 1638194, 1, 65538, 1638195, 1, 65538, 1638196, 1, 65538, 1638197, 1, 65538, 1638198, 1, 65538, 1638199, 1, 65538, 1638200, 1, 65538, 1638201, 1, 65538, 1638202, 1, 65538, 1638203, 1, 65538, 1638204, 1, 65538, 1638205, 1, 65538, 1638206, 1, 65538, 1638207, 1, 65538, 1638208, 1, 65538, 1638209, 1, 65538, 1638210, 1, 65538, 1638211, 1, 65538, 1638212, 1, 65538, 1638213, 1, 65538, 1638214, 1, 65538, 1638215, 1, 65538, 1638216, 1, 65538, 1638217, 1, 65538, 1638218, 1, 65538, 1638219, 1, 65538, 1638220, 1, 65538, 1638221, 1, 65538, 1638222, 1, 65538, 1638223, 1, 65538, 1638224, 1, 65538, 1638225, 1, 65538, 1638226, 1, 65538, 1638227, 1, 65538, 1638228, 1, 65538, 1638229, 1, 65538, 1638230, 1, 65538, 1638231, 1, 65538, 1638232, 1, 65538, 1638233, 1, 65538, 1638234, 1, 65538, 1638235, 1, 65538, 1638236, 1, 65538, 1638237, 1, 65538, 1638238, 1, 65538, 1638239, 1, 65538, 1638240, 1, 65538, 1638241, 1, 65538, 1638242, 1, 65538, 1638243, 1, 65538, 1638244, 1, 65538, 1638245, 1, 65538, 1638246, 1, 65538, 1638247, 1, 65538, 1638248, 1, 65538, 1638249, 1, 65538, 1638250, 1, 65538, 1638251, 1, 65538, 1638252, 1, 65538, 1638253, 1, 65538, 1638254, 1, 65538, 1638255, 1, 65538, 1638256, 1, 65538, 1638257, 1, 65538, 1638258, 1, 65538, 1638259, 1, 65538, 1638260, 1, 65538, 1638261, 1, 65538, 1638262, 1, 65538, 1638263, 1, 65538, 1638264, 1, 65538, 1638265, 1, 65538, 1638266, 1, 65538, 1638267, 1, 65538, 1638268, 1, 65538, 1638269, 1, 65538, 1638270, 1, 65538, 1638271, 1, 65538, 1638272, 1, 65538, 1638273, 1, 65538, 1638274, 1, 65538, 1638275, 1, 65538, 1638276, 1, 65538, 1638277, 1, 65538, 1638278, 1, 65538, 1638279, 1, 65538, 1638280, 1, 65538, 1638281, 1, 65538, 1638282, 1, 65538, 1638283, 1, 65538, 1638284, 1, 65538, 1638285, 1, 65538, 1638286, 1, 65538, 1638287, 1, 65538, 1638288, 1, 65538, 1638289, 1, 65538, 1638290, 1, 65538, 1638291, 1, 65538, 1638292, 1, 65538, 1638293, 1, 65538, 1638294, 1, 65538, 1638295, 1, 65538, 1638296, 1, 65538, 1638297, 1, 65538, 1638298, 1, 65538, 1638299, 1, 65538, 1638300, 1, 65538, 1638301, 1, 65538, 1638302, 1, 65538, 1638303, 1, 65538, 1638304, 1, 65538, 1638305, 1, 65538, 1638306, 1, 65538, 1638307, 1, 65538, 1638308, 1, 65538, 1638309, 1, 65538, 1638310, 1, 65538, 1638311, 1, 65538, 1638312, 1, 65538, 1638313, 1, 65538, 1638314, 1, 65538, 1638315, 1, 65538, 1638316, 1, 65538, 1638317, 1, 65538, 1638318, 1, 65538, 1638319, 1, 65538, 1638320, 1, 65538, 1638321, 1, 65538, 1638322, 1, 65538, 1638323, 1, 65538, 1638324, 1, 65538, 1638325, 1, 65538, 1638326, 1, 65538, 1638327, 1, 65538, 1638328, 1, 65538, 1638329, 1, 65538, 1638330, 1, 65538, 1638331, 1, 65538, 1638332, 1, 65538, 1638333, 1, 65538, 1638334, 1, 65538, 1638335, 1, 65538, 1638336, 1, 65538, 1638337, 1, 65538, 1638338, 1, 65538, 1638339, 1, 65538, 1638340, 1, 65538, 1638341, 1, 65538, 1638342, 1, 65538, 1638343, 1, 65538, 1638344, 1, 65538, 1638345, 1, 65538, 1638346, 1, 65538, 1638347, 1, 65538, 1638348, 1, 65538, 1638349, 1, 65538, 1638350, 1, 65538, 1638351, 1, 65538, 1638352, 1, 65538, 1638353, 1, 65538, 1638354, 1, 65538, 1638355, 1, 65538, 1638356, 1, 65538, 1638357, 1, 65538, 1638358, 1, 65538, 1638359, 1, 65538, 1638360, 1, 65538, 1638361, 1, 65538, 1638362, 1, 65538, 1638363, 1, 65538, 1638364, 1, 65538, 1638365, 1, 65538, 1638366, 1, 65538, 1638367, 1, 65538, 1638368, 1, 65538, 1638369, 1, 65538, 1638370, 1, 65538, 1638371, 1, 65538, 1638372, 1, 65538, 1638373, 1, 65538, 1638374, 1, 65538, 1638375, 1, 65538, 1638376, 1, 65538, 1638377, 1, 65538, 1638378, 1, 65538, 1638379, 1, 65538, 1638380, 1, 65538, 1638381, 1, 65538, 1638382, 1, 65538, 1638383, 1, 65538, 1638384, 1, 65538, 1638385, 1, 65538, 1638386, 1, 65538, 1638387, 1, 65538, 1638388, 1, 65538, 1638389, 1, 65538, 1638390, 1, 65538, 1638391, 1, 65538, 1638392, 1, 65538, 1638393, 1, 65538, 1638394, 1, 65538, 1638395, 1, 65538, 1638396, 1, 65538, 1638397, 1, 65538, 1638398, 1, 65538, 1638399, 1, 65538, 1572864, 1, 65538, 1572865, 1, 65538, 1572866, 1, 65538, 1572867, 1, 65538, 1572868, 1, 65538, 1572869, 1, 65538, 1572870, 1, 65538, 1572871, 1, 65538, 1572872, 1, 65538, 1572873, 1, 65538, 1572874, 1, 65538, 1572875, 1, 65538, 1572876, 1, 65538, 1572877, 1, 65538, 1572878, 1, 65538, 1572879, 1, 65538, 1572880, 1, 65538, 1572881, 1, 65538, 1572882, 1, 65538, 1572883, 1, 65538, 1572884, 1, 65538, 1572885, 1, 65538, 1572886, 1, 65538, 1572887, 1, 65538, 1572888, 1, 65538, 1572889, 1, 65538, 1572890, 1, 65538, 1572891, 1, 65538, 1572892, 1, 65538, 1572893, 1, 65538, 1572894, 1, 65538, 1572895, 1, 65538, 1572896, 1, 65538, 1572897, 1, 65538, 1572898, 1, 65538, 1572899, 1, 65538, 1572900, 1, 65538, 1572901, 1, 65538, 1572902, 1, 65538, 1572903, 1, 65538, 1572904, 1, 65538, 1572905, 1, 65538, 1572906, 1, 65538, 1572907, 1, 65538, 1572908, 1, 65538, 1572909, 1, 65538, 1572910, 1, 65538, 1572911, 1, 65538, 1572912, 1, 65538, 1572913, 1, 65538, 1572914, 1, 65538, 1572915, 1, 65538, 1572916, 1, 65538, 1572917, 1, 65538, 1572918, 1, 65538, 1572919, 1, 65538, 1572920, 1, 65538, 1572921, 1, 65538, 1572922, 1, 65538, 1572923, 1, 65538, 1572924, 1, 65538, 1572925, 1, 65538, 1572926, 1, 65538, 1572927, 1, 65538, 1572928, 1, 65538, 1572929, 1, 65538, 1572930, 1, 65538, 1572931, 1, 65538, 1572932, 1, 65538, 1572933, 1, 65538, 1572934, 1, 65538, 1572935, 1, 65538, 1572936, 1, 65538, 1572937, 1, 65538, 1572938, 1, 65538, 1572939, 1, 65538, 1572940, 1, 65538, 1572941, 1, 65538, 1572942, 1, 65538, 1572943, 1, 65538, 1572944, 1, 65538, 1572945, 1, 65538, 1572946, 1, 65538, 1572947, 1, 65538, 1572948, 1, 65538, 1572949, 1, 65538, 1572950, 1, 65538, 1572951, 1, 65538, 1572952, 1, 65538, 1572953, 1, 65538, 1572954, 1, 65538, 1572955, 1, 65538, 1572956, 1, 65538, 1572957, 1, 65538, 1572958, 1, 65538, 1572959, 1, 65539, 1702810, 1, 131073, 1702811, 1, 131074, 1702812, 1, 131074, 1702813, 1, 131074, 1702814, 1, 131074, 1702815, 1, 131074, 1702816, 1, 131074, 1702817, 1, 131074, 1702818, 1, 131074, 1702819, 1, 131074, 1702820, 1, 131074, 1702821, 1, 131074, 1702822, 1, 131074, 1702823, 1, 131074, 1702824, 1, 131074, 1702825, 1, 131074, 1702826, 1, 131074, 1702827, 1, 131074, 1702828, 1, 131074, 1702829, 1, 131074, 1702830, 1, 131074, 1702831, 1, 131074, 1702832, 1, 131074, 1702833, 1, 131074, 1702834, 1, 131074, 1702835, 1, 131074, 1702836, 1, 131074, 1702837, 1, 131074, 1702838, 1, 131074, 1702839, 1, 131074, 1702840, 1, 131074, 1702841, 1, 131074, 1702842, 1, 131074, 1702843, 1, 131074, 1702844, 1, 131074, 1702845, 1, 131074, 1702846, 1, 131074, 1702847, 1, 131074, 1702848, 1, 131074, 1702849, 1, 131074, 1702850, 1, 131074, 1702851, 1, 131074, 1702852, 1, 131074, 1702853, 1, 131074, 1702854, 1, 131074, 1702855, 1, 131074, 1702856, 1, 131074, 1702857, 1, 131074, 1702858, 1, 131074, 1702859, 1, 131074, 1702860, 1, 131074, 1702861, 1, 131074, 1702862, 1, 131074, 1702863, 1, 131074, 1702864, 1, 131074, 1702865, 1, 131074, 1702866, 1, 131074, 1702867, 1, 131074, 1702868, 1, 131074, 1702869, 1, 131074, 1702870, 1, 131074, 1702871, 1, 131074, 1702872, 1, 131074, 1702873, 1, 131074, 1702874, 1, 131074, 1702875, 1, 131074, 1702876, 1, 131074, 1702877, 1, 131074, 1702878, 1, 131074, 1702879, 1, 131074, 1702880, 1, 131074, 1702881, 1, 131074, 1702882, 1, 131074, 1702883, 1, 131074, 1702884, 1, 131074, 1702885, 1, 131074, 1702886, 1, 131074, 1702887, 1, 131074, 1702888, 1, 131074, 1702889, 1, 131074, 1702890, 1, 131074, 1702891, 1, 131074, 1702892, 1, 131074, 1702893, 1, 131074, 1702894, 1, 131074, 1702895, 1, 131074, 1702896, 1, 131074, 1702897, 1, 131074, 1702898, 1, 131074, 1702899, 1, 131074, 1702900, 1, 131074, 1702901, 1, 131074, 1702902, 1, 131074, 1702903, 1, 131074, 1702904, 1, 131074, 1702905, 1, 131074, 1702906, 1, 131074, 1702907, 1, 131074, 1702908, 1, 131074, 1702909, 1, 131074, 1702910, 1, 131074, 1702911, 1, 131074, 1702912, 1, 131074, 1702913, 1, 131074, 1702914, 1, 131074, 1702915, 1, 131074, 1702916, 1, 131074, 1702917, 1, 131074, 1702918, 1, 131074, 1702919, 1, 131074, 1702920, 1, 131074, 1702921, 1, 131074, 1702922, 1, 131074, 1702923, 1, 131074, 1702924, 1, 131074, 1702925, 1, 131074, 1702926, 1, 131074, 1702927, 1, 131074, 1702928, 1, 131074, 1702929, 1, 131074, 1702930, 1, 131074, 1702931, 1, 131074, 1702932, 1, 131074, 1702933, 1, 131074, 1702934, 1, 131074, 1702935, 1, 131074, 1702936, 1, 131074, 1702937, 1, 131074, 1702938, 1, 131074, 1702939, 1, 131074, 1702940, 1, 131074, 1702941, 1, 131074, 1702942, 1, 131074, 1702943, 1, 131074, 1702944, 1, 131074, 1702945, 1, 131074, 1702946, 1, 131074, 1702947, 1, 131074, 1702948, 1, 131074, 1702949, 1, 131074, 1702950, 1, 131074, 1702951, 1, 131074, 1702952, 1, 131074, 1702953, 1, 131074, 1702954, 1, 131074, 1702955, 1, 131074, 1702956, 1, 131074, 1702957, 1, 131074, 1702958, 1, 131074, 1702959, 1, 131074, 1702960, 1, 131074, 1702961, 1, 131074, 1702962, 1, 131074, 1702963, 1, 131074, 1702964, 1, 131074, 1702965, 1, 131074, 1702966, 1, 131074, 1702967, 1, 131074, 1702968, 1, 131074, 1702969, 1, 131074, 1702970, 1, 131074, 1702971, 1, 131074, 1702972, 1, 131074, 1702973, 1, 131074, 1702974, 1, 131074, 1702975, 1, 131074, 1702976, 1, 131074, 1702977, 1, 131074, 1702978, 1, 131074, 1702979, 1, 131074, 1702980, 1, 131074, 1702981, 1, 131074, 1702982, 1, 131074, 1702983, 1, 131074, 1702984, 1, 131074, 1702985, 1, 131074, 1702986, 1, 131074, 1702987, 1, 131074, 1702988, 1, 131074, 1702989, 1, 131074, 1702990, 1, 131074, 1702991, 1, 131074, 1702992, 1, 131074, 1702993, 1, 131074, 1702994, 1, 131074, 1702995, 1, 131074, 1702996, 1, 131074, 1702997, 1, 131074, 1702998, 1, 131074, 1702999, 1, 131074, 1703000, 1, 131074, 1703001, 1, 131074, 1703002, 1, 131074, 1703003, 1, 131074, 1703004, 1, 131074, 1703005, 1, 131074, 1703006, 1, 131074, 1703007, 1, 131074, 1703008, 1, 131074, 1703009, 1, 131074, 1703010, 1, 131074, 1703011, 1, 131074, 1703012, 1, 131074, 1703013, 1, 131074, 1703014, 1, 131074, 1703015, 1, 131074, 1703016, 1, 131074, 1703017, 1, 131074, 1703018, 1, 131074, 1703019, 1, 131074, 1703020, 1, 131074, 1703021, 1, 131074, 1703022, 1, 131074, 1703023, 1, 131074, 1703024, 1, 131074, 1703025, 1, 131074, 1703026, 1, 131074, 1703027, 1, 131074, 1703028, 1, 131074, 1703029, 1, 131074, 1703030, 1, 131074, 1703031, 1, 131074, 1703032, 1, 131074, 1703033, 1, 131074, 1703034, 1, 131074, 1703035, 1, 131074, 1703036, 1, 131074, 1703037, 1, 131074, 1703038, 1, 131074, 1703039, 1, 131074, 1703040, 1, 131074, 1703041, 1, 131074, 1703042, 1, 131074, 1703043, 1, 131074, 1703044, 1, 131074, 1703045, 1, 131074, 1703046, 1, 131074, 1703047, 1, 131074, 1703048, 1, 131074, 1703049, 1, 131074, 1703050, 1, 131074, 1703051, 1, 131074, 1703052, 1, 131074, 1703053, 1, 131074, 1703054, 1, 131074, 1703055, 1, 131074, 1703056, 1, 131074, 1703057, 1, 131074, 1703058, 1, 131074, 1703059, 1, 131074, 1703060, 1, 131074, 1703061, 1, 131074, 1703062, 1, 131074, 1703063, 1, 131074, 1703064, 1, 131074, 1703065, 1, 131074, 1703066, 1, 131074, 1703067, 1, 131074, 1703068, 1, 131074, 1703069, 1, 131074, 1703070, 1, 131074, 1703071, 1, 131074, 1703072, 1, 131074, 1703073, 1, 131074, 1703074, 1, 131074, 1703075, 1, 131074, 1703076, 1, 131074, 1703077, 1, 131074, 1703078, 1, 131074, 1703079, 1, 131074, 1703080, 1, 131074, 1703081, 1, 131074, 1703082, 1, 131074, 1703083, 1, 131074, 1703084, 1, 131074, 1703085, 1, 131074, 1703086, 1, 131074, 1703087, 1, 131074, 1703088, 1, 131074, 1703089, 1, 131074, 1703090, 1, 131074, 1703091, 1, 131074, 1703092, 1, 131074, 1703093, 1, 131074, 1703094, 1, 131074, 1703095, 1, 131074, 1703096, 1, 131074, 1703097, 1, 131074, 1703098, 1, 131074, 1703099, 1, 131074, 1703100, 1, 131074, 1703101, 1, 131074, 1703102, 1, 131074, 1703103, 1, 131074, 1703104, 1, 131074, 1703105, 1, 131074, 1703106, 1, 131074, 1703107, 1, 131074, 1703108, 1, 131074, 1703109, 1, 131074, 1703110, 1, 131074, 1703111, 1, 131074, 1703112, 1, 131074, 1703113, 1, 131074, 1703114, 1, 131074, 1703115, 1, 131074, 1703116, 1, 131074, 1703117, 1, 131074, 1703118, 1, 131074, 1703119, 1, 131074, 1703120, 1, 131074, 1703121, 1, 131074, 1703122, 1, 131074, 1703123, 1, 131074, 1703124, 1, 131074, 1703125, 1, 131074, 1703126, 1, 131074, 1703127, 1, 131074, 1703128, 1, 131074, 1703129, 1, 131074, 1703130, 1, 131074, 1703131, 1, 131074, 1703132, 1, 131074, 1703133, 1, 131074, 1703134, 1, 131074, 1703135, 1, 131074, 1703136, 1, 131074, 1703137, 1, 131074, 1703138, 1, 131074, 1703139, 1, 131074, 1703140, 1, 131074, 1703141, 1, 131074, 1703142, 1, 131074, 1703143, 1, 131074, 1703144, 1, 131074, 1703145, 1, 131074, 1703146, 1, 131074, 1703147, 1, 131074, 1703148, 1, 131074, 1703149, 1, 131074, 1703150, 1, 131074, 1703151, 1, 131074, 1703152, 1, 131074, 1703153, 1, 131074, 1703154, 1, 131074, 1703155, 1, 131074, 1703156, 1, 131074, 1703157, 1, 131074, 1703158, 1, 131074, 1703159, 1, 131074, 1703160, 1, 131074, 1703161, 1, 131074, 1703162, 1, 131074, 1703163, 1, 131074, 1703164, 1, 131074, 1703165, 1, 131074, 1703166, 1, 131074, 1703167, 1, 131074, 1703168, 1, 131074, 1703169, 1, 131074, 1703170, 1, 131074, 1703171, 1, 131074, 1703172, 1, 131074, 1703173, 1, 131074, 1703174, 1, 131074, 1703175, 1, 131074, 1703176, 1, 131074, 1703177, 1, 131074, 1703178, 1, 131074, 1703179, 1, 131074, 1703180, 1, 131074, 1703181, 1, 131074, 1703182, 1, 131074, 1703183, 1, 131074, 1703184, 1, 131074, 1703185, 1, 131074, 1703186, 1, 131074, 1703187, 1, 131074, 1703188, 1, 131074, 1703189, 1, 131074, 1703190, 1, 131074, 1703191, 1, 131074, 1703192, 1, 131074, 1703193, 1, 131074, 1703194, 1, 131074, 1703195, 1, 131074, 1703196, 1, 131074, 1703197, 1, 131074, 1703198, 1, 131074, 1703199, 1, 131074, 1703200, 1, 131074, 1703201, 1, 131074, 1703202, 1, 131074, 1703203, 1, 131074, 1703204, 1, 131074, 1703205, 1, 131074, 1703206, 1, 131074, 1703207, 1, 131074, 1703208, 1, 131074, 1703209, 1, 131074, 1703210, 1, 131074, 1703211, 1, 131074, 1703212, 1, 131074, 1703213, 1, 131074, 1703214, 1, 131074, 1703215, 1, 131074, 1703216, 1, 131074, 1703217, 1, 131074, 1703218, 1, 131074, 1703219, 1, 131074, 1703220, 1, 131074, 1703221, 1, 131074, 1703222, 1, 131074, 1703223, 1, 131074, 1703224, 1, 131074, 1703225, 1, 131074, 1703226, 1, 131074, 1703227, 1, 131074, 1703228, 1, 131074, 1703229, 1, 131074, 1703230, 1, 131074, 1703231, 1, 131074, 1703232, 1, 131074, 1703233, 1, 131074, 1703234, 1, 131074, 1703235, 1, 131074, 1703236, 1, 131074, 1703237, 1, 131074, 1703238, 1, 131074, 1703239, 1, 131074, 1703240, 1, 131074, 1703241, 1, 131074, 1703242, 1, 131074, 1703243, 1, 131074, 1703244, 1, 131074, 1703245, 1, 131074, 1703246, 1, 131074, 1703247, 1, 131074, 1703248, 1, 131074, 1703249, 1, 131074, 1703250, 1, 131074, 1703251, 1, 131074, 1703252, 1, 131074, 1703253, 1, 131074, 1703254, 1, 131074, 1703255, 1, 131074, 1703256, 1, 131074, 1703257, 1, 131074, 1703258, 1, 131074, 1703259, 1, 131074, 1703260, 1, 131074, 1703261, 1, 131074, 1703262, 1, 131074, 1703263, 1, 131074, 1703264, 1, 131074, 1703265, 1, 131074, 1703266, 1, 131074, 1703267, 1, 131074, 1703268, 1, 131074, 1703269, 1, 131074, 1703270, 1, 131074, 1703271, 1, 131074, 1703272, 1, 131074, 1703273, 1, 131074, 1703274, 1, 131074, 1703275, 1, 131074, 1703276, 1, 131074, 1703277, 1, 131074, 1703278, 1, 131074, 1703279, 1, 131074, 1703280, 1, 131074, 1703281, 1, 131074, 1703282, 1, 131074, 1703283, 1, 131074, 1703284, 1, 131074, 1703285, 1, 131074, 1703286, 1, 131074, 1703287, 1, 131074, 1703288, 1, 131074, 1703289, 1, 131074, 1703290, 1, 131074, 1703291, 1, 131074, 1703292, 1, 131074, 1703293, 1, 131074, 1703294, 1, 131074, 1703295, 1, 131074, 1703296, 1, 131074, 1703297, 1, 131074, 1703298, 1, 131074, 1703299, 1, 131074, 1703300, 1, 131074, 1703301, 1, 131074, 1703302, 1, 131074, 1703303, 1, 131074, 1703304, 1, 131074, 1703305, 1, 131074, 1703306, 1, 131074, 1703307, 1, 131074, 1703308, 1, 131074, 1703309, 1, 131074, 1703310, 1, 131074, 1703311, 1, 131074, 1703312, 1, 131074, 1703313, 1, 131074, 1703314, 1, 131074, 1703315, 1, 131074, 1703316, 1, 131074, 1703317, 1, 131074, 1703318, 1, 131074, 1703319, 1, 131074, 1703320, 1, 131074, 1703321, 1, 131074, 1703322, 1, 131074, 1703323, 1, 131074, 1703324, 1, 131074, 1703325, 1, 131074, 1703326, 1, 131074, 1703327, 1, 131074, 1703328, 1, 131074, 1703329, 1, 131074, 1703330, 1, 131074, 1703331, 1, 131074, 1703332, 1, 131074, 1703333, 1, 131074, 1703334, 1, 131074, 1703335, 1, 131074, 1703336, 1, 131074, 1703337, 1, 131074, 1703338, 1, 131074, 1703339, 1, 131074, 1703340, 1, 131074, 1703341, 1, 131074, 1703342, 1, 131074, 1703343, 1, 131074, 1703344, 1, 131074, 1703345, 1, 131074, 1703346, 1, 131074, 1703347, 1, 131074, 1703348, 1, 131074, 1703349, 1, 131074, 1703350, 1, 131074, 1703351, 1, 131074, 1703352, 1, 131074, 1703353, 1, 131074, 1703354, 1, 131074, 1703355, 1, 131074, 1703356, 1, 131074, 1703357, 1, 131074, 1703358, 1, 131074, 1703359, 1, 131074, 1703360, 1, 131074, 1703361, 1, 131074, 1703362, 1, 131074, 1703363, 1, 131074, 1703364, 1, 131074, 1703365, 1, 131074, 1703366, 1, 131074, 1703367, 1, 131074, 1703368, 1, 131074, 1703369, 1, 131074, 1703370, 1, 131074, 1703371, 1, 131074, 1703372, 1, 131074, 1703373, 1, 131074, 1703374, 1, 131074, 1703375, 1, 131074, 1703376, 1, 131074, 1703377, 1, 131074, 1703378, 1, 131074, 1703379, 1, 131074, 1703380, 1, 131074, 1703381, 1, 131074, 1703382, 1, 131074, 1703383, 1, 131074, 1703384, 1, 131074, 1703385, 1, 131074, 1703386, 1, 131074, 1703387, 1, 131074, 1703388, 1, 131074, 1703389, 1, 131074, 1703390, 1, 131074, 1703391, 1, 131074, 1703392, 1, 131074, 1703393, 1, 131074, 1703394, 1, 131074, 1703395, 1, 131074, 1703396, 1, 131074, 1703397, 1, 131074, 1703398, 1, 131074, 1703399, 1, 131074, 1703400, 1, 131074, 1703401, 1, 131074, 1703402, 1, 131074, 1703403, 1, 131074, 1703404, 1, 131074, 1703405, 1, 131074, 1703406, 1, 131074, 1703407, 1, 131074, 1703408, 1, 131074, 1703409, 1, 131074, 1703410, 1, 131074, 1703411, 1, 131074, 1703412, 1, 131074, 1703413, 1, 131074, 1703414, 1, 131074, 1703415, 1, 131074, 1703416, 1, 131074, 1703417, 1, 131074, 1703418, 1, 131074, 1703419, 1, 131074, 1703420, 1, 131074, 1703421, 1, 131074, 1703422, 1, 131074, 1703423, 1, 131074, 1703424, 1, 131074, 1703425, 1, 131074, 1703426, 1, 131074, 1703427, 1, 131074, 1703428, 1, 131074, 1703429, 1, 131074, 1703430, 1, 131074, 1703431, 1, 131074, 1703432, 1, 131074, 1703433, 1, 131074, 1703434, 1, 131074, 1703435, 1, 131074, 1703436, 1, 131074, 1703437, 1, 131074, 1703438, 1, 131074, 1703439, 1, 131074, 1703440, 1, 131074, 1703441, 1, 131074, 1703442, 1, 131074, 1703443, 1, 131074, 1703444, 1, 131074, 1703445, 1, 131074, 1703446, 1, 131074, 1703447, 1, 131074, 1703448, 1, 131074, 1703449, 1, 131074, 1703450, 1, 131074, 1703451, 1, 131074, 1703452, 1, 131074, 1703453, 1, 131074, 1703454, 1, 131074, 1703455, 1, 131074, 1703456, 1, 131074, 1703457, 1, 131074, 1703458, 1, 131074, 1703459, 1, 131074, 1703460, 1, 131074, 1703461, 1, 131074, 1703462, 1, 131074, 1703463, 1, 131074, 1703464, 1, 131074, 1703465, 1, 131074, 1703466, 1, 131074, 1703467, 1, 131074, 1703468, 1, 131074, 1703469, 1, 131074, 1703470, 1, 131074, 1703471, 1, 131074, 1703472, 1, 131074, 1703473, 1, 131074, 1703474, 1, 131074, 1703475, 1, 131074, 1703476, 1, 131074, 1703477, 1, 131074, 1703478, 1, 131074, 1703479, 1, 131074, 1703480, 1, 131074, 1703481, 1, 131074, 1703482, 1, 131074, 1703483, 1, 131074, 1703484, 1, 131074, 1703485, 1, 131074, 1703486, 1, 131074, 1703487, 1, 131074, 1703488, 1, 131074, 1703489, 1, 131074, 1703490, 1, 131074, 1703491, 1, 131074, 1703492, 1, 131074, 1703493, 1, 131074, 1703494, 1, 131074, 1703495, 1, 131074, 1703496, 1, 131074, 1703497, 1, 131074, 1703498, 1, 131074, 1703499, 1, 131074, 1703500, 1, 131074, 1703501, 1, 131074, 1703502, 1, 131074, 1703503, 1, 131074, 1703504, 1, 131074, 1703505, 1, 131074, 1703506, 1, 131074, 1703507, 1, 131074, 1703508, 1, 131074, 1703509, 1, 131074, 1703510, 1, 131074, 1703511, 1, 131074, 1703512, 1, 131074, 1703513, 1, 131074, 1703514, 1, 131074, 1703515, 1, 131074, 1703516, 1, 131074, 1703517, 1, 131074, 1703518, 1, 131074, 1703519, 1, 131074, 1703520, 1, 131074, 1703521, 1, 131074, 1703522, 1, 131074, 1703523, 1, 131074, 1703524, 1, 131074, 1703525, 1, 131074, 1703526, 1, 131074, 1703527, 1, 131074, 1703528, 1, 131074, 1703529, 1, 131074, 1703530, 1, 131074, 1703531, 1, 131074, 1703532, 1, 131074, 1703533, 1, 131074, 1703534, 1, 131074, 1703535, 1, 131074, 1703536, 1, 131074, 1703537, 1, 131074, 1703538, 1, 131074, 1703539, 1, 131074, 1703540, 1, 131074, 1703541, 1, 131074, 1703542, 1, 131074, 1703543, 1, 131074, 1703544, 1, 131074, 1703545, 1, 131074, 1703546, 1, 131074, 1703547, 1, 131074, 1703548, 1, 131074, 1703549, 1, 131074, 1703550, 1, 131074, 1703551, 1, 131074, 1703552, 1, 131074, 1703553, 1, 131074, 1703554, 1, 131074, 1703555, 1, 131074, 1703556, 1, 131074, 1703557, 1, 131074, 1703558, 1, 131074, 1703559, 1, 131074, 1703560, 1, 131074, 1703561, 1, 131074, 1703562, 1, 131074, 1703563, 1, 131074, 1703564, 1, 131074, 1703565, 1, 131074, 1703566, 1, 131074, 1703567, 1, 131074, 1703568, 1, 131074, 1703569, 1, 131074, 1703570, 1, 131074, 1703571, 1, 131074, 1703572, 1, 131074, 1703573, 1, 131074, 1703574, 1, 131074, 1703575, 1, 131074, 1703576, 1, 131074, 1703577, 1, 131074, 1703578, 1, 131074, 1703579, 1, 131074, 1703580, 1, 131074, 1703581, 1, 131074, 1703582, 1, 131074, 1703583, 1, 131074, 1703584, 1, 131074, 1703585, 1, 131074, 1703586, 1, 131074, 1703587, 1, 131074, 1703588, 1, 131074, 1703589, 1, 131074, 1703590, 1, 131074, 1703591, 1, 131074, 1703592, 1, 131074, 1703593, 1, 131074, 1703594, 1, 131074, 1703595, 1, 131074, 1703596, 1, 131074, 1703597, 1, 131074, 1703598, 1, 131074, 1703599, 1, 131074, 1703600, 1, 131074, 1703601, 1, 131074, 1703602, 1, 131074, 1703603, 1, 131074, 1703604, 1, 131074, 1703605, 1, 131074, 1703606, 1, 131074, 1703607, 1, 131074, 1703608, 1, 131074, 1703609, 1, 131074, 1703610, 1, 131074, 1703611, 1, 131074, 1703612, 1, 131074, 1703613, 1, 131074, 1703614, 1, 131074, 1703615, 1, 131074, 1703616, 1, 131074, 1703617, 1, 131074, 1703618, 1, 131074, 1703619, 1, 131074, 1703620, 1, 131074, 1703621, 1, 131074, 1703622, 1, 131074, 1703623, 1, 131074, 1703624, 1, 131074, 1703625, 1, 131074, 1703626, 1, 131074, 1703627, 1, 131074, 1703628, 1, 131074, 1703629, 1, 131074, 1703630, 1, 131074, 1703631, 1, 131074, 1703632, 1, 131074, 1703633, 1, 131074, 1703634, 1, 131074, 1703635, 1, 131074, 1703636, 1, 131074, 1703637, 1, 131074, 1703638, 1, 131074, 1703639, 1, 131074, 1703640, 1, 131074, 1703641, 1, 131074, 1703642, 1, 131074, 1703643, 1, 131074, 1703644, 1, 131074, 1703645, 1, 131074, 1703646, 1, 131074, 1703647, 1, 131074, 1703648, 1, 131074, 1703649, 1, 131074, 1703650, 1, 131074, 1703651, 1, 131074, 1703652, 1, 131074, 1703653, 1, 131074, 1703654, 1, 131074, 1703655, 1, 131074, 1703656, 1, 131074, 1703657, 1, 131074, 1703658, 1, 131074, 1703659, 1, 131074, 1703660, 1, 131074, 1703661, 1, 131074, 1703662, 1, 131074, 1703663, 1, 131074, 1703664, 1, 131074, 1703665, 1, 131074, 1703666, 1, 131074, 1703667, 1, 131074, 1703668, 1, 131074, 1703669, 1, 131074, 1703670, 1, 131074, 1703671, 1, 131074, 1703672, 1, 131074, 1703673, 1, 131074, 1703674, 1, 131074, 1703675, 1, 131074, 1703676, 1, 131074, 1703677, 1, 131074, 1703678, 1, 131074, 1703679, 1, 131074, 1703680, 1, 131074, 1703681, 1, 131074, 1703682, 1, 131074, 1703683, 1, 131074, 1703684, 1, 131074, 1703685, 1, 131074, 1703686, 1, 131074, 1703687, 1, 131074, 1703688, 1, 131074, 1703689, 1, 131074, 1703690, 1, 131074, 1703691, 1, 131074, 1703692, 1, 131074, 1703693, 1, 131074, 1703694, 1, 131074, 1703695, 1, 131074, 1703696, 1, 131074, 1703697, 1, 131074, 1703698, 1, 131074, 1703699, 1, 131074, 1703700, 1, 131074, 1703701, 1, 131074, 1703702, 1, 131074, 1703703, 1, 131074, 1703704, 1, 131074, 1703705, 1, 131074, 1703706, 1, 131074, 1703707, 1, 131074, 1703708, 1, 131074, 1703709, 1, 131074, 1703710, 1, 131074, 1703711, 1, 131074, 1703712, 1, 131074, 1703713, 1, 131074, 1703714, 1, 131074, 1703715, 1, 131074, 1703716, 1, 131074, 1703717, 1, 131074, 1703718, 1, 131074, 1703719, 1, 131074, 1703720, 1, 131074, 1703721, 1, 131074, 1703722, 1, 131074, 1703723, 1, 131074, 1703724, 1, 131074, 1703725, 1, 131074, 1703726, 1, 131074, 1703727, 1, 131074, 1703728, 1, 131074, 1703729, 1, 131074, 1703730, 1, 131074, 1703731, 1, 131074, 1703732, 1, 131074, 1703733, 1, 131074, 1703734, 1, 131074, 1703735, 1, 131074, 1703736, 1, 131074, 1703737, 1, 131074, 1703738, 1, 131074, 1703739, 1, 131074, 1703740, 1, 131074, 1703741, 1, 131074, 1703742, 1, 131074, 1703743, 1, 131074, 1703744, 1, 131074, 1703745, 1, 131074, 1703746, 1, 131074, 1703747, 1, 131074, 1703748, 1, 131074, 1703749, 1, 131074, 1703750, 1, 131074, 1703751, 1, 131074, 1703752, 1, 131074, 1703753, 1, 131074, 1703754, 1, 131074, 1703755, 1, 131074, 1703756, 1, 131074, 1703757, 1, 131074, 1703758, 1, 131074, 1703759, 1, 131074, 1703760, 1, 131074, 1703761, 1, 131074, 1703762, 1, 131074, 1703763, 1, 131074, 1703764, 1, 131074, 1703765, 1, 131074, 1703766, 1, 131074, 1703767, 1, 131074, 1703768, 1, 131074, 1703769, 1, 131074, 1703770, 1, 131074, 1703771, 1, 131074, 1703772, 1, 131074, 1703773, 1, 131074, 1703774, 1, 131074, 1703775, 1, 131074, 1703776, 1, 131074, 1703777, 1, 131074, 1703778, 1, 131074, 1703779, 1, 131074, 1703780, 1, 131074, 1703781, 1, 131074, 1703782, 1, 131074, 1703783, 1, 131074, 1703784, 1, 131074, 1703785, 1, 131074, 1703786, 1, 131074, 1703787, 1, 131074, 1703788, 1, 131074, 1703789, 1, 131074, 1703790, 1, 131074, 1703791, 1, 131074, 1703792, 1, 131074, 1703793, 1, 131074, 1703794, 1, 131074, 1703795, 1, 131074, 1703796, 1, 131074, 1703797, 1, 131074, 1703798, 1, 131074, 1703799, 1, 131074, 1703800, 1, 131074, 1703801, 1, 131074, 1703802, 1, 131074, 1703803, 1, 131074, 1703804, 1, 131074, 1703805, 1, 131074, 1703806, 1, 131074, 1703807, 1, 131074, 1703808, 1, 131074, 1703809, 1, 131074, 1703810, 1, 131074, 1703811, 1, 131074, 1703812, 1, 131074, 1703813, 1, 131074, 1703814, 1, 131074, 1703815, 1, 131074, 1703816, 1, 131074, 1703817, 1, 131074, 1703818, 1, 131074, 1703819, 1, 131074, 1703820, 1, 131074, 1703821, 1, 131074, 1703822, 1, 131074, 1703823, 1, 131074, 1703824, 1, 131074, 1703825, 1, 131074, 1703826, 1, 131074, 1703827, 1, 131074, 1703828, 1, 131074, 1703829, 1, 131074, 1703830, 1, 131074, 1703831, 1, 131074, 1703832, 1, 131074, 1703833, 1, 131074, 1703834, 1, 131074, 1703835, 1, 131074, 1703836, 1, 131074, 1703837, 1, 131074, 1703838, 1, 131074, 1703839, 1, 131074, 1703840, 1, 131074, 1703841, 1, 131074, 1703842, 1, 131074, 1703843, 1, 131074, 1703844, 1, 131074, 1703845, 1, 131074, 1703846, 1, 131074, 1703847, 1, 131074, 1703848, 1, 131074, 1703849, 1, 131074, 1703850, 1, 131074, 1703851, 1, 131074, 1703852, 1, 131074, 1703853, 1, 131074, 1703854, 1, 131074, 1703855, 1, 131074, 1703856, 1, 131074, 1703857, 1, 131074, 1703858, 1, 131074, 1703859, 1, 131074, 1703860, 1, 131074, 1703861, 1, 131074, 1703862, 1, 131074, 1703863, 1, 131074, 1703864, 1, 131074, 1703865, 1, 131074, 1703866, 1, 131074, 1703867, 1, 131074, 1703868, 1, 131074, 1703869, 1, 131074, 1703870, 1, 131074, 1703871, 1, 131074, 1703872, 1, 131074, 1703873, 1, 131074, 1703874, 1, 131074, 1703875, 1, 131074, 1703876, 1, 131074, 1703877, 1, 131074, 1703878, 1, 131074, 1703879, 1, 131074, 1703880, 1, 131074, 1703881, 1, 131074, 1703882, 1, 131074, 1703883, 1, 131074, 1703884, 1, 131074, 1703885, 1, 131074, 1703886, 1, 131074, 1703887, 1, 131074, 1703888, 1, 131074, 1703889, 1, 131074, 1703890, 1, 131074, 1703891, 1, 131074, 1703892, 1, 131074, 1703893, 1, 131074, 1703894, 1, 131074, 1703895, 1, 131074, 1703896, 1, 131074, 1703897, 1, 131074, 1703898, 1, 131074, 1703899, 1, 131074, 1703900, 1, 131074, 1703901, 1, 131074, 1703902, 1, 131074, 1703903, 1, 131074, 1703904, 1, 131074, 1703905, 1, 131074, 1703906, 1, 131074, 1703907, 1, 131074, 1703908, 1, 131074, 1703909, 1, 131074, 1703910, 1, 131074, 1703911, 1, 131074, 1703912, 1, 131074, 1703913, 1, 131074, 1703914, 1, 131074, 1703915, 1, 131074, 1703916, 1, 131074, 1703917, 1, 131074, 1703918, 1, 131074, 1703919, 1, 131074, 1703920, 1, 131074, 1703921, 1, 131074, 1703922, 1, 131074, 1703923, 1, 131074, 1703924, 1, 131074, 1703925, 1, 131074, 1703926, 1, 131074, 1703927, 1, 131074, 1703928, 1, 131074, 1703929, 1, 131074, 1703930, 1, 131074, 1703931, 1, 131074, 1703932, 1, 131074, 1703933, 1, 131074, 1703934, 1, 131074, 1703935, 1, 131074, 1638400, 1, 131074, 1638401, 1, 131074, 1638402, 1, 131074, 1638403, 1, 131074, 1638404, 1, 131074, 1638405, 1, 131074, 1638406, 1, 131074, 1638407, 1, 131074, 1638408, 1, 131074, 1638409, 1, 131074, 1638410, 1, 131074, 1638411, 1, 131074, 1638412, 1, 131074, 1638413, 1, 131074, 1638414, 1, 131074, 1638415, 1, 131074, 1638416, 1, 131074, 1638417, 1, 131074, 1638418, 1, 131074, 1638419, 1, 131074, 1638420, 1, 131074, 1638421, 1, 131074, 1638422, 1, 131074, 1638423, 1, 131074, 1638424, 1, 131074, 1638425, 1, 131074, 1638426, 1, 131074, 1638427, 1, 131074, 1638428, 1, 131074, 1638429, 1, 131074, 1638430, 1, 131074, 1638431, 1, 131074, 1638432, 1, 131074, 1638433, 1, 131074, 1638434, 1, 131074, 1638435, 1, 131074, 1638436, 1, 131074, 1638437, 1, 131074, 1638438, 1, 131074, 1638439, 1, 131074, 1638440, 1, 131074, 1638441, 1, 131074, 1638442, 1, 131074, 1638443, 1, 131074, 1638444, 1, 131074, 1638445, 1, 131074, 1638446, 1, 131074, 1638447, 1, 131074, 1638448, 1, 131074, 1638449, 1, 131074, 1638450, 1, 131074, 1638451, 1, 131074, 1638452, 1, 131074, 1638453, 1, 131074, 1638454, 1, 131074, 1638455, 1, 131074, 1638456, 1, 131074, 1638457, 1, 131074, 1638458, 1, 131074, 1638459, 1, 131074, 1638460, 1, 131074, 1638461, 1, 131074, 1638462, 1, 131074, 1638463, 1, 131074, 1638464, 1, 131074, 1638465, 1, 131074, 1638466, 1, 131074, 1638467, 1, 131074, 1638468, 1, 131074, 1638469, 1, 131074, 1638470, 1, 131074, 1638471, 1, 131074, 1638472, 1, 131074, 1638473, 1, 131074, 1638474, 1, 131074, 1638475, 1, 131074, 1638476, 1, 131074, 1638477, 1, 131074, 1638478, 1, 131074, 1638479, 1, 131074, 1638480, 1, 131074, 1638481, 1, 131074, 1638482, 1, 131074, 1638483, 1, 131074, 1638484, 1, 131074, 1638485, 1, 131074, 1638486, 1, 131074, 1638487, 1, 131074, 1638488, 1, 131074, 1638489, 1, 131074, 1638490, 1, 131074, 1638491, 1, 131074, 1638492, 1, 131074, 1638493, 1, 131074, 1638494, 1, 131074, 1638495, 1, 131075 ) + +[node name="FamiCutscene" parent="." instance=ExtResource( 7 )] + +[node name="2083" parent="." instance=ExtResource( 1 )] +visible = false +position = Vector2( 0, 12 ) +famira_path = NodePath("../Famira") + +[node name="Camera" type="Camera2D" parent="2083"] +unique_name_in_owner = true +position = Vector2( 0, -4 ) +offset = Vector2( 0, -8 ) +anchor_mode = 0 +current = true +limit_top = 8 +limit_bottom = 192 +limit_smoothed = true + +[node name="Famira" parent="." instance=ExtResource( 4 )] +visible = false +position = Vector2( 160, 179 ) +sg2083_path = NodePath("../2083") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 1 ) +anims/drop-stg = SubResource( 2 ) + +[node name="Speccy" type="Sprite" parent="."] +position = Vector2( -9001, 167 ) +texture = ExtResource( 23 ) + +[connection signal="cutscene_finished" from="FamiCutscene" to="." method="_on_cutscene_finished"] +[connection signal="energy_changed" from="2083" to="." method="_on_2083_energy_changed"] +[connection signal="health_changed" from="2083" to="." method="_on_2083_health_changed"] +[connection signal="died" from="Famira" to="." method="_on_Famira_died"] +[connection signal="health_changed" from="Famira" to="." method="_on_Famira_health_changed"] diff --git a/maps/bug_teleporter.gd b/maps/bug_teleporter.gd new file mode 100644 index 0000000..3ecf5ca --- /dev/null +++ b/maps/bug_teleporter.gd @@ -0,0 +1,7 @@ +extends Area2D + + + +func _on_Area2D_area_entered(area): + Audio.ac_music.stop() + Game.change_map(load("res://menus/bug_world.tscn")) diff --git a/maps/canopy.tscn b/maps/canopy.tscn index 55cc6f2..bbb9863 100644 --- a/maps/canopy.tscn +++ b/maps/canopy.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=24 format=2] +[gd_scene load_steps=35 format=2] [ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=1] [ext_resource path="res://maps/map.gd" type="Script" id=2] @@ -10,7 +10,7 @@ [ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=8] [ext_resource path="res://objects/enemy/spider.tscn" type="PackedScene" id=9] [ext_resource path="res://objects/enemy/jumping_spider.tscn" type="PackedScene" id=10] -[ext_resource path="res://objects/collectibles/gold.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=11] [ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=12] [ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=13] [ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=14] @@ -18,51 +18,96 @@ [ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=16] [ext_resource path="res://objects/environment/rock/rock.tscn" type="PackedScene" id=17] [ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=18] -[ext_resource path="res://objects/environment/death tile/death_tile.tscn" type="PackedScene" id=19] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=19] [ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=20] [ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=21] -[ext_resource path="res://audio/music/dusk_park.mp3" type="AudioStream" id=22] +[ext_resource path="res://audio/music/dusk_park.ogg" type="AudioStream" id=22] +[ext_resource path="res://objects/lore/canopy/skelarcher.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/lore/canopy/chipit.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/lore/canopy/sabrespighter.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/lore/canopy/shady_canopy.tscn" type="PackedScene" id=26] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=27] +[ext_resource path="res://scripts/has_splash.gd" type="Script" id=28] +[ext_resource path="res://maps/bug_teleporter.gd" type="Script" id=29] +[ext_resource path="res://graphics/turniwood/turning_platform_wood.png" type="Texture" id=30] + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 7.5, 20 ) + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 224, 36 ) + +[sub_resource type="RectangleShape2D" id=4] +extents = Vector2( 18, 108 ) [sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 4, 128 ) +extents = Vector2( 32, 108 ) -[node name="Map" type="Node2D" groups=["map"]] +[node name="Map2" type="Node2D" groups=["map"]] pause_mode = 1 script = ExtResource( 2 ) target_time_any = 80 target_time_100 = 180 music = ExtResource( 22 ) +lore_entries = [ ExtResource( 23 ), ExtResource( 24 ), ExtResource( 25 ), ExtResource( 26 ) ] [node name="Camera2D" parent="." instance=ExtResource( 1 )] [node name="Sprite" type="Sprite" parent="Camera2D"] position = Vector2( 128, 96 ) -z_index = -2 +z_index = -260 texture = ExtResource( 3 ) __meta__ = { "_edit_lock_": true } -[node name="Ground" type="TileMap" parent="."] +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 27 ) tile_set = ExtResource( 4 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( 9, 0, 65537, 65545, 0, 1, 131081, 0, 1, 196617, -1610612736, 65538, 262161, 0, 65536, 262162, 0, 65537, 262163, 0, 65537, 262164, 0, 65537, 262165, 0, 65537, 262166, 0, 65537, 262167, 0, 65537, 262168, 0, 65537, 262169, 0, 65537, 262170, 0, 65537, 262171, 0, 65537, 262172, 0, 65537, 262173, 0, 65537, 262174, 0, 65537, 262175, 0, 65537, 262176, 0, 65537, 262177, 0, 65538, 262189, 0, 65536, 262190, 0, 65537, 262191, 0, 65537, 262192, 0, 65537, 262193, 0, 65537, 262194, 0, 65537, 262195, 0, 65537, 262196, 0, 65537, 262197, 0, 65538, 393216, 0, 65537, 393217, 0, 65537, 393218, 0, 65537, 393219, 0, 65537, 393220, 0, 65537, 393221, 0, 65537, 393222, 0, 65538, 393254, 0, 65536, 393255, 0, 65537, 393256, 0, 65537, 393257, 0, 65537, 393258, 0, 65538, 393306, -1610612736, 2, 393307, 0, 65537, 393308, 0, 65537, 393309, 0, 65537, 393310, 0, 65537, 393311, 0, 65538, 458774, 0, 65536, 458775, 0, 65537, 458776, 0, 65537, 458777, 0, 65537, 458778, 0, 65537, 458779, 0, 65537, 458780, 0, 65537, 458781, 0, 65537, 458782, 0, 65537, 458783, 0, 65537, 458784, 0, 65537, 458785, 0, 65538, 458842, 0, 1, 524297, 0, 65536, 524298, 0, 65537, 524299, 0, 65537, 524300, 1610612736, 2, 524361, -1610612736, 2, 524362, 0, 65537, 524363, 0, 65537, 524364, 0, 65537, 524365, 0, 65537, 524366, 0, 65537, 524367, 0, 65537, 524368, 0, 65537, 524369, 1610612736, 3, 524378, 0, 1, 589836, 0, 1, 589870, -1610612736, 2, 589871, 0, 65537, 589872, 0, 65537, 589873, 0, 65537, 589874, 0, 65537, 589875, 0, 65537, 589876, 0, 65537, 589877, 0, 65537, 589878, 0, 65537, 589879, 0, 65537, 589880, 0, 65537, 589881, 0, 65538, 589889, -1610612736, 2, 589890, 0, 65537, 589891, 1610612736, 3, 589897, 0, 1, 589905, 0, 3, 589906, 0, 65537, 589907, 1610612736, 2, 589914, 0, 1, 655372, 0, 3, 655373, 0, 65537, 655374, 0, 65538, 655406, 0, 1, 655423, -1610612736, 2, 655424, 0, 65537, 655425, 536870912, 3, 655427, 0, 2, 655428, 0, 65537, 655429, 0, 65537, 655430, 0, 65537, 655431, 0, 65537, 655432, 0, 65537, 655433, 536870912, 3, 655443, 0, 1, 655450, 0, 1, 720942, 0, 1, 720958, -1610612736, 2, 720959, 536870912, 3, 720979, 0, 3, 720980, 0, 65537, 720981, 1610612736, 3, 720986, 0, 1, 786433, 0, 65537, 786434, 0, 65537, 786435, 0, 65537, 786436, 0, 65538, 786450, 0, 65536, 786451, 0, 65537, 786452, 0, 65537, 786453, 0, 65537, 786454, 0, 65537, 786455, 0, 65537, 786456, 0, 65537, 786457, 0, 65537, 786458, 0, 65537, 786459, 0, 65537, 786460, 0, 65537, 786461, 0, 65537, 786462, 0, 65537, 786463, 0, 65537, 786464, 0, 65537, 786465, 0, 65537, 786466, 0, 65537, 786467, 0, 65537, 786468, 0, 65537, 786469, 0, 65537, 786470, 0, 65537, 786471, 0, 65537, 786472, 0, 65537, 786473, 0, 65537, 786474, 0, 65537, 786475, 0, 65537, 786476, 0, 65537, 786477, 0, 65537, 786478, 536870912, 2, 786480, 0, 65536, 786481, 0, 65537, 786482, 0, 65537, 786483, 0, 65537, 786484, 0, 65537, 786485, 0, 65537, 786486, 0, 65537, 786487, 0, 65537, 786488, 0, 65537, 786489, 0, 65537, 786490, 0, 65538, 786493, 0, 65536, 786494, 536870912, 3, 786517, 536870912, 1, 786522, 0, 1, 852053, 536870912, 1, 852058, 0, 1, 917585, 1073741824, 3, 917586, 0, 65537, 917587, 0, 65538, 917589, -1073741824, 65536, 917593, 0, 65536, 917594, 536870912, 3, 983065, -1610612736, 2, 983066, 0, 65537, 983067, 0, 65537, 983068, 0, 65538, 983107, -1610612736, 2, 983108, 0, 65537, 983109, 0, 65537, 983110, 0, 65537, 983111, 0, 65537, 983112, 0, 65537, 983113, 0, 65537, 983114, 0, 65537, 983115, 0, 65537, 983116, 0, 65537, 983117, 0, 65537, 983118, 0, 65537, 983119, 0, 65537, 983120, 0, 65537, 983121, 536870912, 3, 1048586, -1610612736, 65536, 1048601, 536870912, 1, 1048606, -1610612736, 2, 1048607, 0, 65537, 1048608, 0, 65537, 1048609, 0, 65537, 1048610, 0, 65537, 1048611, 0, 65537, 1048612, 0, 65537, 1048613, 0, 65538, 1048635, 0, 65536, 1048636, 0, 65537, 1048637, 0, 65537, 1048638, 0, 65537, 1048639, 0, 65537, 1048640, 0, 65537, 1048641, 0, 65537, 1048642, 0, 65537, 1048643, 536870912, 3, 1114112, 0, 65537, 1114113, 0, 65537, 1114114, 0, 65537, 1114115, 0, 65537, 1114116, 0, 65537, 1114117, 0, 65537, 1114118, 0, 65537, 1114119, 0, 65537, 1114120, 0, 65537, 1114121, 0, 65537, 1114122, 536870912, 2, 1114137, 536870912, 1, 1114142, 0, 1, 1179662, 0, 65536, 1179663, 0, 65537, 1179664, 0, 65537, 1179665, 0, 65537, 1179666, 0, 65537, 1179667, 0, 65537, 1179668, 0, 65537, 1179672, 0, 65536, 1179673, 536870912, 3, 1179678, 0, 1, 1179692, 0, 65536, 1179693, 0, 65537, 1179694, 0, 65537, 1179695, 0, 65538, 1179701, 0, 65536, 1179702, 1610612736, 3, 1179717, -1610612736, 2, 1179718, 0, 65537, 1179719, 0, 65537, 1179720, 0, 65537, 1179721, 0, 65537, 1179722, 0, 65537, 1179723, 0, 65537, 1179724, 0, 65537, 1179725, 0, 65537, 1179726, 0, 65537, 1179727, 0, 65537, 1179728, 0, 65537, 1179729, 0, 65537, 1179730, 0, 65537, 1179731, 1610612736, 2, 1245214, 0, 1, 1245238, 0, 2, 1245239, 0, 65537, 1245240, 0, 65538, 1245243, 0, 65536, 1245244, 0, 65537, 1245245, 0, 65537, 1245246, 0, 65537, 1245247, 0, 65537, 1245248, 0, 65537, 1245249, 0, 65537, 1245250, 0, 65537, 1245251, 0, 65537, 1245252, 0, 65537, 1245253, 536870912, 3, 1245267, 0, 1, 1310750, 0, 1, 1310803, 0, 1, 1376286, -1610612736, 65538, 1376339, -1610612736, 65538, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441836, 0, 0, 1441837, 0, 0, 1441838, 0, 0, 1441839, 0, 0, 1441840, 0, 0, 1441841, 0, 0, 1441842, 0, 0, 1441843, 0, 0, 1441844, 0, 0, 1441845, 0, 0, 1441846, 0, 0, 1441847, 0, 0, 1441848, 0, 0, 1441849, 0, 0, 1441850, 0, 0, 1441851, 0, 0, 1441852, 0, 0, 1441853, 0, 0, 1441854, 0, 0, 1441855, 0, 0, 1441856, 0, 0, 1441857, 0, 0, 1441858, 0, 0, 1441859, 0, 0, 1441860, 0, 0, 1441861, 0, 0, 1441862, 0, 0, 1441863, 0, 0, 1441867, 0, 0, 1441868, 0, 0, 1441872, 0, 0, 1441873, 0, 0, 1441874, 0, 0, 1441875, 0, 0, 1441876, 0, 0, 1441877, 0, 0, 1441878, 0, 0, 1441879, 0, 0, 1441880, 0, 0, 1441881, 0, 0, 1441882, 0, 0, 1507328, 0, 65537, 1507329, 0, 65537, 1507330, 0, 65537, 1507331, 0, 65537, 1507332, 0, 65537, 1507333, 0, 65537, 1507334, 0, 65537, 1507335, 0, 65537, 1507336, 0, 65537, 1507337, 0, 65537, 1507338, 0, 65537, 1507339, 0, 65537, 1507340, 0, 65537, 1507341, 0, 65537, 1507342, 0, 65537, 1507343, 0, 65537, 1507344, 0, 65537, 1507345, 0, 65537, 1507346, 0, 65537, 1507347, 0, 65537, 1507348, 0, 65537, 1507349, 0, 65537, 1507350, 0, 65537, 1507351, 0, 65537, 1507352, 0, 65537, 1507353, 0, 65537, 1507354, 0, 65537, 1507355, 0, 65537, 1507356, 0, 65537, 1507357, 0, 65537, 1507358, 0, 65537, 1507359, 0, 65537, 1507372, 0, 65537, 1507373, 0, 65537, 1507374, 0, 65537, 1507375, 0, 65537, 1507376, 0, 65537, 1507377, 0, 65537, 1507378, 0, 65537, 1507379, 0, 65537, 1507380, 0, 65537, 1507381, 0, 65537, 1507382, 0, 65537, 1507383, 0, 65537, 1507384, 0, 65537, 1507385, 0, 65537, 1507386, 0, 65537, 1507387, 0, 65537, 1507388, 0, 65537, 1507389, 0, 65537, 1507390, 0, 65537, 1507391, 0, 65537, 1507392, 0, 65537, 1507393, 0, 65537, 1507394, 0, 65537, 1507395, 0, 65537, 1507396, 0, 65537, 1507397, 0, 65537, 1507398, 0, 65537, 1507399, 0, 65537, 1507403, 0, 65537, 1507404, 0, 65537, 1507408, 0, 65537, 1507409, 0, 65537, 1507410, 0, 65537, 1507411, 0, 65537, 1507412, 0, 65537, 1507413, 0, 65537, 1507414, 0, 65537, 1507415, 0, 65537, 1507416, 0, 65537, 1507417, 0, 65537, 1507418, 0, 65537 ) +tile_data = PoolIntArray( 9, 0, 65537, 65545, 2, 0, 131081, 2, 65536, 196617, 2, 131072, 196629, 1, 0, 196633, 1, 0, 196655, 1, 0, 196659, 1, 0, 262161, 2, 196609, 262162, 2, 196610, 262163, 2, 196610, 262164, 2, 196610, 262165, 2, 196610, 262166, 2, 196610, 262167, 2, 196610, 262168, 2, 196610, 262169, 2, 196610, 262170, 2, 196610, 262171, 2, 196610, 262172, 2, 196610, 262173, 2, 196610, 262174, 2, 196610, 262175, 2, 196610, 262176, 2, 196610, 262177, 2, 196611, 262189, 2, 196609, 262190, 2, 196610, 262191, 2, 196610, 262192, 2, 196610, 262193, 2, 196610, 262194, 2, 196610, 262195, 2, 196610, 262196, 2, 196610, 262197, 2, 196611, 458751, 2, 196609, 393216, 2, 196610, 393217, 2, 196610, 393218, 2, 196610, 393219, 2, 196610, 393220, 2, 196610, 393221, 2, 196610, 393222, 2, 196611, 393306, 2, 1, 393307, 2, 196610, 393308, 2, 196610, 393309, 2, 196610, 393310, 2, 196610, 393311, 2, 196610, 458763, 1, 0, 458773, 2, 196609, 458774, 2, 196610, 458775, 2, 3, 458782, 2, 196609, 458783, 2, 196610, 458784, 2, 196610, 458785, 2, 196610, 458786, 2, 196611, 458790, 2, 196609, 458791, 2, 196610, 458792, 2, 196610, 458793, 2, 196610, 458794, 2, 196610, 458795, 2, 196611, 458825, 1, 0, 458832, 1, 0, 458842, 2, 65536, 524297, 2, 196609, 524298, 2, 196610, 524299, 2, 196610, 524300, 2, 3, 524311, 2, 131073, 524312, 2, 196611, 524335, 1, 0, 524341, 1, 0, 524361, 2, 1, 524362, 2, 196610, 524363, 2, 196610, 524364, 2, 196610, 524365, 2, 196610, 524366, 2, 196610, 524367, 2, 196610, 524368, 2, 196610, 524369, 2, 3, 524378, 2, 65536, 589836, 2, 131073, 589837, 2, 196610, 589838, 2, 196611, 589870, 2, 1, 589871, 2, 196610, 589872, 2, 196610, 589873, 2, 196610, 589874, 2, 196610, 589875, 2, 196610, 589876, 2, 196610, 589877, 2, 196610, 589878, 2, 196610, 589879, 2, 196610, 589880, 2, 196610, 589881, 2, 196611, 589889, 2, 1, 589890, 2, 196610, 589891, 2, 3, 589894, 1, 0, 589897, 2, 65536, 589905, 2, 131073, 589906, 2, 196610, 589907, 2, 3, 589914, 2, 65536, 655406, 2, 65536, 655423, 2, 1, 655424, 2, 196610, 655425, 2, 131075, 655427, 2, 131073, 655428, 2, 196610, 655429, 2, 196610, 655430, 2, 196610, 655431, 2, 196610, 655432, 2, 196610, 655433, 2, 131075, 655443, 2, 65536, 655450, 2, 65536, 720917, 1, 0, 720922, 1, 0, 720932, 1, 0, 720937, 1, 0, 720942, 2, 65536, 720950, 1, 0, 720958, 2, 1, 720959, 2, 131075, 720979, 2, 131073, 720980, 2, 196610, 720981, 2, 3, 720986, 2, 65536, 786433, 2, 196609, 786434, 2, 196610, 786435, 2, 196610, 786436, 2, 196611, 786448, 2, 1, 786449, 2, 196610, 786450, 2, 196610, 786451, 2, 196610, 786452, 2, 196610, 786453, 2, 196610, 786454, 2, 196610, 786455, 2, 196610, 786456, 2, 196610, 786457, 2, 196610, 786458, 2, 196610, 786459, 2, 196610, 786460, 2, 196610, 786461, 2, 196610, 786462, 2, 196610, 786463, 2, 196610, 786464, 2, 196610, 786465, 2, 196610, 786466, 2, 196610, 786467, 2, 196610, 786468, 2, 196610, 786469, 2, 196610, 786470, 2, 196610, 786471, 2, 196610, 786472, 2, 196610, 786473, 2, 196610, 786474, 2, 196610, 786475, 2, 196611, 786477, 2, 196609, 786478, 2, 131075, 786480, 2, 196609, 786481, 2, 196610, 786482, 2, 196610, 786483, 2, 196610, 786484, 2, 196610, 786485, 2, 196610, 786486, 2, 196610, 786487, 2, 196610, 786488, 2, 196610, 786489, 2, 196610, 786490, 2, 196611, 786493, 2, 196609, 786494, 2, 131075, 786517, 2, 65536, 786522, 2, 65536, 851983, 2, 196609, 851984, 2, 131075, 852053, 2, 65536, 852058, 2, 65536, 917579, 1, 0, 917585, 2, 1, 917586, 2, 196610, 917587, 2, 196611, 917589, 2, 131072, 917593, 2, 196609, 917594, 2, 131075, 983065, 2, 1, 983066, 2, 196610, 983067, 2, 196610, 983068, 2, 196611, 983105, 1, 0, 983107, 2, 1, 983108, 2, 196610, 983109, 2, 196610, 983110, 2, 196610, 983111, 2, 196610, 983112, 2, 196610, 983113, 2, 196610, 983114, 2, 196610, 983115, 2, 196610, 983116, 2, 196610, 983117, 2, 196610, 983118, 2, 196610, 983119, 2, 196610, 983120, 2, 196610, 983121, 2, 131075, 1048586, 2, 0, 1048601, 2, 65536, 1048606, 2, 1, 1048607, 2, 196610, 1048608, 2, 196610, 1048609, 2, 196610, 1048610, 2, 196610, 1048611, 2, 196610, 1048612, 2, 196610, 1048613, 2, 196611, 1048635, 2, 196609, 1048636, 2, 196610, 1048637, 2, 196610, 1048638, 2, 196610, 1048639, 2, 196610, 1048640, 2, 196610, 1048641, 2, 196610, 1048642, 2, 196610, 1048643, 2, 131075, 1179647, 2, 196609, 1114112, 2, 196610, 1114113, 2, 196610, 1114114, 2, 196610, 1114115, 2, 196610, 1114116, 2, 196610, 1114117, 2, 196610, 1114118, 2, 196610, 1114119, 2, 196610, 1114120, 2, 196610, 1114121, 2, 2, 1114122, 2, 131075, 1114137, 2, 65536, 1114142, 2, 65536, 1179662, 2, 196609, 1179663, 2, 196610, 1179664, 2, 196610, 1179665, 2, 196610, 1179666, 2, 196610, 1179667, 2, 196610, 1179668, 2, 196611, 1179672, 2, 196609, 1179673, 2, 131075, 1179678, 2, 65536, 1179692, 2, 196609, 1179693, 2, 196610, 1179694, 2, 196610, 1179695, 2, 196611, 1179701, 2, 196609, 1179702, 2, 3, 1179717, 2, 1, 1179718, 2, 196610, 1179719, 2, 196610, 1179720, 2, 196610, 1179721, 2, 196610, 1179722, 2, 196610, 1179723, 2, 196610, 1179724, 2, 196610, 1179725, 2, 196610, 1179726, 2, 196610, 1179727, 2, 196610, 1179728, 2, 196610, 1179729, 2, 196610, 1179730, 2, 196610, 1179731, 2, 3, 1245214, 2, 65536, 1245238, 2, 131073, 1245239, 2, 196610, 1245240, 2, 196611, 1245243, 2, 196609, 1245244, 2, 196610, 1245245, 2, 196610, 1245246, 2, 196610, 1245247, 2, 196610, 1245248, 2, 196610, 1245249, 2, 196610, 1245250, 2, 196610, 1245251, 2, 196610, 1245252, 2, 196610, 1245253, 2, 131075, 1245267, 2, 65536, 1310750, 2, 65536, 1310803, 2, 65536, 1376257, 1, 0, 1376261, 1, 0, 1376265, 1, 0, 1376269, 1, 0, 1376280, 1, 0, 1376284, 1, 0, 1376286, 2, 65537, 1376301, 1, 0, 1376305, 1, 0, 1376309, 1, 0, 1376313, 1, 0, 1376317, 1, 0, 1376321, 1, 0, 1376325, 1, 0, 1376339, 2, 65537, 1376341, 1, 0, 1376345, 1, 0, 1507327, 3, 0, 1441792, 3, 1, 1441793, 3, 1, 1441794, 3, 1, 1441795, 3, 1, 1441796, 3, 1, 1441797, 3, 1, 1441798, 3, 1, 1441799, 3, 1, 1441800, 3, 1, 1441801, 3, 1, 1441802, 3, 1, 1441803, 3, 1, 1441804, 3, 1, 1441805, 3, 1, 1441806, 3, 1, 1441807, 3, 1, 1441808, 3, 1, 1441809, 3, 1, 1441810, 3, 1, 1441811, 3, 1, 1441812, 3, 1, 1441813, 3, 1, 1441814, 3, 1, 1441815, 3, 1, 1441816, 3, 1, 1441817, 3, 1, 1441818, 3, 1, 1441819, 3, 1, 1441820, 3, 1, 1441821, 3, 1, 1441822, 3, 1, 1441823, 3, 1, 1441836, 3, 0, 1441837, 3, 1, 1441838, 3, 1, 1441839, 3, 1, 1441840, 3, 1, 1441841, 3, 1, 1441842, 3, 1, 1441843, 3, 1, 1441844, 3, 1, 1441845, 3, 1, 1441846, 3, 1, 1441847, 3, 1, 1441848, 3, 1, 1441849, 3, 1, 1441850, 3, 1, 1441851, 3, 1, 1441852, 3, 1, 1441853, 3, 1, 1441854, 3, 1, 1441855, 3, 1, 1441856, 3, 1, 1441857, 3, 1, 1441858, 3, 1, 1441859, 3, 1, 1441860, 3, 1, 1441861, 3, 1, 1441862, 3, 1, 1441863, 3, 2, 1441867, 3, 0, 1441868, 3, 2, 1441872, 3, 0, 1441873, 3, 1, 1441874, 3, 1, 1441875, 3, 1, 1441876, 3, 1, 1441877, 3, 1, 1441878, 3, 1, 1441879, 3, 1, 1441880, 3, 1, 1441881, 3, 1, 1441882, 3, 2, 1572863, 3, 65536, 1507328, 3, 65537, 1507329, 3, 65537, 1507330, 3, 65537, 1507331, 3, 65537, 1507332, 3, 65537, 1507333, 3, 65537, 1507334, 3, 65537, 1507335, 3, 65537, 1507336, 3, 65537, 1507337, 3, 65537, 1507338, 3, 65537, 1507339, 3, 65537, 1507340, 3, 65537, 1507341, 3, 65537, 1507342, 3, 65537, 1507343, 3, 65537, 1507344, 3, 65537, 1507345, 3, 65537, 1507346, 3, 65537, 1507347, 3, 65537, 1507348, 3, 65537, 1507349, 3, 65537, 1507350, 3, 65537, 1507351, 3, 65537, 1507352, 3, 65537, 1507353, 3, 65537, 1507354, 3, 65537, 1507355, 3, 65537, 1507356, 3, 65537, 1507357, 3, 65537, 1507358, 3, 65537, 1507359, 3, 65537, 1507372, 3, 65536, 1507373, 3, 65537, 1507374, 3, 65537, 1507375, 3, 65537, 1507376, 3, 65537, 1507377, 3, 65537, 1507378, 3, 65537, 1507379, 3, 65537, 1507380, 3, 65537, 1507381, 3, 65537, 1507382, 3, 65537, 1507383, 3, 65537, 1507384, 3, 65537, 1507385, 3, 65537, 1507386, 3, 65537, 1507387, 3, 65537, 1507388, 3, 65537, 1507389, 3, 65537, 1507390, 3, 65537, 1507391, 3, 65537, 1507392, 3, 65537, 1507393, 3, 65537, 1507394, 3, 65537, 1507395, 3, 65537, 1507396, 3, 65537, 1507397, 3, 65537, 1507398, 3, 65537, 1507399, 3, 65538, 1507403, 3, 65536, 1507404, 3, 65538, 1507408, 3, 65536, 1507409, 3, 65537, 1507410, 3, 65537, 1507411, 3, 65537, 1507412, 3, 65537, 1507413, 3, 65537, 1507414, 3, 65537, 1507415, 3, 65537, 1507416, 3, 65537, 1507417, 3, 65537, 1507418, 3, 65538 ) [node name="Player" parent="." instance=ExtResource( 6 )] -position = Vector2( 24, 166 ) +position = Vector2( 24, 176 ) + +[node name="StaticBody2D2" type="StaticBody2D" parent="."] +position = Vector2( 752, 8 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D2"] +position = Vector2( 8.5, 20 ) +shape = SubResource( 2 ) + +[node name="Area2D" type="Area2D" parent="."] +position = Vector2( 832, 224 ) +script = ExtResource( 29 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +position = Vector2( 224, 36 ) +shape = SubResource( 3 ) [node name="Ladder" type="TileMap" parent="."] -tile_set = ExtResource( 4 ) +tile_set = ExtResource( 19 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( 393303, 0, 196608, 458839, 0, 196608, 524375, 0, 196608, 589911, 0, 196608, 655367, 0, 196608, 655447, 0, 196608, 720903, 0, 196608, 720983, 0, 196608, 786519, 0, 196608, 852055, 0, 196608, 917516, 0, 196608, 917591, 0, 196608, 983052, 0, 196608, 983127, 0, 196608, 1048588, 0, 196608, 1048663, 0, 196608, 1114199, 0, 196608, 1179735, 0, 196608, 1245271, 0, 196608 ) +tile_data = PoolIntArray( 393303, 0, 1, 458839, 0, 1, 524375, 0, 1, 589911, 0, 1, 655367, 0, 1, 655447, 0, 1, 720903, 0, 1, 720983, 0, 1, 786519, 0, 1, 852055, 0, 1, 917516, 0, 1, 917591, 0, 1, 983052, 0, 1, 983127, 0, 1, 1048588, 0, 1, 1048663, 0, 1, 1114199, 0, 1, 1179735, 0, 1, 1245271, 0, 1 ) -[node name="Death" type="TileMap" parent="."] +[node name="Death" type="TileMap" parent="." groups=["death", "no_blood"]] +tile_set = ExtResource( 18 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1441824, 0, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 0, 0, 1441831, 0, 0, 1441832, 0, 0, 1441833, 0, 0, 1441834, 0, 0, 1441835, 0, 0, 1441864, 0, 0, 1441865, 0, 0, 1441866, 0, 0, 1441869, 0, 0, 1441870, 0, 0, 1441871, 0, 0, 1441883, 0, 0, 1441884, 0, 0, 1441885, 0, 0, 1441886, 0, 0, 1441887, 0, 0, 1507360, 3, 0, 1507361, 3, 0, 1507362, 3, 0, 1507363, 3, 0, 1507364, 3, 0, 1507365, 3, 0, 1507366, 3, 0, 1507367, 3, 0, 1507368, 3, 0, 1507369, 3, 0, 1507370, 3, 0, 1507371, 3, 0, 1507400, 3, 0, 1507401, 3, 0, 1507402, 3, 0, 1507405, 3, 0, 1507406, 3, 0, 1507407, 3, 0, 1507419, 3, 0, 1507420, 3, 0, 1507421, 3, 0, 1507422, 3, 0, 1507423, 3, 0 ) +script = ExtResource( 28 ) +splash_color = Color( 0.227451, 0.627451, 1, 1 ) + +[node name="DeathBackground" type="TileMap" parent="Death"] +z_index = -11 tile_set = ExtResource( 18 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( 589892, 1, 0, 589893, 1, 0, 589894, 1, 0, 589895, 1, 0, 589896, 1, 0, 720916, 1, 0, 720932, 1, 0, 720938, 1, 0, 720939, 1, 0, 720940, 1, 0, 1441824, 0, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 0, 0, 1441831, 0, 0, 1441832, 0, 0, 1441833, 0, 0, 1441834, 0, 0, 1441835, 0, 0, 1441864, 0, 0, 1441865, 0, 0, 1441866, 0, 0, 1441869, 0, 0, 1441870, 0, 0, 1441871, 0, 0, 1441883, 0, 0, 1441884, 0, 0, 1441885, 0, 0, 1441886, 0, 0, 1441887, 0, 0, 1507360, 3, 0, 1507361, 3, 0, 1507362, 3, 0, 1507363, 3, 0, 1507364, 3, 0, 1507365, 3, 0, 1507366, 3, 0, 1507367, 3, 0, 1507368, 3, 0, 1507369, 3, 0, 1507370, 3, 0, 1507371, 3, 0, 1507400, 3, 0, 1507401, 3, 0, 1507402, 3, 0, 1507405, 3, 0, 1507406, 3, 0, 1507407, 3, 0, 1507419, 3, 0, 1507420, 3, 0, 1507421, 3, 0, 1507422, 3, 0, 1507423, 3, 0 ) +tile_data = PoolIntArray( 1441836, 0, 0, 1441863, 0, 0, 1441867, 0, 0, 1441868, 0, 0, 1441872, 0, 0, 1441882, 0, 0, 1507372, 3, 0, 1507399, 3, 0, 1507403, 3, 0, 1507404, 3, 0, 1507408, 3, 0, 1507418, 3, 0 ) [node name="Platforms" type="Node2D" parent="."] @@ -80,100 +125,140 @@ scale = Vector2( 1, 14 ) [node name="Turniwood" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 0, 96 ) +texture = ExtResource( 30 ) [node name="Turniwood2" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 72, 104 ) +texture = ExtResource( 30 ) + +[node name="Turniwood30" parent="Platforms" instance=ExtResource( 13 )] +position = Vector2( 216, 72 ) +time = 20.0 +texture = ExtResource( 30 ) [node name="Turniwood5" parent="Platforms" instance=ExtResource( 13 )] -position = Vector2( 344, 80 ) +position = Vector2( 352, 80 ) +texture = ExtResource( 30 ) [node name="Turniwood12" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 464, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood24" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 456, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood25" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 448, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood13" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 472, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood14" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 480, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood15" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 488, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood16" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 496, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood17" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 504, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood20" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 736, 160 ) +texture = ExtResource( 30 ) [node name="Turniwood21" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 752, 144 ) delay = 0.5 +texture = ExtResource( 30 ) [node name="Turniwood22" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 736, 128 ) delay = 1.0 +texture = ExtResource( 30 ) [node name="Turniwood23" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 752, 120 ) delay = 1.5 +texture = ExtResource( 30 ) [node name="Turniwood26" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 736, 104 ) delay = 2.0 +texture = ExtResource( 30 ) [node name="Turniwood27" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 752, 88 ) delay = 2.5 +texture = ExtResource( 30 ) [node name="Turniwood10" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 448, 128 ) +texture = ExtResource( 30 ) [node name="Turniwood6" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 560, 64 ) +texture = ExtResource( 30 ) [node name="Turniwood3" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 96, 160 ) +texture = ExtResource( 30 ) + +[node name="Turniwood28" parent="Platforms" instance=ExtResource( 13 )] +position = Vector2( 176, 152 ) +texture = ExtResource( 30 ) [node name="Turniwood9" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 120, 48 ) +texture = ExtResource( 30 ) [node name="Turniwood4" parent="Platforms" instance=ExtResource( 13 )] -position = Vector2( 128, 104 ) +position = Vector2( 136, 80 ) +texture = ExtResource( 30 ) [node name="Turniwood11" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 336, 136 ) +texture = ExtResource( 30 ) [node name="Turniwood19" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 400, 144 ) +texture = ExtResource( 30 ) + +[node name="Turniwood29" parent="Platforms" instance=ExtResource( 13 )] +position = Vector2( 328, 40 ) +texture = ExtResource( 30 ) [node name="Turniwood18" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 312, 136 ) delay = 1.0 +texture = ExtResource( 30 ) [node name="Turniwood7" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 456, 152 ) time = 90.0 +texture = ExtResource( 30 ) [node name="Turniwood8" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 464, 152 ) time = 90.0 +texture = ExtResource( 30 ) [node name="Barrier" parent="Platforms" instance=ExtResource( 15 )] position = Vector2( 164, 152 ) @@ -193,27 +278,15 @@ cost = 30 [node name="Rock" parent="Platforms" instance=ExtResource( 17 )] position = Vector2( 200, 112 ) -[node name="Enemies" type="Node2D" parent="."] +[node name="Rock2" parent="Platforms" instance=ExtResource( 17 )] +position = Vector2( 232, 88 ) -[node name="JumpingSpider" parent="Enemies" instance=ExtResource( 10 )] -position = Vector2( 56, 168 ) -left_boundary = 2 -right_boundary = 4 +[node name="Enemies" type="Node2D" parent="."] [node name="JumpingSpider5" parent="Enemies" instance=ExtResource( 10 )] position = Vector2( 16, 40 ) left_boundary = 2 -right_boundary = 3 - -[node name="JumpingSpider4" parent="Enemies" instance=ExtResource( 10 )] -position = Vector2( 208, 88 ) -left_boundary = 2 -right_boundary = 3 - -[node name="JumpingSpider7" parent="Enemies" instance=ExtResource( 10 )] -position = Vector2( 216, 48 ) -left_boundary = 2 -right_boundary = 3 +right_boundary = 4 [node name="JumpingSpider8" parent="Enemies" instance=ExtResource( 10 )] position = Vector2( 392, 24 ) @@ -223,50 +296,37 @@ right_boundary = 4 [node name="Skelarcher" parent="Enemies" instance=ExtResource( 5 )] position = Vector2( 200, 136 ) scale = Vector2( -1, 1 ) -shoot_time = 2.0 -arrow_speed = 80.0 [node name="Skelarcher10" parent="Enemies" instance=ExtResource( 5 )] position = Vector2( 456, 64 ) scale = Vector2( -1, 1 ) -arrow_speed = 80.0 +shoot_time = 3.0 [node name="Skelarcher8" parent="Enemies" instance=ExtResource( 5 )] position = Vector2( 240, 24 ) scale = Vector2( -1, 1 ) -arrow_speed = 100.0 - -[node name="Skelarcher6" parent="Enemies" instance=ExtResource( 5 )] -position = Vector2( 96, 56 ) -scale = Vector2( -1, 1 ) -shoot_time = 2.0 -arrow_speed = 80.0 +shoot_time = 3.0 [node name="Skelarcher4" parent="Enemies" instance=ExtResource( 5 )] position = Vector2( 616, 56 ) scale = Vector2( -1, 1 ) -shoot_time = 2.0 -arrow_speed = 80.0 +shoot_time = 3.0 [node name="Skelarcher7" parent="Enemies" instance=ExtResource( 5 )] position = Vector2( 648, 112 ) scale = Vector2( -1, 1 ) -shoot_time = 2.0 -arrow_speed = 80.0 +shoot_time = 3.0 [node name="Skelarcher5" parent="Enemies" instance=ExtResource( 5 )] position = Vector2( 384, 88 ) -arrow_speed = 80.0 +shoot_time = 4.0 -[node name="Skelarcher11" parent="Enemies" instance=ExtResource( 5 )] +[node name="Telstar" parent="Enemies" instance=ExtResource( 5 )] position = Vector2( 352, 136 ) shoot_time = 6.0 -arrow_speed = 80.0 [node name="Skelarcher2" parent="Enemies" instance=ExtResource( 5 )] position = Vector2( 16, 128 ) -shoot_time = 1.0 -arrow_speed = 80.0 [node name="JumpingSpider2" parent="Enemies" instance=ExtResource( 10 )] position = Vector2( 144, 168 ) @@ -279,14 +339,19 @@ speed = 50.0 down_boundary = 5 [node name="Spider2" parent="Enemies" instance=ExtResource( 9 )] -position = Vector2( 184, 64 ) -down_boundary = 3 +position = Vector2( 216, 40 ) +speed = 20.0 +down_boundary = 6 [node name="Spider7" parent="Enemies" instance=ExtResource( 9 )] position = Vector2( 16, 56 ) speed = 50.0 down_boundary = 4 +[node name="Spider12" parent="Enemies" instance=ExtResource( 9 )] +position = Vector2( 48, 144 ) +down_boundary = 3 + [node name="Spider3" parent="Enemies" instance=ExtResource( 9 )] position = Vector2( 536, 88 ) speed = 40.0 @@ -344,7 +409,7 @@ position = Vector2( 152, 136 ) position = Vector2( 232, 128 ) [node name="Gold11" parent="Collectibles" instance=ExtResource( 11 )] -position = Vector2( 216, 112 ) +position = Vector2( 232, 160 ) [node name="Gold10" parent="Collectibles" instance=ExtResource( 11 )] position = Vector2( 232, 144 ) @@ -359,7 +424,7 @@ position = Vector2( 32, 40 ) position = Vector2( 152, 24 ) [node name="Gold45" parent="Collectibles" instance=ExtResource( 11 )] -position = Vector2( 112, 72 ) +position = Vector2( 112, 64 ) [node name="Gold46" parent="Collectibles" instance=ExtResource( 11 )] position = Vector2( 24, 88 ) @@ -383,16 +448,16 @@ position = Vector2( 184, 24 ) position = Vector2( 216, 24 ) [node name="Gold17" parent="Collectibles" instance=ExtResource( 11 )] -position = Vector2( 208, 48 ) +position = Vector2( 192, 56 ) [node name="Gold18" parent="Collectibles" instance=ExtResource( 11 )] -position = Vector2( 232, 48 ) +position = Vector2( 240, 48 ) [node name="Gold23" parent="Collectibles" instance=ExtResource( 11 )] -position = Vector2( 184, 88 ) +position = Vector2( 96, 56 ) [node name="Gold24" parent="Collectibles" instance=ExtResource( 11 )] -position = Vector2( 320, 40 ) +position = Vector2( 344, 48 ) [node name="Gold25" parent="Collectibles" instance=ExtResource( 11 )] position = Vector2( 312, 88 ) @@ -437,7 +502,7 @@ position = Vector2( 560, 56 ) position = Vector2( 640, 136 ) [node name="Gold36" parent="Collectibles" instance=ExtResource( 11 )] -position = Vector2( 608, 136 ) +position = Vector2( 304, 48 ) [node name="Gold51" parent="Collectibles" instance=ExtResource( 11 )] position = Vector2( 632, 56 ) @@ -464,7 +529,7 @@ position = Vector2( 416, 24 ) position = Vector2( 368, 24 ) [node name="Gold44" parent="Collectibles" instance=ExtResource( 11 )] -position = Vector2( 232, 88 ) +position = Vector2( 72, 56 ) [node name="Gold22" parent="Collectibles" instance=ExtResource( 11 )] position = Vector2( 536, 112 ) @@ -495,7 +560,7 @@ position = Vector2( 0, 88 ) color = 1 [node name="Star4" parent="Collectibles" instance=ExtResource( 14 )] -position = Vector2( 184, 48 ) +position = Vector2( 168, 48 ) color = 2 [node name="Star3" parent="Collectibles" instance=ExtResource( 14 )] @@ -506,7 +571,8 @@ color = 3 position = Vector2( 496, 16 ) color = 4 -[node name="CanvasLayer" parent="." instance=ExtResource( 7 )] +[node name="HUD" parent="." instance=ExtResource( 7 )] +song_name = "♫Dusk Park" [node name="ColorRect" type="ColorRect" parent="."] margin_left = 256.0 @@ -531,46 +597,16 @@ __meta__ = { [node name="StaticBody2D" type="StaticBody2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] -position = Vector2( -4, 96 ) -shape = SubResource( 1 ) +position = Vector2( -18, 96 ) +shape = SubResource( 4 ) [node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] -position = Vector2( 772, 96 ) +position = Vector2( 800, 116 ) shape = SubResource( 1 ) [node name="Exit" parent="." instance=ExtResource( 21 )] position = Vector2( 746, 36 ) -cost = 2 - -[node name="DeathTile" parent="." instance=ExtResource( 19 )] -position = Vector2( 544, 72 ) -scale = Vector2( 5, 1 ) - -[node name="DeathTile5" parent="." instance=ExtResource( 19 )] -position = Vector2( 728, 192 ) -scale = Vector2( 5, 2 ) - -[node name="DeathTile6" parent="." instance=ExtResource( 19 )] -position = Vector2( 616, 192 ) -scale = Vector2( 3, 2 ) - -[node name="DeathTile7" parent="." instance=ExtResource( 19 )] -position = Vector2( 576, 192 ) -scale = Vector2( 3, 2 ) - -[node name="DeathTile8" parent="." instance=ExtResource( 19 )] -position = Vector2( 256, 192 ) -scale = Vector2( 12, 2 ) - -[node name="DeathTile2" parent="." instance=ExtResource( 19 )] -position = Vector2( 336, 88 ) -scale = Vector2( 3, 1 ) - -[node name="DeathTile3" parent="." instance=ExtResource( 19 )] -position = Vector2( 288, 88 ) - -[node name="DeathTile4" parent="." instance=ExtResource( 19 )] -position = Vector2( 160, 88 ) +cost = 25 [node name="Shard" parent="." instance=ExtResource( 20 )] position = Vector2( 656, 104 ) @@ -586,3 +622,5 @@ number = 1 [node name="Shard4" parent="." instance=ExtResource( 20 )] position = Vector2( 264, 120 ) + +[connection signal="area_entered" from="Area2D" to="Area2D" method="_on_Area2D_area_entered"] diff --git a/maps/cave.tscn b/maps/cave.tscn index 4086676..66b0830 100644 --- a/maps/cave.tscn +++ b/maps/cave.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=26 format=2] +[gd_scene load_steps=32 format=2] [ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=1] [ext_resource path="res://tilesets/t_cave.tres" type="TileSet" id=2] @@ -11,29 +11,36 @@ [ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=9] [ext_resource path="res://objects/enemy/bat.tscn" type="PackedScene" id=10] [ext_resource path="res://maps/map.gd" type="Script" id=11] -[ext_resource path="res://audio/music/smokestack.mp3" type="AudioStream" id=12] +[ext_resource path="res://audio/music/smokestack.ogg" type="AudioStream" id=12] [ext_resource path="res://objects/enemy/rolling_fiend.tscn" type="PackedScene" id=13] -[ext_resource path="res://objects/collectibles/gold.tscn" type="PackedScene" id=14] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=14] [ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=15] [ext_resource path="res://objects/enemy/tentacle.tscn" type="PackedScene" id=16] [ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=17] -[ext_resource path="res://objects/environment/falling_block/falling_block.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/environment/falling_block/falling_block_cave.tscn" type="PackedScene" id=18] [ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=19] [ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=20] [ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=21] -[ext_resource path="res://objects/environment/death tile/death_tile.tscn" type="PackedScene" id=22] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=22] [ext_resource path="res://objects/environment/barrier/barrier.tscn" type="PackedScene" id=23] [ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=24] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=25] +[ext_resource path="res://objects/lore/hills/catbat.tscn" type="PackedScene" id=26] +[ext_resource path="res://objects/lore/cave/shedge.tscn" type="PackedScene" id=27] +[ext_resource path="res://objects/lore/cave/the_scrumps_tongue.tscn" type="PackedScene" id=28] +[ext_resource path="res://objects/lore/cave/blue_ray_cavern.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/mountain/rolling_fiend.tscn" type="PackedScene" id=30] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 4, 96 ) -[node name="Map2" type="Node2D" groups=["map"]] +[node name="Map" type="Node2D" groups=["map"]] pause_mode = 1 script = ExtResource( 11 ) target_time_any = 80 target_time_100 = 180 music = ExtResource( 12 ) +lore_entries = [ ExtResource( 29 ), ExtResource( 27 ), ExtResource( 28 ), ExtResource( 30 ), ExtResource( 26 ) ] [node name="Camera2D" parent="." instance=ExtResource( 6 )] @@ -45,28 +52,34 @@ __meta__ = { "_edit_lock_": true } -[node name="CanvasLayer" parent="." instance=ExtResource( 4 )] +[node name="HUD" parent="." instance=ExtResource( 4 )] +song_name = "♫Smokestack" -[node name="Ground" type="TileMap" parent="."] +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 25 ) tile_set = ExtResource( 2 ) cell_size = Vector2( 8, 8 ) collision_layer = 9 format = 1 -tile_data = PoolIntArray( 36, 0, 0, 65572, 0, 0, 131108, 0, 0, 131155, 0, 65537, 131156, 0, 65537, 196644, 0, 65537, 196645, 0, 65537, 196646, 0, 65537, 196697, 0, 262145, 262153, 0, 65537, 262154, 0, 65537, 262155, 0, 65537, 262156, 0, 0, 262159, 0, 65537, 262160, 0, 65537, 262161, 0, 65537, 262162, 0, 65537, 262163, 0, 65537, 262164, 0, 65537, 262165, 0, 65537, 262216, 0, 65537, 262217, 0, 65537, 262218, 0, 65537, 262229, 0, 65537, 262230, 0, 65537, 262231, 0, 65537, 262232, 0, 65537, 262233, 0, 65537, 262234, 0, 65537, 327685, 0, 65537, 327686, 0, 65537, 327687, 0, 65537, 327692, 0, 0, 327734, 0, 262144, 327738, 0, 262145, 327748, 0, 262145, 327771, 0, 65537, 327772, 0, 65537, 327773, 0, 65537, 393228, 0, 0, 393240, 0, 262145, 393249, 0, 262145, 393258, 0, 65537, 393259, 0, 65537, 393260, 0, 65537, 393263, 0, 65537, 393264, 0, 65537, 393265, 0, 65537, 393269, 0, 65537, 393270, 0, 65537, 393271, 0, 65537, 393272, 0, 65537, 393273, 0, 65537, 393274, 0, 65537, 393275, 0, 65537, 393276, 0, 65537, 393277, 0, 65537, 393279, 0, 0, 393280, 0, 65537, 393281, 0, 65537, 393282, 0, 65537, 393283, 0, 65537, 393284, 0, 65537, 393285, 0, 65537, 393292, 0, 65537, 458763, 0, 65537, 458764, 0, 65537, 458774, 0, 65537, 458775, 0, 65537, 458776, 0, 65537, 458777, 0, 65537, 458778, 0, 65537, 458779, 0, 65537, 458782, 0, 65537, 458783, 0, 65537, 458784, 0, 65537, 458785, 0, 65537, 458786, 0, 65537, 458787, 0, 65537, 458815, 0, 0, 524351, 0, 0, 655365, 0, 262145, 720896, 0, 65537, 720897, 0, 65537, 720898, 0, 65537, 720899, 0, 65537, 720900, 0, 65537, 720901, 0, 65537, 720902, 0, 65537, 720903, 0, 65537, 720904, 0, 65537, 720919, 0, 0, 720931, 0, 262145, 720954, 0, 262144, 720972, 0, 262145, 720982, 0, 262145, 786448, 0, 262144, 786452, 0, 262145, 786455, 0, 65537, 786456, 0, 65537, 786457, 0, 65537, 786458, 0, 0, 786464, 0, 65537, 786465, 0, 65537, 786466, 0, 65537, 786467, 0, 65537, 786468, 0, 65537, 786469, 0, 65537, 786477, 0, 65537, 786478, 0, 65537, 786479, 0, 65537, 786480, 0, 65537, 786481, 0, 65537, 786485, 0, 65537, 786486, 0, 65537, 786487, 0, 65537, 786488, 0, 65537, 786489, 0, 65537, 786490, 0, 65537, 786491, 0, 65537, 786494, 0, 0, 786495, 0, 0, 786496, 0, 65537, 786497, 0, 65537, 786498, 0, 65537, 786499, 0, 65537, 786500, 0, 65537, 786501, 0, 65537, 786502, 0, 65537, 786503, 0, 65537, 786504, 0, 65537, 786505, 0, 65537, 786506, 0, 65537, 786507, 0, 65537, 786508, 0, 65537, 786509, 0, 65537, 786510, 0, 65537, 786511, 0, 65537, 786512, 0, 65537, 786513, 0, 65537, 786514, 0, 65537, 786515, 0, 65537, 786516, 0, 65537, 786517, 0, 65537, 786518, 0, 65537, 786519, 0, 65537, 786520, 0, 65537, 786521, 0, 0, 786522, 0, 196610, 786526, 0, 65537, 786527, 0, 65537, 851983, 0, 65537, 851984, 0, 65537, 851985, 0, 65537, 851986, 0, 65537, 851987, 0, 65537, 851988, 0, 65537, 851989, 0, 65537, 851994, 0, 0, 852030, 0, 0, 852031, 0, 0, 852057, 0, 0, 852058, 0, 196608, 917509, 0, 262144, 917530, 0, 0, 917566, 0, 0, 917567, 0, 0, 917593, 0, 0, 917594, 0, 196608, 983040, 0, 65537, 983043, 0, 0, 983044, 0, 65537, 983045, 0, 65537, 983046, 0, 65537, 983047, 0, 65537, 983048, 0, 65537, 983049, 0, 65537, 983050, 0, 65537, 983051, 0, 65537, 983066, 0, 0, 983084, 0, 262145, 983102, 0, 0, 983103, 0, 0, 983113, 0, 262144, 983129, 0, 0, 983130, 0, 196609, 1048579, 0, 0, 1048591, 0, 65537, 1048592, 0, 65537, 1048593, 0, 65537, 1048594, 0, 65537, 1048595, 0, 65537, 1048596, 0, 65537, 1048597, 0, 65537, 1048598, 0, 65537, 1048599, 0, 65537, 1048600, 0, 65537, 1048601, 0, 65537, 1048602, 0, 65537, 1048607, 0, 131072, 1048608, 0, 0, 1048609, 0, 0, 1048610, 0, 0, 1048611, 0, 0, 1048612, 0, 0, 1048613, 0, 131073, 1048617, 0, 131072, 1048618, 0, 0, 1048619, 0, 0, 1048620, 0, 0, 1048621, 0, 0, 1048622, 0, 0, 1048623, 0, 0, 1048624, 0, 0, 1048625, 0, 0, 1048626, 0, 0, 1048627, 0, 0, 1048628, 0, 0, 1048629, 0, 0, 1048630, 0, 0, 1048631, 0, 131073, 1048633, 0, 196610, 1048638, 0, 0, 1048639, 0, 0, 1048648, 0, 65537, 1048649, 0, 65537, 1048650, 0, 65537, 1048651, 0, 65537, 1048665, 0, 65537, 1048666, 0, 65537, 1048667, 0, 65537, 1048668, 0, 65537, 1048669, 0, 65537, 1048670, 0, 65537, 1048671, 0, 65537, 1114115, 0, 0, 1114143, 0, 0, 1114144, 0, 0, 1114145, 0, 0, 1114146, 0, 0, 1114147, 0, 0, 1114148, 0, 0, 1114149, 0, 0, 1114153, 0, 0, 1114154, 0, 0, 1114155, 0, 0, 1114156, 0, 0, 1114157, 0, 0, 1114158, 0, 0, 1114159, 0, 65537, 1114160, 0, 65537, 1114161, 0, 0, 1114162, 0, 0, 1114163, 0, 0, 1114164, 0, 65537, 1114165, 0, 65537, 1114166, 0, 0, 1114167, 0, 0, 1114168, 0, 131073, 1114169, 0, 196608, 1114174, 0, 0, 1114175, 0, 0, 1114190, 0, 65537, 1114191, 0, 65537, 1114192, 0, 65537, 1114197, 0, 65537, 1114198, 0, 0, 1179649, 0, 65537, 1179650, 0, 65537, 1179651, 0, 65537, 1179678, 0, 131072, 1179679, 0, 0, 1179680, 0, 0, 1179681, 0, 0, 1179682, 0, 0, 1179683, 0, 0, 1179684, 0, 0, 1179685, 0, 0, 1179689, 0, 0, 1179690, 0, 0, 1179691, 0, 0, 1179692, 0, 0, 1179693, 0, 0, 1179694, 0, 0, 1179697, 0, 0, 1179698, 0, 0, 1179699, 0, 0, 1179702, 0, 0, 1179703, 0, 0, 1179704, 0, 0, 1179705, 0, 196608, 1179710, 0, 0, 1179711, 0, 0, 1179734, 0, 0, 1179741, 0, 262145, 1245192, 0, 65537, 1245193, 0, 65537, 1245194, 0, 65537, 1245195, 0, 65537, 1245213, 0, 131072, 1245214, 0, 0, 1245215, 0, 0, 1245216, 0, 0, 1245217, 0, 0, 1245218, 0, 0, 1245219, 0, 0, 1245220, 0, 0, 1245221, 0, 0, 1245225, 0, 65537, 1245226, 0, 65537, 1245227, 0, 65537, 1245228, 0, 65537, 1245229, 0, 65537, 1245230, 0, 65537, 1245233, 0, 65537, 1245234, 0, 65537, 1245235, 0, 65537, 1245238, 0, 0, 1245239, 0, 0, 1245240, 0, 0, 1245241, 0, 196608, 1245270, 0, 65537, 1245271, 0, 65537, 1245272, 0, 65537, 1245273, 0, 65537, 1245274, 0, 65537, 1245275, 0, 65537, 1245276, 0, 65537, 1245277, 0, 65537, 1245278, 0, 65537, 1245279, 0, 65537, 1310749, 0, 0, 1310750, 0, 0, 1310751, 0, 0, 1310752, 0, 0, 1310753, 0, 0, 1310754, 0, 0, 1310755, 0, 0, 1310756, 0, 0, 1310757, 0, 0, 1310774, 0, 0, 1310775, 0, 0, 1310776, 0, 0, 1310777, 0, 196608, 1376268, 0, 262144, 1376285, 0, 0, 1376286, 0, 0, 1376287, 0, 0, 1376288, 0, 0, 1376289, 0, 0, 1376290, 0, 0, 1376291, 0, 0, 1376292, 0, 0, 1376293, 0, 0, 1376298, 0, 262145, 1376303, 0, 262144, 1376310, 0, 0, 1376311, 0, 0, 1376312, 0, 0, 1376313, 0, 196609, 1376325, 0, 262144, 1376332, 0, 262144, 1376340, 0, 262144, 1376345, 0, 262145, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441824, 0, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 0, 0, 1441831, 0, 0, 1441832, 0, 0, 1441833, 0, 0, 1441834, 0, 0, 1441835, 0, 0, 1441836, 0, 0, 1441837, 0, 0, 1441838, 0, 0, 1441839, 0, 0, 1441840, 0, 0, 1441841, 0, 0, 1441842, 0, 0, 1441843, 0, 0, 1441844, 0, 0, 1441845, 0, 0, 1441846, 0, 0, 1441847, 0, 0, 1441848, 0, 0, 1441849, 0, 0, 1441850, 0, 0, 1441851, 0, 0, 1441852, 0, 0, 1441853, 0, 0, 1441854, 0, 0, 1441855, 0, 0, 1441856, 0, 0, 1441857, 0, 0, 1441858, 0, 0, 1441859, 0, 0, 1441860, 0, 0, 1441861, 0, 0, 1441862, 0, 0, 1441863, 0, 0, 1441864, 0, 0, 1441865, 0, 0, 1441866, 0, 0, 1441867, 0, 0, 1441868, 0, 0, 1441869, 0, 0, 1441870, 0, 0, 1441871, 0, 0, 1441872, 0, 0, 1441873, 0, 0, 1441874, 0, 0, 1441875, 0, 0, 1441876, 0, 0, 1441877, 0, 0, 1441878, 0, 0, 1441879, 0, 0, 1441880, 0, 0, 1441881, 0, 0, 1441882, 0, 0, 1441883, 0, 0, 1441884, 0, 0, 1441885, 0, 0, 1441886, 0, 0, 1441887, 0, 0, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 0, 0, 1507332, 0, 0, 1507333, 0, 0, 1507334, 0, 0, 1507335, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507338, 0, 0, 1507339, 0, 0, 1507340, 0, 0, 1507341, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1507350, 0, 0, 1507351, 0, 0, 1507352, 0, 0, 1507353, 0, 0, 1507354, 0, 0, 1507355, 0, 0, 1507356, 0, 0, 1507357, 0, 0, 1507358, 0, 0, 1507359, 0, 0, 1507360, 0, 0, 1507361, 0, 0, 1507362, 0, 0, 1507363, 0, 0, 1507364, 0, 0, 1507365, 0, 0, 1507366, 0, 0, 1507367, 0, 0, 1507368, 0, 0, 1507369, 0, 0, 1507370, 0, 0, 1507371, 0, 0, 1507372, 0, 0, 1507373, 0, 0, 1507374, 0, 0, 1507375, 0, 0, 1507376, 0, 0, 1507377, 0, 0, 1507378, 0, 0, 1507379, 0, 0, 1507380, 0, 0, 1507381, 0, 0, 1507382, 0, 0, 1507383, 0, 0, 1507384, 0, 0, 1507385, 0, 0, 1507386, 0, 0, 1507387, 0, 0, 1507388, 0, 0, 1507389, 0, 0, 1507390, 0, 0, 1507391, 0, 0, 1507392, 0, 0, 1507393, 0, 0, 1507394, 0, 0, 1507395, 0, 0, 1507396, 0, 0, 1507397, 0, 0, 1507398, 0, 0, 1507399, 0, 0, 1507400, 0, 0, 1507401, 0, 0, 1507402, 0, 0, 1507403, 0, 0, 1507404, 0, 0, 1507405, 0, 0, 1507406, 0, 0, 1507407, 0, 0, 1507408, 0, 0, 1507409, 0, 0, 1507410, 0, 0, 1507411, 0, 0, 1507412, 0, 0, 1507413, 0, 0, 1507414, 0, 0, 1507415, 0, 0, 1507416, 0, 0, 1507417, 0, 0, 1507418, 0, 0, 1507419, 0, 0, 1507420, 0, 0, 1507421, 0, 0, 1507422, 0, 0, 1507423, 0, 0 ) +tile_data = PoolIntArray( 65571, 0, 0, 131107, 0, 0, 131155, 0, 65537, 131156, 0, 65537, 196643, 0, 0, 196697, 0, 262145, 262153, 0, 65537, 262154, 0, 65537, 262155, 0, 65537, 262156, 0, 131073, 262159, 0, 65537, 262160, 0, 65537, 262161, 0, 65537, 262162, 0, 65537, 262163, 0, 65537, 262164, 0, 65537, 262165, 0, 65537, 262179, 0, 65537, 262180, 0, 65537, 262181, 0, 65537, 262182, 0, 65537, 262216, 0, 65537, 262217, 0, 65537, 262218, 0, 65537, 262229, 0, 65537, 262230, 0, 65537, 262231, 0, 65537, 262232, 0, 65537, 262233, 0, 65537, 262234, 0, 65537, 327685, 0, 65537, 327686, 0, 65537, 327687, 0, 65537, 327692, 0, 0, 327727, 0, 65537, 327728, 0, 65537, 327729, 0, 65537, 327734, 0, 262144, 327738, 0, 262145, 327748, 0, 262145, 327771, 0, 65537, 327772, 0, 65537, 327773, 0, 65537, 393228, 0, 0, 393240, 0, 262145, 393258, 0, 65537, 393259, 0, 65537, 393260, 0, 65537, 393269, 0, 65537, 393270, 0, 65537, 393271, 0, 65537, 393272, 0, 65537, 393273, 0, 65537, 393274, 0, 65537, 393275, 0, 65537, 393276, 0, 65537, 393277, 0, 65537, 393279, 0, 131072, 393280, 0, 65537, 393281, 0, 65537, 393282, 0, 65537, 393283, 0, 65537, 393284, 0, 65537, 393285, 0, 65537, 393292, 0, 65537, 458763, 0, 65537, 458764, 0, 65537, 458774, 0, 65537, 458775, 0, 65537, 458776, 0, 65537, 458777, 0, 65537, 458778, 0, 65537, 458779, 0, 65537, 458785, 0, 262145, 458815, 0, 0, 524318, 0, 65537, 524319, 0, 65537, 524320, 0, 65537, 524321, 0, 65537, 524322, 0, 65537, 524323, 0, 65537, 524351, 0, 0, 655365, 0, 262145, 786431, 0, 65537, 720896, 0, 65537, 720897, 0, 65537, 720898, 0, 65537, 720899, 0, 65537, 720900, 0, 65537, 720901, 0, 65537, 720902, 0, 65537, 720903, 0, 65537, 720904, 0, 65537, 720905, 0, 65537, 720919, 0, 0, 720931, 0, 262145, 720954, 0, 262144, 720972, 0, 262145, 720982, 0, 262145, 786448, 0, 262144, 786452, 0, 262145, 786455, 0, 65537, 786456, 0, 65537, 786457, 0, 65537, 786458, 0, 131073, 786462, 0, 65537, 786463, 0, 65537, 786464, 0, 65537, 786465, 0, 65537, 786466, 0, 65537, 786467, 0, 65537, 786468, 0, 65537, 786469, 0, 65537, 786477, 0, 65537, 786478, 0, 65537, 786479, 0, 65537, 786480, 0, 65537, 786481, 0, 65537, 786485, 0, 65537, 786486, 0, 65537, 786487, 0, 65537, 786488, 0, 65537, 786489, 0, 65537, 786490, 0, 65537, 786491, 0, 65537, 786494, 0, 131072, 786495, 0, 0, 786496, 0, 65537, 786497, 0, 65537, 786498, 0, 65537, 786499, 0, 65537, 786500, 0, 65537, 786501, 0, 65537, 786502, 0, 65537, 786503, 0, 65537, 786504, 0, 65537, 786505, 0, 65537, 786506, 0, 65537, 786507, 0, 65537, 786508, 0, 65537, 786509, 0, 65537, 786510, 0, 65537, 786511, 0, 65537, 786512, 0, 65537, 786513, 0, 65537, 786514, 0, 65537, 786515, 0, 65537, 786516, 0, 65537, 786517, 0, 65537, 786518, 0, 65537, 786519, 0, 65537, 786520, 0, 65537, 786521, 0, 131073, 786525, 0, 65537, 786526, 0, 65537, 786527, 0, 65537, 786528, 0, 65537, 851984, 0, 65537, 851985, 0, 65537, 851986, 0, 65537, 851987, 0, 65537, 851988, 0, 65537, 851989, 0, 65537, 851994, 0, 0, 852030, 0, 0, 852031, 0, 0, 852057, 0, 0, 917509, 0, 262144, 917530, 0, 0, 917566, 0, 0, 917567, 0, 0, 917593, 0, 0, 1048575, 0, 65537, 983040, 0, 65537, 983043, 0, 131072, 983044, 0, 65537, 983045, 0, 65537, 983046, 0, 65537, 983047, 0, 65537, 983048, 0, 65537, 983049, 0, 65537, 983050, 0, 65537, 983051, 0, 65537, 983066, 0, 0, 983084, 0, 262145, 983102, 0, 0, 983103, 0, 0, 983113, 0, 262144, 983129, 0, 0, 1048579, 0, 0, 1048592, 0, 65537, 1048593, 0, 65537, 1048594, 0, 65537, 1048595, 0, 65537, 1048596, 0, 65537, 1048597, 0, 65537, 1048598, 0, 65537, 1048599, 0, 65537, 1048600, 0, 65537, 1048601, 0, 65537, 1048602, 0, 65537, 1048607, 0, 131072, 1048608, 0, 0, 1048609, 0, 0, 1048610, 0, 0, 1048611, 0, 0, 1048612, 0, 0, 1048613, 0, 131073, 1048617, 0, 131072, 1048618, 0, 0, 1048619, 0, 0, 1048620, 0, 0, 1048621, 0, 0, 1048622, 0, 0, 1048623, 0, 0, 1048624, 0, 0, 1048625, 0, 0, 1048626, 0, 0, 1048627, 0, 0, 1048628, 0, 0, 1048629, 0, 0, 1048630, 0, 0, 1048631, 0, 131073, 1048638, 0, 0, 1048639, 0, 0, 1048648, 0, 65537, 1048649, 0, 65537, 1048650, 0, 65537, 1048651, 0, 65537, 1048665, 0, 65537, 1048666, 0, 65537, 1048667, 0, 65537, 1048668, 0, 65537, 1048669, 0, 65537, 1048670, 0, 65537, 1048671, 0, 65537, 1048672, 0, 65537, 1114115, 0, 0, 1114143, 0, 0, 1114144, 0, 0, 1114145, 0, 0, 1114146, 0, 0, 1114147, 0, 0, 1114148, 0, 0, 1114149, 0, 0, 1114153, 0, 0, 1114154, 0, 0, 1114155, 0, 0, 1114156, 0, 0, 1114157, 0, 0, 1114158, 0, 0, 1114159, 0, 65537, 1114160, 0, 65537, 1114161, 0, 0, 1114162, 0, 0, 1114163, 0, 0, 1114164, 0, 65537, 1114165, 0, 65537, 1114166, 0, 0, 1114167, 0, 0, 1114168, 0, 131073, 1114174, 0, 0, 1114175, 0, 0, 1114190, 0, 65537, 1114191, 0, 65537, 1114192, 0, 65537, 1114197, 0, 65537, 1114198, 0, 131073, 1179649, 0, 65537, 1179650, 0, 65537, 1179651, 0, 65537, 1179678, 0, 131072, 1179679, 0, 0, 1179680, 0, 0, 1179681, 0, 0, 1179682, 0, 0, 1179683, 0, 0, 1179684, 0, 0, 1179685, 0, 0, 1179689, 0, 0, 1179690, 0, 0, 1179691, 0, 0, 1179692, 0, 0, 1179693, 0, 0, 1179694, 0, 0, 1179697, 0, 0, 1179698, 0, 0, 1179699, 0, 0, 1179702, 0, 0, 1179703, 0, 0, 1179704, 0, 0, 1179710, 0, 0, 1179711, 0, 0, 1179734, 0, 0, 1179741, 0, 262145, 1245192, 0, 65537, 1245193, 0, 65537, 1245194, 0, 65537, 1245195, 0, 65537, 1245213, 0, 131072, 1245214, 0, 0, 1245215, 0, 0, 1245216, 0, 0, 1245217, 0, 0, 1245218, 0, 0, 1245219, 0, 0, 1245220, 0, 0, 1245221, 0, 0, 1245225, 0, 65537, 1245226, 0, 65537, 1245227, 0, 65537, 1245228, 0, 65537, 1245229, 0, 65537, 1245230, 0, 65537, 1245233, 0, 65537, 1245234, 0, 65537, 1245235, 0, 65537, 1245238, 0, 0, 1245239, 0, 0, 1245240, 0, 0, 1245270, 0, 65537, 1245271, 0, 65537, 1245272, 0, 65537, 1245273, 0, 65537, 1245274, 0, 65537, 1245275, 0, 65537, 1245276, 0, 65537, 1245277, 0, 65537, 1245278, 0, 65537, 1245279, 0, 65537, 1245280, 0, 65537, 1310749, 0, 0, 1310750, 0, 0, 1310751, 0, 0, 1310752, 0, 0, 1310753, 0, 0, 1310754, 0, 0, 1310755, 0, 0, 1310756, 0, 0, 1310757, 0, 0, 1310774, 0, 0, 1310775, 0, 0, 1310776, 0, 0, 1376268, 0, 262144, 1376274, 0, 262144, 1376284, 0, 262144, 1376285, 0, 0, 1376286, 0, 0, 1376287, 0, 0, 1376288, 0, 0, 1376289, 0, 0, 1376290, 0, 0, 1376291, 0, 0, 1376292, 0, 0, 1376293, 0, 0, 1376299, 0, 262144, 1376303, 0, 262145, 1376310, 0, 0, 1376311, 0, 0, 1376312, 0, 0, 1376325, 0, 262144, 1376332, 0, 262145, 1376340, 0, 262144, 1376345, 0, 262145, 1507327, 0, 0, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441824, 0, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 0, 0, 1441831, 0, 0, 1441832, 0, 0, 1441833, 0, 0, 1441834, 0, 0, 1441835, 0, 0, 1441836, 0, 0, 1441837, 0, 0, 1441838, 0, 0, 1441839, 0, 0, 1441840, 0, 0, 1441841, 0, 0, 1441842, 0, 0, 1441843, 0, 0, 1441844, 0, 0, 1441845, 0, 0, 1441846, 0, 0, 1441847, 0, 0, 1441848, 0, 0, 1441849, 0, 0, 1441850, 0, 0, 1441851, 0, 0, 1441852, 0, 0, 1441853, 0, 0, 1441854, 0, 0, 1441855, 0, 0, 1441856, 0, 0, 1441857, 0, 0, 1441858, 0, 0, 1441859, 0, 0, 1441860, 0, 0, 1441861, 0, 0, 1441862, 0, 0, 1441863, 0, 0, 1441864, 0, 0, 1441865, 0, 0, 1441866, 0, 0, 1441867, 0, 0, 1441868, 0, 0, 1441869, 0, 0, 1441870, 0, 0, 1441871, 0, 0, 1441872, 0, 0, 1441873, 0, 0, 1441874, 0, 0, 1441875, 0, 0, 1441876, 0, 0, 1441877, 0, 0, 1441878, 0, 0, 1441879, 0, 0, 1441880, 0, 0, 1441881, 0, 0, 1441882, 0, 0, 1441883, 0, 0, 1441884, 0, 0, 1441885, 0, 0, 1441886, 0, 0, 1441887, 0, 0, 1441888, 0, 0, 1572863, 0, 0, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 0, 0, 1507332, 0, 0, 1507333, 0, 0, 1507334, 0, 0, 1507335, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507338, 0, 0, 1507339, 0, 0, 1507340, 0, 0, 1507341, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1507350, 0, 0, 1507351, 0, 0, 1507352, 0, 0, 1507353, 0, 0, 1507354, 0, 0, 1507355, 0, 0, 1507356, 0, 0, 1507357, 0, 0, 1507358, 0, 0, 1507359, 0, 0, 1507360, 0, 0, 1507361, 0, 0, 1507362, 0, 0, 1507363, 0, 0, 1507364, 0, 0, 1507365, 0, 0, 1507366, 0, 0, 1507367, 0, 0, 1507368, 0, 0, 1507369, 0, 0, 1507370, 0, 0, 1507371, 0, 0, 1507372, 0, 0, 1507373, 0, 0, 1507374, 0, 0, 1507375, 0, 0, 1507376, 0, 0, 1507377, 0, 0, 1507378, 0, 0, 1507379, 0, 0, 1507380, 0, 0, 1507381, 0, 0, 1507382, 0, 0, 1507383, 0, 0, 1507384, 0, 0, 1507385, 0, 0, 1507386, 0, 0, 1507387, 0, 0, 1507388, 0, 0, 1507389, 0, 0, 1507390, 0, 0, 1507391, 0, 0, 1507392, 0, 0, 1507393, 0, 0, 1507394, 0, 0, 1507395, 0, 0, 1507396, 0, 0, 1507397, 0, 0, 1507398, 0, 0, 1507399, 0, 0, 1507400, 0, 0, 1507401, 0, 0, 1507402, 0, 0, 1507403, 0, 0, 1507404, 0, 0, 1507405, 0, 0, 1507406, 0, 0, 1507407, 0, 0, 1507408, 0, 0, 1507409, 0, 0, 1507410, 0, 0, 1507411, 0, 0, 1507412, 0, 0, 1507413, 0, 0, 1507414, 0, 0, 1507415, 0, 0, 1507416, 0, 0, 1507417, 0, 0, 1507418, 0, 0, 1507419, 0, 0, 1507420, 0, 0, 1507421, 0, 0, 1507422, 0, 0, 1507423, 0, 0, 1507424, 0, 0, 1638399, 0, 0, 1572864, 0, 0, 1572865, 0, 0, 1572866, 0, 0, 1572867, 0, 0, 1572868, 0, 0, 1572869, 0, 0, 1572870, 0, 0, 1572871, 0, 0, 1572872, 0, 0, 1572873, 0, 0, 1572874, 0, 0, 1572875, 0, 0, 1572876, 0, 0, 1572877, 0, 0, 1572878, 0, 0, 1572879, 0, 0, 1572880, 0, 0, 1572881, 0, 0, 1572882, 0, 0, 1572883, 0, 0, 1572884, 0, 0, 1572885, 0, 0, 1572886, 0, 0, 1572887, 0, 0, 1572888, 0, 0, 1572889, 0, 0, 1572890, 0, 0, 1572891, 0, 0, 1572892, 0, 0, 1572893, 0, 0, 1572894, 0, 0, 1572895, 0, 0, 1572896, 0, 0, 1572897, 0, 0, 1572898, 0, 0, 1572899, 0, 0, 1572900, 0, 0, 1572901, 0, 0, 1572902, 0, 0, 1572903, 0, 0, 1572904, 0, 0, 1572905, 0, 0, 1572906, 0, 0, 1572907, 0, 0, 1572908, 0, 0, 1572909, 0, 0, 1572910, 0, 0, 1572911, 0, 0, 1572912, 0, 0, 1572913, 0, 0, 1572914, 0, 0, 1572915, 0, 0, 1572916, 0, 0, 1572917, 0, 0, 1572918, 0, 0, 1572919, 0, 0, 1572920, 0, 0, 1572921, 0, 0, 1572922, 0, 0, 1572923, 0, 0, 1572924, 0, 0, 1572925, 0, 0, 1572926, 0, 0, 1572927, 0, 0, 1572928, 0, 0, 1572929, 0, 0, 1572930, 0, 0, 1572931, 0, 0, 1572932, 0, 0, 1572933, 0, 0, 1572934, 0, 0, 1572935, 0, 0, 1572936, 0, 0, 1572937, 0, 0, 1572938, 0, 0, 1572939, 0, 0, 1572940, 0, 0, 1572941, 0, 0, 1572942, 0, 0, 1572943, 0, 0, 1572944, 0, 0, 1572945, 0, 0, 1572946, 0, 0, 1572947, 0, 0, 1572948, 0, 0, 1572949, 0, 0, 1572950, 0, 0, 1572951, 0, 0, 1572952, 0, 0, 1572953, 0, 0, 1572954, 0, 0, 1572955, 0, 0, 1572956, 0, 0, 1572957, 0, 0, 1572958, 0, 0, 1572959, 0, 0, 1572960, 0, 0 ) [node name="Player" parent="." instance=ExtResource( 1 )] -position = Vector2( 32, 166 ) +position = Vector2( 32, 176 ) +beta_gameplay = true [node name="Ladder" type="TileMap" parent="."] -tile_set = ExtResource( 2 ) +tile_set = ExtResource( 22 ) cell_size = Vector2( 8, 8 ) collision_layer = 9 format = 1 -tile_data = PoolIntArray( 393236, 0, 196610, 458772, 0, 196608, 524308, 0, 196608, 589844, 0, 196608, 786445, 0, 196610, 786460, 0, 196610, 851981, 0, 196608, 851996, 0, 196608, 917517, 0, 196608, 917532, 0, 196608, 983053, 0, 196608, 983068, 0, 196608, 983078, 0, 196610, 1048589, 0, 196608, 1048604, 0, 196608, 1048614, 0, 196608, 1114125, 0, 196608, 1114150, 0, 196608, 1179661, 0, 196608, 1179686, 0, 196608, 1245197, 0, 196608, 1245222, 0, 196608, 1310733, 0, 196608, 1310758, 0, 196608, 1376268, 0, 262144, 1376269, 0, 196609, 1376274, 0, 262144, 1376284, 0, 262144, 1376294, 0, 196609 ) +tile_data = PoolIntArray( 393236, 0, 65536, 458772, 0, 65537, 524308, 0, 65537, 589844, 0, 65537, 786445, 0, 65536, 786460, 0, 65536, 851981, 0, 65537, 851996, 0, 65537, 852058, 0, 65536, 917517, 0, 65537, 917532, 0, 65537, 917594, 0, 65537, 983053, 0, 65537, 983068, 0, 65537, 983130, 0, 65538, 1048589, 0, 65537, 1048604, 0, 65537, 1048614, 0, 65536, 1048633, 0, 65536, 1114125, 0, 65537, 1114150, 0, 65537, 1114169, 0, 65537, 1179661, 0, 65537, 1179686, 0, 65537, 1179705, 0, 65537, 1245197, 0, 65537, 1245222, 0, 65537, 1245241, 0, 65537, 1310733, 0, 65537, 1310758, 0, 65537, 1310777, 0, 65537, 1376269, 0, 65538, 1376294, 0, 65538, 1376313, 0, 65538 ) -[node name="Death" type="TileMap" parent="."] +[node name="Death" type="TileMap" parent="." groups=["death"]] +light_mask = 0 tile_set = ExtResource( 5 ) cell_size = Vector2( 8, 8 ) +collision_layer = 32 format = 1 tile_data = PoolIntArray( 720951, 1, 0, 720952, 1, 0, 720977, 1, 0, 720978, 1, 0, 983091, 1, 0 ) @@ -85,22 +98,28 @@ position = Vector2( 160, 48 ) scale = Vector2( 1, 4 ) [node name="Ladder3" parent="Platforms" instance=ExtResource( 9 )] -position = Vector2( 304, 120 ) -scale = Vector2( 1, 7 ) +position = Vector2( 304, 128 ) +scale = Vector2( 1, 6 ) +can_climb_left = false [node name="Ladder4" parent="Platforms" instance=ExtResource( 9 )] +position = Vector2( 456, 136 ) +scale = Vector2( 1, 5 ) +can_climb_left = false + +[node name="Ladder6" parent="Platforms" instance=ExtResource( 9 )] position = Vector2( 456, 128 ) -scale = Vector2( 1, 6 ) [node name="Ladder8" parent="Platforms" instance=ExtResource( 9 )] -position = Vector2( 720, 96 ) -scale = Vector2( 1, 4 ) +position = Vector2( 720, 104 ) +scale = Vector2( 1, 3 ) +can_climb_left = false [node name="Rock2" parent="Platforms" instance=ExtResource( 3 )] position = Vector2( 208, 88 ) [node name="Rock3" parent="Platforms" instance=ExtResource( 3 )] -position = Vector2( 272, 48 ) +position = Vector2( 272, 56 ) [node name="FallingBlock" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 56, 72 ) @@ -108,26 +127,17 @@ position = Vector2( 56, 72 ) [node name="FallingBlock4" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 64, 40 ) -[node name="FallingBlock6" parent="Platforms" instance=ExtResource( 18 )] -position = Vector2( 240, 96 ) - -[node name="FallingBlock19" parent="Platforms" instance=ExtResource( 18 )] -position = Vector2( 248, 96 ) - [node name="FallingBlock7" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 352, 96 ) -fall_speed = 1.0 [node name="FallingBlock8" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 344, 96 ) -fall_speed = 1.0 [node name="FallingBlock11" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 536, 144 ) [node name="FallingBlock17" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 552, 128 ) -fall_speed = 1.0 [node name="FallingBlock9" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 312, 72 ) @@ -137,22 +147,18 @@ position = Vector2( 328, 56 ) [node name="FallingBlock12" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 616, 32 ) -fall_speed = 1.0 [node name="FallingBlock13" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 624, 32 ) -fall_speed = 1.0 [node name="FallingBlock18" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 576, 80 ) [node name="FallingBlock14" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 632, 32 ) -fall_speed = 1.0 [node name="FallingBlock22" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 648, 24 ) -fall_speed = 1.0 [node name="FallingBlock20" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 728, 64 ) @@ -162,11 +168,9 @@ position = Vector2( 720, 64 ) [node name="FallingBlock15" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 752, 40 ) -fall_speed = 1.0 [node name="FallingBlock16" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 760, 40 ) -fall_speed = 1.0 [node name="FallingBlock2" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 40, 64 ) @@ -186,17 +190,6 @@ position = Vector2( 528, 160 ) [node name="Turniwood2" parent="Platforms" instance=ExtResource( 21 )] position = Vector2( 320, 32 ) -[node name="Area2D2" parent="Platforms" instance=ExtResource( 22 )] -position = Vector2( 440, 88 ) -scale = Vector2( 2, 1 ) - -[node name="Area2D5" parent="Platforms" instance=ExtResource( 22 )] -position = Vector2( 648, 88 ) -scale = Vector2( 2, 1 ) - -[node name="Area2D4" parent="Platforms" instance=ExtResource( 22 )] -position = Vector2( 408, 120 ) - [node name="Barrier" parent="Platforms" instance=ExtResource( 23 )] position = Vector2( 496, 152 ) scale = Vector2( 1, 24 ) @@ -204,7 +197,7 @@ cost = 30 [node name="Barrier2" parent="Platforms" instance=ExtResource( 23 )] position = Vector2( 308, 0 ) -scale = Vector2( 1, 24 ) +scale = Vector2( 1, 32 ) cost = 25 label_offset = Vector2( 0, 10 ) @@ -212,99 +205,89 @@ label_offset = Vector2( 0, 10 ) [node name="Snail" parent="Enemies" instance=ExtResource( 7 )] position = Vector2( 168, 168 ) -left_up_boundry = 3.0 -right_down_boundry = 3.0 +left_up_boundary = 3.0 +right_down_boundary = 7.0 [node name="Snail3" parent="Enemies" instance=ExtResource( 7 )] position = Vector2( 312, 168 ) -right_down_boundry = 15.0 +right_down_boundary = 15.0 slower_speed = 40 faster_speed = 100 [node name="Snail4" parent="Enemies" instance=ExtResource( 7 )] position = Vector2( 696, 24 ) -left_up_boundry = 2.0 -right_down_boundry = 3.0 +left_up_boundary = 2.0 +right_down_boundary = 3.0 slower_speed = 40 faster_speed = 100 [node name="Snail6" parent="Enemies" instance=ExtResource( 7 )] position = Vector2( 568, 88 ) -left_up_boundry = 2.0 -right_down_boundry = 3.0 +left_up_boundary = 2.0 +right_down_boundary = 3.0 slower_speed = 40 faster_speed = 100 [node name="Snail8" parent="Enemies" instance=ExtResource( 7 )] position = Vector2( 704, 144 ) -left_up_boundry = 1.0 -right_down_boundry = 7.0 +left_up_boundary = 1.0 +right_down_boundary = 7.0 slower_speed = 40 faster_speed = 100 [node name="Snail10" parent="Enemies" instance=ExtResource( 7 )] position = Vector2( 648, 168 ) -left_up_boundry = 5.0 -right_down_boundry = 5.0 +left_up_boundary = 5.0 +right_down_boundary = 5.0 slower_speed = 40 faster_speed = 100 [node name="Snail2" parent="Enemies" instance=ExtResource( 7 )] position = Vector2( 64, 112 ) -left_up_boundry = 3.0 -right_down_boundry = 3.0 +left_up_boundary = 3.0 +right_down_boundary = 3.0 faster_speed = 70 -[node name="Bat" parent="Enemies" instance=ExtResource( 10 )] -position = Vector2( 120, 96 ) -right_down_boundry = 10.0 - [node name="Bat4" parent="Enemies" instance=ExtResource( 10 )] position = Vector2( 80, 16 ) -right_down_boundry = 7.0 +right_down_boundary = 7.0 speed = 30 -[node name="Bat6" parent="Enemies" instance=ExtResource( 10 )] -position = Vector2( 368, 48 ) -left_up_boundry = 3.0 -right_down_boundry = 3.0 -speed = 60 - [node name="Bat8" parent="Enemies" instance=ExtResource( 10 )] position = Vector2( 568, 40 ) -left_up_boundry = 4.0 -right_down_boundry = 3.0 +left_up_boundary = 4.0 +right_down_boundary = 3.0 [node name="Bat10" parent="Enemies" instance=ExtResource( 10 )] position = Vector2( 640, 80 ) -left_up_boundry = 5.0 -right_down_boundry = 3.0 +left_up_boundary = 5.0 +right_down_boundary = 3.0 speed = 60 [node name="Bat9" parent="Enemies" instance=ExtResource( 10 )] position = Vector2( 688, 16 ) -left_up_boundry = 3.0 -right_down_boundry = 3.0 +left_up_boundary = 3.0 +right_down_boundary = 3.0 [node name="Bat12" parent="Enemies" instance=ExtResource( 10 )] position = Vector2( 720, 56 ) -left_up_boundry = 1.0 -right_down_boundry = 6.0 +left_up_boundary = 1.0 +right_down_boundary = 6.0 [node name="Bat7" parent="Enemies" instance=ExtResource( 10 )] position = Vector2( 376, 88 ) -left_up_boundry = 1.0 -right_down_boundry = 3.0 -speed = 80 +left_up_boundary = 1.0 +right_down_boundary = 3.0 [node name="Bat2" parent="Enemies" instance=ExtResource( 10 )] position = Vector2( 16, 120 ) -left_up_boundry = 3.0 -right_down_boundry = 3.0 +left_up_boundary = 3.0 +right_down_boundary = 3.0 speed = 60 [node name="RollingFiend" parent="Enemies" instance=ExtResource( 13 )] position = Vector2( 144, 96 ) +clockwise = true [node name="RollingFiend3" parent="Enemies" instance=ExtResource( 13 )] position = Vector2( 128, 24 ) @@ -315,7 +298,7 @@ position = Vector2( 160, 38 ) move_speed = 70.0 [node name="RollingFiend6" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 384, 40 ) +position = Vector2( 384, 32 ) [node name="RollingFiend7" parent="Enemies" instance=ExtResource( 13 )] position = Vector2( 432, 88 ) @@ -353,7 +336,7 @@ position = Vector2( 160, 120 ) position = Vector2( 344, 40 ) [node name="Gold25" parent="Collectibles" instance=ExtResource( 14 )] -position = Vector2( 384, 40 ) +position = Vector2( 384, 32 ) [node name="Gold32" parent="Collectibles" instance=ExtResource( 14 )] position = Vector2( 440, 40 ) @@ -368,7 +351,7 @@ position = Vector2( 624, 88 ) position = Vector2( 672, 88 ) [node name="Gold26" parent="Collectibles" instance=ExtResource( 14 )] -position = Vector2( 240, 48 ) +position = Vector2( 240, 56 ) [node name="Gold29" parent="Collectibles" instance=ExtResource( 14 )] position = Vector2( 264, 120 ) @@ -389,7 +372,7 @@ position = Vector2( 184, 168 ) position = Vector2( 264, 88 ) [node name="Gold52" parent="Collectibles" instance=ExtResource( 14 )] -position = Vector2( 288, 88 ) +position = Vector2( 296, 88 ) [node name="Gold35" parent="Collectibles" instance=ExtResource( 14 )] position = Vector2( 368, 120 ) @@ -464,10 +447,10 @@ position = Vector2( 128, 24 ) position = Vector2( 160, 24 ) [node name="Gold16" parent="Collectibles" instance=ExtResource( 14 )] -position = Vector2( 16, 80 ) +position = Vector2( 40, 32 ) [node name="Gold17" parent="Collectibles" instance=ExtResource( 14 )] -position = Vector2( 32, 80 ) +position = Vector2( 56, 32 ) [node name="Gold14" parent="Collectibles" instance=ExtResource( 14 )] position = Vector2( 40, 56 ) @@ -486,10 +469,11 @@ position = Vector2( 64, 112 ) [node name="Star" parent="Collectibles" instance=ExtResource( 15 )] position = Vector2( 192, 120 ) +color = 1 [node name="Star3" parent="Collectibles" instance=ExtResource( 15 )] -position = Vector2( 296, 16 ) -color = 1 +position = Vector2( 288, 24 ) +color = 2 [node name="Star6" parent="Collectibles" instance=ExtResource( 15 )] position = Vector2( 752, 168 ) @@ -501,11 +485,6 @@ color = 3 [node name="Star2" parent="Collectibles" instance=ExtResource( 15 )] position = Vector2( 88, 48 ) -color = 1 - -[node name="Star4" parent="Collectibles" instance=ExtResource( 15 )] -position = Vector2( 144, 24 ) -color = 2 [node name="Shard" parent="Collectibles" instance=ExtResource( 17 )] position = Vector2( 8, 136 ) @@ -523,13 +502,13 @@ position = Vector2( 720, 144 ) number = 2 [node name="Arrow" parent="Collectibles" instance=ExtResource( 20 )] -position = Vector2( 96, 24 ) +position = Vector2( 144, 24 ) [node name="Arrow3" parent="Collectibles" instance=ExtResource( 20 )] position = Vector2( 728, 32 ) [node name="Arrow5" parent="Collectibles" instance=ExtResource( 20 )] -position = Vector2( 288, -8 ) +position = Vector2( 280, 0 ) [node name="Arrow4" parent="Collectibles" instance=ExtResource( 20 )] position = Vector2( 208, 168 ) @@ -568,5 +547,5 @@ __meta__ = { } [node name="Exit" parent="." instance=ExtResource( 24 )] -position = Vector2( 760, 116 ) -cost = 2 +position = Vector2( 752, 116 ) +cost = 25 diff --git a/maps/cave_scholar.tscn b/maps/cave_scholar.tscn new file mode 100644 index 0000000..3542bfd --- /dev/null +++ b/maps/cave_scholar.tscn @@ -0,0 +1,1177 @@ +[gd_scene load_steps=38 format=2] + +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=1] +[ext_resource path="res://tilesets/t_cave.tres" type="TileSet" id=2] +[ext_resource path="res://objects/environment/stalactite/stalactite.tscn" type="PackedScene" id=3] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=4] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=5] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=6] +[ext_resource path="res://objects/enemy/snail.tscn" type="PackedScene" id=7] +[ext_resource path="res://graphics/backgrounds/cave_scholar.png" type="Texture" id=8] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=9] +[ext_resource path="res://objects/enemy/bat.tscn" type="PackedScene" id=10] +[ext_resource path="res://maps/map.gd" type="Script" id=11] +[ext_resource path="res://audio/music/sleet.ogg" type="AudioStream" id=12] +[ext_resource path="res://objects/enemy/rolling_fiend.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=14] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=15] +[ext_resource path="res://objects/enemy/tentacle.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=17] +[ext_resource path="res://objects/environment/falling_block/falling_block_cave.tscn" type="PackedScene" id=18] +[ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=19] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=20] +[ext_resource path="res://scripts/fix_parallax_background.gd" type="Script" id=21] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=22] +[ext_resource path="res://objects/environment/barrier/barrier.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=24] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=25] +[ext_resource path="res://objects/lore/hills/catbat.tscn" type="PackedScene" id=26] +[ext_resource path="res://objects/lore/cave/shedge.tscn" type="PackedScene" id=27] +[ext_resource path="res://objects/lore/cave/the_scrumps_tongue.tscn" type="PackedScene" id=28] +[ext_resource path="res://objects/lore/cave/blue_ray_cavern.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/mountain/rolling_fiend.tscn" type="PackedScene" id=30] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=31] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=32] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=33] +[ext_resource path="res://maps/cave_speccy_detector.gd" type="Script" id=34] + +[sub_resource type="Curve" id=2] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 4, 96 ) + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 20, 20 ) + +[node name="Map2" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 11 ) +target_time_any = 40 +target_time_100 = 170 +music = ExtResource( 12 ) +lore_entries = [ ExtResource( 29 ), ExtResource( 27 ), ExtResource( 28 ), ExtResource( 30 ), ExtResource( 26 ) ] + +[node name="ParallaxBackground" type="ParallaxBackground" parent="."] +script = ExtResource( 21 ) + +[node name="ParallaxLayer" type="ParallaxLayer" parent="ParallaxBackground"] +motion_scale = Vector2( 0.5, 1 ) + +[node name="Background" type="Sprite" parent="ParallaxBackground/ParallaxLayer"] +texture = ExtResource( 8 ) +centered = false +__meta__ = { +"_edit_lock_": true +} + +[node name="Camera2D" parent="." instance=ExtResource( 6 )] + +[node name="HUD" parent="." instance=ExtResource( 4 )] +song_name = "♫Sleet" + +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 25 ) +tile_set = ExtResource( 2 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 9 +format = 1 +tile_data = PoolIntArray( 0, 1, 1, 1, 1, 2, 2, 1, 2, 3, 1, 2, 4, 1, 2, 5, 1, 2, 6, 1, 2, 7, 1, 2, 8, 1, 2, 9, 1, 2, 10, 1, 2, 11, 1, 2, 12, 1, 2, 13, 1, 2, 14, 1, 2, 15, 1, 2, 16, 1, 2, 17, 1, 2, 18, 1, 2, 19, 1, 2, 20, 1, 2, 21, 1, 2, 22, 1, 2, 23, 1, 2, 24, 1, 2, 25, 1, 2, 26, 1, 2, 27, 1, 2, 28, 1, 2, 29, 1, 2, 30, 1, 2, 31, 1, 2, 32, 1, 2, 33, 1, 2, 34, 1, 2, 35, 1, 2, 36, 1, 2, 37, 1, 2, 38, 1, 2, 39, 1, 2, 40, 1, 2, 41, 1, 2, 42, 1, 2, 43, 1, 2, 44, 1, 2, 45, 1, 2, 46, 1, 2, 47, 1, 2, 48, 1, 2, 49, 1, 2, 50, 1, 2, 51, 1, 2, 52, 1, 2, 53, 1, 2, 54, 1, 2, 55, 1, 2, 56, 1, 2, 57, 1, 2, 58, 1, 2, 59, 1, 2, 60, 1, 2, 61, 1, 2, 62, 1, 2, 63, 1, 2, 64, 1, 2, 65, 1, 2, 66, 1, 2, 67, 1, 2, 68, 1, 2, 69, 1, 2, 70, 1, 2, 71, 1, 2, 72, 1, 2, 73, 1, 2, 74, 1, 2, 75, 1, 2, 76, 1, 2, 77, 1, 2, 78, 1, 2, 79, 1, 2, 80, 1, 2, 81, 1, 2, 82, 1, 2, 83, 1, 2, 84, 1, 2, 85, 1, 2, 86, 1, 2, 87, 1, 2, 88, 1, 2, 89, 1, 2, 90, 1, 2, 91, 1, 2, 92, 1, 2, 93, 1, 2, 94, 1, 2, 95, 1, 3, 65536, 1, 131073, 65537, 1, 131074, 65538, 1, 131074, 65539, 1, 131074, 65540, 1, 131074, 65541, 1, 131074, 65542, 1, 131074, 65543, 1, 131074, 65544, 1, 131074, 65545, 1, 131074, 65546, 1, 131074, 65547, 1, 131074, 65548, 1, 131074, 65549, 1, 131074, 65550, 1, 131074, 65551, 1, 131074, 65552, 1, 131074, 65553, 1, 131074, 65554, 1, 131074, 65555, 1, 131074, 65556, 1, 131074, 65557, 1, 131074, 65558, 1, 131074, 65559, 1, 131074, 65560, 1, 131074, 65561, 1, 131074, 65562, 1, 131074, 65563, 1, 131074, 65564, 1, 131074, 65565, 1, 131074, 65566, 1, 131074, 65567, 1, 131074, 65568, 1, 131074, 65569, 1, 131074, 65570, 1, 131074, 65571, 1, 131074, 65572, 1, 131074, 65573, 1, 131074, 65574, 1, 131074, 65575, 1, 131074, 65576, 1, 131074, 65577, 1, 131074, 65578, 1, 131074, 65579, 1, 131074, 65580, 1, 131074, 65581, 1, 131074, 65582, 1, 131074, 65583, 1, 131074, 65584, 1, 131074, 65585, 1, 131074, 65586, 1, 131074, 65587, 1, 131074, 65588, 1, 131074, 65589, 1, 131074, 65590, 1, 131074, 65591, 1, 131074, 65592, 1, 131074, 65593, 1, 131074, 65594, 1, 131074, 65595, 1, 131074, 65596, 1, 131074, 65597, 1, 131074, 65598, 1, 131074, 65599, 1, 131074, 65600, 1, 131074, 65601, 1, 131074, 65602, 1, 131074, 65603, 1, 131074, 65604, 1, 131074, 65605, 1, 131074, 65606, 1, 131074, 65607, 1, 131074, 65608, 1, 131074, 65609, 1, 131074, 65610, 1, 131074, 65611, 1, 131074, 65612, 1, 131074, 65613, 1, 131074, 65614, 1, 131074, 65615, 1, 131074, 65616, 1, 131074, 65617, 1, 131074, 65618, 1, 131074, 65619, 1, 131074, 65620, 1, 131074, 65621, 1, 131074, 65622, 1, 131074, 65623, 1, 131074, 65624, 1, 131074, 65625, 1, 131074, 65626, 1, 131074, 65627, 1, 131074, 65628, 1, 131074, 65629, 1, 131074, 65630, 1, 131074, 65631, 1, 131075, 327763, 1, 196609, 327764, 1, 196611, 393221, 1, 196609, 393222, 1, 196610, 393223, 1, 196610, 393224, 1, 196610, 393225, 1, 196610, 393226, 1, 196611, 393229, 1, 196609, 393230, 1, 196610, 393231, 1, 196610, 393232, 1, 196610, 393233, 1, 196610, 393234, 1, 196611, 393251, 3, 0, 393259, 3, 0, 393268, 3, 0, 393278, 3, 0, 393289, 1, 196609, 393290, 1, 196610, 393291, 1, 196611, 458775, 1, 196609, 458776, 1, 196610, 458777, 1, 196611, 458780, 1, 1, 458781, 1, 2, 458782, 1, 2, 458783, 1, 2, 458784, 1, 2, 458785, 1, 2, 458786, 1, 2, 458787, 1, 2, 458788, 1, 2, 458789, 1, 196610, 458790, 1, 196611, 458791, 0, 196608, 458792, 0, 196608, 458793, 0, 196608, 458794, 0, 196608, 458795, 1, 1, 458796, 1, 3, 458801, 1, 196609, 458802, 1, 196610, 458803, 1, 196610, 458804, 1, 196610, 458805, 1, 196610, 458806, 1, 196610, 458807, 1, 2, 458808, 1, 2, 458809, 1, 2, 458810, 1, 196610, 458811, 1, 196610, 458812, 1, 196610, 458813, 1, 196610, 458814, 1, 2, 458815, 1, 2, 458816, 1, 2, 458817, 1, 3, 458818, 0, 196608, 458819, 0, 196608, 458820, 1, 0, 458823, 1, 196608, 458837, 1, 196609, 458838, 1, 196610, 458839, 1, 196610, 458840, 1, 196610, 458841, 1, 196610, 458842, 1, 196610, 458843, 1, 196610, 458844, 1, 196611, 458847, 1, 0, 524316, 1, 65537, 524317, 1, 65538, 524318, 1, 65538, 524319, 1, 65538, 524320, 1, 131074, 524321, 1, 131074, 524322, 1, 131074, 524323, 1, 131074, 524324, 1, 131075, 524331, 1, 65537, 524332, 1, 65539, 524343, 1, 131073, 524344, 1, 131074, 524345, 1, 131075, 524350, 1, 65537, 524351, 1, 65538, 524352, 1, 131074, 524353, 1, 131075, 524356, 1, 65536, 524364, 1, 196608, 524383, 1, 65536, 589839, 1, 1, 589840, 1, 196610, 589841, 1, 196610, 589842, 1, 196611, 589851, 1, 1, 589852, 1, 65538, 589853, 1, 131074, 589854, 1, 131074, 589855, 1, 131075, 589867, 1, 65537, 589868, 1, 65539, 589886, 1, 131073, 589887, 1, 131075, 589892, 1, 65536, 589907, 3, 0, 589917, 3, 0, 589919, 1, 65536, 655364, 1, 196609, 655365, 1, 196611, 655369, 1, 196609, 655370, 1, 196611, 655375, 1, 65536, 655380, 3, 0, 655386, 3, 0, 655387, 1, 65537, 655388, 1, 65539, 655403, 1, 65537, 655404, 1, 65539, 655428, 1, 65536, 655441, 1, 196609, 655442, 1, 196610, 655443, 1, 2, 655444, 1, 196610, 655445, 1, 196610, 655446, 1, 196610, 655447, 1, 196610, 655448, 1, 196610, 655449, 1, 196610, 655450, 1, 196610, 655451, 1, 196610, 655452, 1, 196610, 655453, 1, 196610, 655454, 1, 196610, 655455, 1, 131075, 720911, 1, 65536, 720916, 1, 1, 720917, 1, 196610, 720918, 1, 196610, 720919, 1, 196610, 720920, 1, 196610, 720921, 1, 196610, 720922, 1, 196610, 720923, 1, 131074, 720924, 1, 131075, 720939, 1, 65537, 720940, 1, 65539, 720964, 1, 65536, 720979, 1, 65536, 786447, 1, 131073, 786448, 1, 196610, 786449, 1, 196610, 786450, 1, 196610, 786451, 1, 196610, 786452, 1, 131075, 786475, 1, 65537, 786476, 1, 65539, 786500, 1, 65536, 786515, 1, 65536, 852002, 1, 0, 852004, 1, 196609, 852005, 1, 196610, 852006, 1, 196611, 852011, 1, 65537, 852012, 1, 65538, 852013, 1, 2, 852014, 1, 2, 852015, 1, 2, 852016, 1, 2, 852017, 1, 3, 852020, 1, 196609, 852021, 1, 196610, 852022, 1, 196610, 852023, 1, 196611, 852036, 1, 65536, 852051, 1, 65536, 917510, 3, 0, 917514, 3, 0, 917534, 1, 1, 917535, 1, 2, 917536, 1, 196610, 917537, 1, 196610, 917538, 1, 131075, 917544, 1, 196609, 917545, 1, 2, 917546, 1, 2, 917547, 1, 65538, 917548, 1, 65538, 917549, 1, 131074, 917550, 1, 131074, 917551, 1, 131074, 917552, 1, 131074, 917553, 1, 131075, 917572, 1, 65536, 917583, 1, 196609, 917584, 1, 196610, 917585, 1, 196610, 917586, 1, 196610, 917587, 1, 131075, 1048575, 1, 196609, 983040, 1, 196611, 983043, 1, 1, 983044, 1, 196610, 983045, 1, 196610, 983046, 1, 196610, 983047, 1, 196610, 983048, 1, 196610, 983049, 1, 196610, 983050, 1, 196610, 983051, 1, 196611, 983060, 3, 0, 983066, 3, 0, 983070, 1, 65537, 983071, 1, 65539, 983081, 1, 131073, 983082, 1, 131074, 983083, 1, 131074, 983084, 1, 131075, 983099, 1, 196609, 983100, 1, 196610, 983101, 1, 196610, 983102, 1, 196610, 983103, 1, 196610, 983104, 1, 196610, 983105, 1, 196610, 983106, 1, 196610, 983107, 1, 196610, 983108, 1, 131074, 983109, 1, 196610, 983110, 1, 196610, 983111, 1, 196610, 983112, 1, 196611, 983113, 0, 196608, 983114, 0, 196608, 983115, 1, 0, 983133, 1, 196609, 983134, 1, 196610, 983135, 1, 196611, 1048579, 1, 65536, 1048591, 1, 196609, 1048592, 1, 196610, 1048593, 1, 196610, 1048594, 1, 196610, 1048595, 1, 196610, 1048596, 1, 196610, 1048597, 1, 196610, 1048598, 1, 196610, 1048599, 1, 196610, 1048600, 1, 196610, 1048601, 1, 196610, 1048602, 1, 196610, 1048603, 1, 196610, 1048604, 1, 196610, 1048605, 1, 196610, 1048606, 1, 131074, 1048607, 1, 131075, 1048651, 1, 65536, 1048661, 1, 1, 1048662, 1, 2, 1048663, 1, 3, 1048665, 1, 196609, 1048666, 1, 196611, 1114115, 1, 65536, 1114187, 1, 65536, 1114191, 1, 1, 1114192, 1, 2, 1114193, 1, 2, 1114194, 1, 2, 1114195, 1, 2, 1114196, 1, 196610, 1114197, 1, 131074, 1114198, 1, 65538, 1114199, 1, 65539, 1114204, 1, 1, 1114205, 1, 196610, 1114206, 1, 196610, 1114207, 1, 196611, 1179649, 1, 196609, 1179650, 1, 196610, 1179651, 1, 131075, 1179697, 3, 0, 1179723, 1, 65536, 1179727, 1, 65537, 1179728, 1, 65538, 1179729, 1, 65538, 1179730, 1, 65538, 1179731, 1, 65539, 1179734, 1, 65537, 1179735, 1, 65538, 1179736, 1, 2, 1179737, 1, 2, 1179738, 1, 2, 1179739, 1, 2, 1179740, 1, 65539, 1245230, 1, 196609, 1245231, 1, 196610, 1245232, 1, 196610, 1245233, 1, 196610, 1245234, 1, 196611, 1245259, 1, 65536, 1245263, 1, 131073, 1245264, 1, 131074, 1245265, 1, 131074, 1245266, 1, 131074, 1245267, 1, 131075, 1245270, 1, 131073, 1245271, 1, 131074, 1245272, 1, 131074, 1245273, 1, 131074, 1245274, 1, 131074, 1245275, 1, 131074, 1245276, 1, 131075, 1310756, 1, 1, 1310757, 1, 2, 1310758, 1, 2, 1310759, 1, 2, 1310760, 1, 2, 1310761, 1, 2, 1310762, 1, 2, 1310763, 1, 2, 1310764, 1, 3, 1310776, 1, 196609, 1310777, 1, 196610, 1310778, 1, 196610, 1310779, 1, 196611, 1310781, 3, 0, 1310795, 1, 65536, 1376263, 3, 0, 1376274, 3, 0, 1376282, 3, 0, 1376291, 1, 1, 1376292, 1, 65538, 1376293, 1, 65538, 1376294, 1, 65538, 1376295, 1, 65538, 1376296, 1, 65538, 1376297, 1, 65538, 1376298, 1, 65538, 1376299, 1, 65538, 1376300, 1, 65539, 1376307, 1, 1, 1376308, 1, 2, 1376309, 1, 2, 1376310, 1, 3, 1376317, 1, 1, 1376318, 1, 3, 1376331, 1, 65536, 1507327, 1, 1, 1441792, 1, 2, 1441793, 1, 2, 1441794, 1, 2, 1441795, 1, 2, 1441796, 1, 2, 1441797, 1, 2, 1441798, 1, 2, 1441799, 1, 2, 1441800, 1, 2, 1441801, 1, 2, 1441802, 1, 2, 1441803, 1, 2, 1441804, 1, 2, 1441805, 1, 2, 1441806, 1, 2, 1441807, 1, 2, 1441808, 1, 2, 1441809, 1, 2, 1441810, 1, 2, 1441811, 1, 2, 1441812, 1, 2, 1441813, 1, 2, 1441814, 1, 2, 1441815, 1, 2, 1441816, 1, 2, 1441817, 1, 2, 1441818, 1, 2, 1441819, 1, 2, 1441820, 1, 2, 1441821, 1, 2, 1441822, 1, 2, 1441823, 1, 2, 1441824, 1, 2, 1441825, 1, 2, 1441826, 1, 2, 1441827, 1, 65538, 1441828, 1, 65538, 1441829, 1, 65538, 1441830, 1, 65538, 1441831, 1, 65538, 1441832, 1, 65538, 1441833, 1, 65538, 1441834, 1, 65538, 1441835, 1, 65538, 1441836, 1, 65538, 1441837, 1, 2, 1441838, 1, 2, 1441839, 1, 2, 1441840, 1, 2, 1441841, 1, 2, 1441842, 1, 2, 1441843, 1, 65538, 1441844, 1, 65538, 1441845, 1, 65538, 1441846, 1, 65538, 1441847, 1, 2, 1441848, 1, 2, 1441849, 1, 2, 1441850, 1, 2, 1441851, 1, 2, 1441852, 1, 2, 1441853, 1, 65538, 1441854, 1, 65538, 1441855, 1, 2, 1441856, 1, 2, 1441857, 1, 2, 1441858, 1, 2, 1441859, 1, 2, 1441860, 1, 2, 1441861, 1, 2, 1441862, 1, 2, 1441863, 1, 2, 1441864, 1, 2, 1441865, 1, 2, 1441866, 1, 2, 1441867, 1, 65538, 1441868, 1, 2, 1441869, 1, 2, 1441870, 1, 2, 1441871, 1, 2, 1441872, 1, 2, 1441873, 1, 2, 1441874, 1, 2, 1441875, 1, 2, 1441876, 1, 2, 1441877, 1, 2, 1441878, 1, 2, 1441879, 1, 2, 1441880, 1, 2, 1441881, 1, 2, 1441882, 1, 2, 1441883, 1, 2, 1441884, 1, 2, 1441885, 1, 2, 1441886, 1, 2, 1441887, 1, 2, 1441888, 1, 3, 1572863, 1, 65537, 1507328, 1, 65538, 1507329, 1, 65538, 1507330, 1, 65538, 1507331, 1, 65538, 1507332, 1, 65538, 1507333, 1, 65538, 1507334, 1, 65538, 1507335, 1, 65538, 1507336, 1, 65538, 1507337, 1, 65538, 1507338, 1, 65538, 1507339, 1, 65538, 1507340, 1, 65538, 1507341, 1, 65538, 1507342, 1, 65538, 1507343, 1, 65538, 1507344, 1, 65538, 1507345, 1, 65538, 1507346, 1, 65538, 1507347, 1, 65538, 1507348, 1, 65538, 1507349, 1, 65538, 1507350, 1, 65538, 1507351, 1, 65538, 1507352, 1, 65538, 1507353, 1, 65538, 1507354, 1, 65538, 1507355, 1, 65538, 1507356, 1, 65538, 1507357, 1, 65538, 1507358, 1, 65538, 1507359, 1, 65538, 1507360, 1, 65538, 1507361, 1, 65538, 1507362, 1, 65538, 1507363, 1, 65538, 1507364, 1, 65538, 1507365, 1, 65538, 1507366, 1, 65538, 1507367, 1, 65538, 1507368, 1, 65538, 1507369, 1, 65538, 1507370, 1, 65538, 1507371, 1, 65538, 1507372, 1, 65538, 1507373, 1, 65538, 1507374, 1, 65538, 1507375, 1, 65538, 1507376, 1, 65538, 1507377, 1, 65538, 1507378, 1, 65538, 1507379, 1, 65538, 1507380, 1, 65538, 1507381, 1, 65538, 1507382, 1, 65538, 1507383, 1, 65538, 1507384, 1, 65538, 1507385, 1, 65538, 1507386, 1, 65538, 1507387, 1, 65538, 1507388, 1, 65538, 1507389, 1, 65538, 1507390, 1, 65538, 1507391, 1, 65538, 1507392, 1, 65538, 1507393, 1, 65538, 1507394, 1, 65538, 1507395, 1, 65538, 1507396, 1, 65538, 1507397, 1, 65538, 1507398, 1, 65538, 1507399, 1, 65538, 1507400, 1, 65538, 1507401, 1, 65538, 1507402, 1, 65538, 1507403, 1, 65538, 1507404, 1, 65538, 1507405, 1, 65538, 1507406, 1, 65538, 1507407, 1, 65538, 1507408, 1, 65538, 1507409, 1, 65538, 1507410, 1, 65538, 1507411, 1, 65538, 1507412, 1, 65538, 1507413, 1, 65538, 1507414, 1, 65538, 1507415, 1, 65538, 1507416, 1, 65538, 1507417, 1, 65538, 1507418, 1, 65538, 1507419, 1, 65538, 1507420, 1, 65538, 1507421, 1, 65538, 1507422, 1, 65538, 1507423, 1, 65538, 1507424, 1, 65539, 1638399, 1, 131073, 1572864, 1, 131074, 1572865, 1, 131074, 1572866, 1, 131074, 1572867, 1, 131074, 1572868, 1, 131074, 1572869, 1, 131074, 1572870, 1, 131074, 1572871, 1, 131074, 1572872, 1, 131074, 1572873, 1, 131074, 1572874, 1, 131074, 1572875, 1, 131074, 1572876, 1, 131074, 1572877, 1, 131074, 1572878, 1, 131074, 1572879, 1, 131074, 1572880, 1, 131074, 1572881, 1, 131074, 1572882, 1, 131074, 1572883, 1, 131074, 1572884, 1, 131074, 1572885, 1, 131074, 1572886, 1, 131074, 1572887, 1, 131074, 1572888, 1, 131074, 1572889, 1, 131074, 1572890, 1, 131074, 1572891, 1, 131074, 1572892, 1, 131074, 1572893, 1, 131074, 1572894, 1, 131074, 1572895, 1, 131074, 1572896, 1, 131074, 1572897, 1, 131074, 1572898, 1, 131074, 1572899, 1, 131074, 1572900, 1, 131074, 1572901, 1, 131074, 1572902, 1, 131074, 1572903, 1, 131074, 1572904, 1, 131074, 1572905, 1, 131074, 1572906, 1, 131074, 1572907, 1, 131074, 1572908, 1, 131074, 1572909, 1, 131074, 1572910, 1, 131074, 1572911, 1, 131074, 1572912, 1, 131074, 1572913, 1, 131074, 1572914, 1, 131074, 1572915, 1, 131074, 1572916, 1, 131074, 1572917, 1, 131074, 1572918, 1, 131074, 1572919, 1, 131074, 1572920, 1, 131074, 1572921, 1, 131074, 1572922, 1, 131074, 1572923, 1, 131074, 1572924, 1, 131074, 1572925, 1, 131074, 1572926, 1, 131074, 1572927, 1, 131074, 1572928, 1, 131074, 1572929, 1, 131074, 1572930, 1, 131074, 1572931, 1, 131074, 1572932, 1, 131074, 1572933, 1, 131074, 1572934, 1, 131074, 1572935, 1, 131074, 1572936, 1, 131074, 1572937, 1, 131074, 1572938, 1, 131074, 1572939, 1, 131074, 1572940, 1, 131074, 1572941, 1, 131074, 1572942, 1, 131074, 1572943, 1, 131074, 1572944, 1, 131074, 1572945, 1, 131074, 1572946, 1, 131074, 1572947, 1, 131074, 1572948, 1, 131074, 1572949, 1, 131074, 1572950, 1, 131074, 1572951, 1, 131074, 1572952, 1, 131074, 1572953, 1, 131074, 1572954, 1, 131074, 1572955, 1, 131074, 1572956, 1, 131074, 1572957, 1, 131074, 1572958, 1, 131074, 1572959, 1, 131074, 1572960, 1, 131075, 2490371, 1, 0, 2490386, 1, 0, 2555907, 1, 65536, 2555922, 1, 65536, 2621441, 1, 196609, 2621442, 1, 196610, 2621443, 1, 131075, 2621448, 1, 196608, 2621453, 1, 196608, 2621458, 1, 131073, 2621459, 1, 196610, 2621460, 1, 196611, 2686980, 1, 0, 2686993, 1, 0, 2752516, 1, 131072, 2752529, 1, 131072, 2818053, 1, 196608, 2818064, 1, 196608, 2883590, 1, 196609, 2883591, 1, 196610, 2883592, 1, 2, 2883593, 1, 196610, 2883594, 1, 196610, 2883595, 1, 2, 2883596, 1, 196610, 2883597, 1, 2, 2883598, 1, 196610, 2883599, 1, 196611, 2949128, 1, 65536, 2949131, 1, 65536, 2949133, 1, 65536, 3014664, 1, 65536, 3014667, 1, 131072, 3014669, 1, 65536, 3080200, 1, 65536, 3080205, 1, 65536, 3145736, 1, 131072, 3145741, 1, 131072, 3211273, 1, 196609, 3211274, 1, 196610, 3211275, 1, 196610, 3211276, 1, 196611 ) + +[node name="Ore" type="TileMap" parent="."] +tile_set = ExtResource( 2 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 524320, 0, 196610, 524323, 0, 196609, 524324, 0, 196609, 524350, 0, 196610, 589854, 0, 196609, 852014, 0, 196610, 917547, 0, 196609, 917552, 0, 196609, 983071, 0, 196610, 1114198, 0, 196610, 1179728, 0, 196609, 1179729, 0, 196609, 1179737, 0, 196610, 1376294, 0, 196609, 1376295, 0, 196609, 1376298, 0, 196610, 1441828, 0, 196609, 1441846, 0, 196610, 1441851, 0, 196610, 1441860, 0, 196610, 1441876, 0, 196610, 1507337, 0, 196609, 1507341, 0, 196609, 1507346, 0, 196609, 1507347, 0, 196610, 1507354, 0, 196610, 1507364, 0, 196609, 1507365, 0, 196609, 1507370, 0, 196609, 1507373, 0, 196610, 1507376, 0, 196609, 1507377, 0, 196609, 1507378, 0, 196609, 1507386, 0, 196609, 1507393, 0, 196609, 1507401, 0, 196609, 1507402, 0, 196609, 1507406, 0, 196610, 1507409, 0, 196609, 1507410, 0, 196609, 1507418, 0, 196609, 1507421, 0, 196610 ) + +[node name="Player" parent="." instance=ExtResource( 1 )] +position = Vector2( 32, 176 ) + +[node name="Ladder" type="TileMap" parent="."] +tile_set = ExtResource( 22 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 9 +format = 1 +tile_data = PoolIntArray( 524330, 0, 65536, 524333, 0, 65536, 589866, 0, 65537, 589869, 0, 65537, 589891, 0, 65536, 589893, 0, 65536, 655402, 0, 65537, 655405, 0, 65537, 655427, 0, 65537, 655429, 0, 65537, 720938, 0, 65537, 720941, 0, 65537, 720963, 0, 65537, 720965, 0, 65537, 786445, 0, 65536, 786474, 0, 65537, 786477, 0, 65538, 786499, 0, 65537, 786501, 0, 65537, 851981, 0, 65537, 852010, 0, 65538, 852035, 0, 65537, 852037, 0, 65537, 917517, 0, 65537, 917571, 0, 65538, 917573, 0, 65538, 983053, 0, 65537, 1048589, 0, 65537, 1048650, 0, 65536, 1048652, 0, 65536, 1114125, 0, 65537, 1114186, 0, 65537, 1114188, 0, 65537, 1179661, 0, 65537, 1179722, 0, 65537, 1179724, 0, 65537, 1245197, 0, 65537, 1245258, 0, 65537, 1245260, 0, 65537, 1310733, 0, 65537, 1310794, 0, 65537, 1310796, 0, 65537, 1376269, 0, 65538, 1376330, 0, 65538, 1376332, 0, 65538 ) + +[node name="Death" type="TileMap" parent="." groups=["death"]] +light_mask = 0 +tile_set = ExtResource( 5 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1179695, 1, 0, 1245226, 1, 0, 1245240, 1, 0, 1245243, 1, 0 ) + +[node name="Environment" type="Node2D" parent="."] + +[node name="FallingBlock" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 0, 144 ) + +[node name="FallingBlock2" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 64, 80 ) + +[node name="FallingBlock9" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 616, 48 ) + +[node name="FallingBlock12" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 648, 40 ) + +[node name="FallingBlock10" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 624, 48 ) + +[node name="FallingBlock11" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 632, 48 ) + +[node name="FallingBlock3" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 56, 80 ) + +[node name="FallingBlock7" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 456, 112 ) + +[node name="FallingBlock6" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 168, 56 ) + +[node name="FallingBlock8" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 376, 56 ) + +[node name="FallingBlock5" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 16, 64 ) + +[node name="FallingBlock4" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 48, 80 ) + +[node name="Ladder" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 104, 96 ) +scale = Vector2( 1, 10 ) + +[node name="Ladder2" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 336, 64 ) +scale = Vector2( 1, 6 ) +can_climb_right = false + +[node name="Ladder4" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 536, 72 ) +scale = Vector2( 1, 6 ) +can_climb_right = false + +[node name="Ladder5" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 552, 72 ) +scale = Vector2( 1, 6 ) +can_climb_left = false + +[node name="Ladder6" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 592, 128 ) +scale = Vector2( 1, 6 ) +can_climb_right = false + +[node name="Ladder7" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 608, 128 ) +scale = Vector2( 1, 6 ) +can_climb_left = false + +[node name="Ladder3" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 360, 64 ) +scale = Vector2( 1, 5 ) +can_climb_left = false + +[node name="Stalactite" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 64, 16 ) + +[node name="Stalactite6" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 64, 128 ) + +[node name="Stalactite2" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 120, 16 ) + +[node name="Stalactite4" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 136, 136 ) + +[node name="Stalactite3" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 192, 16 ) + +[node name="Stalactite7" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 176, 96 ) + +[node name="Stalactite11" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 320, 120 ) + +[node name="Stalactite9" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 296, 64 ) + +[node name="Stalactite10" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 424, 64 ) + +[node name="Stalactite13" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 528, 128 ) + +[node name="Stalactite14" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 544, 128 ) + +[node name="Stalactite15" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 560, 128 ) + +[node name="Stalactite12" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 408, 16 ) + +[node name="Stalactite16" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 712, 88 ) + +[node name="Stalactite17" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 720, 88 ) + +[node name="Barrier" parent="Environment" instance=ExtResource( 23 )] +position = Vector2( 144, 80 ) +scale = Vector2( 1, 16 ) +cost = 20 + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Bat2" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 16, 120 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 + +[node name="Bat4" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 480, 104 ) +left_up_boundary = 5.0 +right_down_boundary = 2.0 + +[node name="Bat3" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 20, 64 ) +left_up_boundary = 3.0 +right_down_boundary = 4.0 +speed = 60 + +[node name="RollingFiend2" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 112, 40 ) + +[node name="RollingFiend3" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 296, 96 ) + +[node name="RollingFiend4" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 432, 96 ) + +[node name="RollingFiend6" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 456, 152 ) + +[node name="RollingFiend7" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 592, 40 ) + +[node name="RollingFiend8" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 712, 120 ) + +[node name="RollingFiend5" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 376, 160 ) + +[node name="Snail" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 64, 112 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 + +[node name="Snail2" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 192, 168 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 + +[node name="Snail6" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 632, 168 ) +right_down_boundary = 14.0 + +[node name="Snail4" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 400, 48 ) +right_down_boundary = 6.0 + +[node name="Snail3" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 192, 120 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 + +[node name="Tentacle" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 568, 152 ) + +[node name="Bat8" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 576, 40 ) +left_up_boundary = 4.0 +right_down_boundary = 5.0 + +[node name="Snail5" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 696, 48 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 +slower_speed = 40 +faster_speed = 100 + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Shard" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 8, 136 ) + +[node name="Shard2" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 520, 112 ) +number = 1 + +[node name="Shard3" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 728, 48 ) +number = 2 + +[node name="Shard4" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 760, 168 ) +number = 3 + +[node name="Key" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 144, 120 ) + +[node name="Key3" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 48, 168 ) + +[node name="Key4" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 80, 168 ) + +[node name="Key28" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 264, 168 ) + +[node name="Key29" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 280, 160 ) + +[node name="Key30" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 304, 152 ) + +[node name="Key31" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 344, 152 ) + +[node name="Key32" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 520, 168 ) + +[node name="Key33" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 400, 144 ) + +[node name="Key34" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 408, 160 ) + +[node name="Key8" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 40, 40 ) + +[node name="Key9" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 80, 40 ) + +[node name="Key10" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 80, 72 ) + +[node name="Key11" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 32, 72 ) + +[node name="Key12" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 104, 40 ) + +[node name="Key13" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 144, 40 ) + +[node name="Key14" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 192, 48 ) + +[node name="Key15" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 224, 48 ) + +[node name="Key16" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 248, 48 ) + +[node name="Key17" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 272, 48 ) + +[node name="Key18" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 296, 48 ) + +[node name="Key19" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 544, 168 ) + +[node name="Key20" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 216, 120 ) + +[node name="Key21" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 240, 104 ) + +[node name="Key22" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 376, 96 ) + +[node name="Key25" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 376, 48 ) + +[node name="Key26" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 408, 48 ) + +[node name="Key27" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 440, 48 ) + +[node name="Key35" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 472, 48 ) + +[node name="Key36" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 504, 48 ) + +[node name="Key37" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 496, 160 ) + +[node name="Key38" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 432, 160 ) + +[node name="Key39" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 632, 128 ) + +[node name="Key40" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 672, 128 ) + +[node name="Key48" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 120, 168 ) + +[node name="Key49" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 168, 168 ) + +[node name="Key50" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 224, 168 ) + +[node name="Key41" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 688, 120 ) + +[node name="Key42" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 592, 40 ) + +[node name="Key43" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 664, 32 ) + +[node name="Key44" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 664, 168 ) + +[node name="Key46" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 696, 168 ) + +[node name="Key47" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 728, 168 ) + +[node name="Key45" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 632, 168 ) + +[node name="Key24" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 496, 112 ) + +[node name="Key23" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 424, 96 ) + +[node name="Key5" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 88, 112 ) + +[node name="Key6" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 24, 112 ) + +[node name="Key7" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 56, 112 ) + +[node name="Key2" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 632, 104 ) + +[node name="Star" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 128, 88 ) + +[node name="Star2" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 392, 168 ) +color = 2 + +[node name="Star3" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 320, 104 ) +color = 1 + +[node name="Star4" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 584, 168 ) +color = 3 + +[node name="Arrow" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 124, 40 ) + +[node name="Arrow2" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 720, 72 ) + +[node name="Star5" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 752, 112 ) +color = 4 + +[node name="Sparkles" type="Node2D" parent="."] + +[node name="Green" type="Node2D" parent="Sparkles"] + +[node name="Sparkles" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 108, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles2" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 148, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles3" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 76, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles4" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 292, 180 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles5" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 300, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles6" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 292, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles7" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 308, 172 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles8" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 316, 172 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles9" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 340, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles10" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 388, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles11" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 396, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles12" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 404, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles13" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 468, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles14" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 588, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles15" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 596, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles16" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 652, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles17" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 660, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles18" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 724, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles19" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 652, 148 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles20" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 644, 148 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles21" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 292, 68 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles22" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 284, 68 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles23" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 244, 76 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Red" type="Node2D" parent="Sparkles"] + +[node name="Sparkles24" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 156, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles25" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 212, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles26" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 260, 68 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles27" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 252, 124 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles28" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 372, 108 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles29" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 340, 172 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles30" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 364, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles31" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 436, 180 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles32" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 476, 180 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles33" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 500, 68 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles34" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 548, 180 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles35" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 628, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles36" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 676, 180 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles37" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 748, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles38" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 716, 148 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles39" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 692, 140 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( -4, 96 ) +shape = SubResource( 1 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 772, 96 ) +shape = SubResource( 1 ) + +[node name="ColorRect" type="ColorRect" parent="."] +margin_left = 256.0 +margin_right = 512.0 +margin_bottom = 192.0 +color = Color( 0, 1, 0.180392, 0.0627451 ) +script = ExtResource( 19 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect2" type="ColorRect" parent="."] +margin_left = 512.0 +margin_right = 768.0 +margin_bottom = 192.0 +color = Color( 1, 0, 0.890196, 0.0627451 ) +script = ExtResource( 19 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Exit" parent="." instance=ExtResource( 24 )] +position = Vector2( 656, 100 ) +cost = 25 + +[node name="SpeccyArea" type="Area2D" parent="."] +position = Vector2( 536, 176 ) +collision_layer = 0 +collision_mask = 128 +monitorable = false +script = ExtResource( 34 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SpeccyArea"] +position = Vector2( 4, -20 ) +shape = SubResource( 3 ) + +[node name="Speccy" parent="SpeccyArea" instance=ExtResource( 33 )] +position = Vector2( 64, -56 ) +flip = true +message = "shoot_that_thing" + +[connection signal="body_entered" from="SpeccyArea" to="SpeccyArea" method="_on_body_entered"] diff --git a/maps/cave_speccy_detector.gd b/maps/cave_speccy_detector.gd new file mode 100644 index 0000000..192e595 --- /dev/null +++ b/maps/cave_speccy_detector.gd @@ -0,0 +1,10 @@ +extends Area2D + + +var speccy_urgent_warning: bool = true + + +func _on_body_entered(body: Node) -> void: + if speccy_urgent_warning: + $Speccy.appear() + speccy_urgent_warning = false diff --git a/maps/copper.tscn b/maps/copper.tscn deleted file mode 100644 index 962580d..0000000 --- a/maps/copper.tscn +++ /dev/null @@ -1,28 +0,0 @@ -[gd_scene load_steps=6 format=2] - -[ext_resource path="res://graphics/backgrounds/copper.png" type="Texture" id=1] -[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=2] -[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=3] -[ext_resource path="res://maps/map.gd" type="Script" id=4] -[ext_resource path="res://tilesets/t_copper.tres" type="TileSet" id=5] - -[node name="Map" type="Node2D" groups=["map"]] -pause_mode = 1 -script = ExtResource( 4 ) -save_location = 3 - -[node name="Camera2D" parent="." instance=ExtResource( 3 )] - -[node name="Sprite" type="Sprite" parent="Camera2D"] -position = Vector2( 128, 96 ) -z_index = -2 -texture = ExtResource( 1 ) - -[node name="Player" parent="." instance=ExtResource( 2 )] -position = Vector2( 32, 152 ) - -[node name="TileMap" type="TileMap" parent="."] -tile_set = ExtResource( 5 ) -cell_size = Vector2( 8, 8 ) -format = 1 -tile_data = PoolIntArray( 1310731, 0, 65536, 1310732, 0, 65537, 1310733, 0, 65537, 1310734, 0, 65538, 1441792, 0, 65539, 1441793, 0, 65539, 1441794, 0, 65539, 1441795, 0, 65539, 1441796, 0, 65539, 1441797, 0, 65539, 1441798, 0, 65539, 1441799, 0, 65539, 1441800, 0, 65539, 1441801, 0, 65539, 1441802, 0, 65539, 1441803, 0, 65539, 1441804, 0, 65539, 1441805, 0, 65539, 1441806, 0, 65539, 1441807, 0, 65539, 1441808, 0, 65539, 1441809, 0, 65539, 1441810, 0, 65539, 1441811, 0, 65539, 1441812, 0, 65539, 1441813, 0, 65539, 1441814, 0, 65539, 1441815, 0, 65539, 1441816, 0, 65539, 1441817, 0, 65539, 1441818, 0, 65539, 1441819, 0, 65539, 1441820, 0, 65539, 1441821, 0, 65539, 1441822, 0, 65539, 1441823, 0, 65539, 1507328, 0, 65539, 1507329, 0, 65539, 1507330, 0, 65539, 1507331, 0, 65539, 1507332, 0, 65539, 1507333, 0, 65539, 1507334, 0, 65539, 1507335, 0, 65539, 1507336, 0, 65539, 1507337, 0, 65539, 1507338, 0, 65539, 1507339, 0, 65539, 1507340, 0, 65539, 1507341, 0, 65539, 1507342, 0, 65539, 1507343, 0, 65539, 1507344, 0, 65539, 1507345, 0, 65539, 1507346, 0, 65539, 1507347, 0, 65539, 1507348, 0, 65539, 1507349, 0, 65539, 1507350, 0, 65539, 1507351, 0, 65539, 1507352, 0, 65539, 1507353, 0, 65539, 1507354, 0, 65539, 1507355, 0, 65539, 1507356, 0, 65539, 1507357, 0, 65539, 1507358, 0, 65539, 1507359, 0, 65539 ) diff --git a/maps/demo_end.tscn b/maps/demo_end.tscn deleted file mode 100644 index 51e4a54..0000000 --- a/maps/demo_end.tscn +++ /dev/null @@ -1,30 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://maps/demo_end.gd" type="Script" id=1] - -[node name="DemoEnd" type="Node2D"] -script = ExtResource( 1 ) - -[node name="ColorRect" type="ColorRect" parent="."] -margin_right = 259.0 -margin_bottom = 196.0 -color = Color( 0, 0, 0, 1 ) - -[node name="Label" type="Label" parent="."] -margin_left = 13.0 -margin_top = 24.0 -margin_right = 112.0 -margin_bottom = 38.0 -text = "Congratulations! you beat the demo! -Your high score is: - - - -Press \"R\" to play again!" - -[node name="Score" type="Label" parent="."] -margin_left = 136.0 -margin_top = 41.0 -margin_right = 235.0 -margin_bottom = 55.0 -text = "000000" diff --git a/maps/factory.tscn b/maps/factory.tscn deleted file mode 100644 index 911a72b..0000000 --- a/maps/factory.tscn +++ /dev/null @@ -1,115 +0,0 @@ -[gd_scene load_steps=11 format=2] - -[ext_resource path="res://maps/map.gd" type="Script" id=1] -[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=2] -[ext_resource path="res://graphics/backgrounds/factory.png" type="Texture" id=3] -[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=4] -[ext_resource path="res://tilesets/t_factory.tres" type="TileSet" id=5] -[ext_resource path="res://objects/environment/tube/tube_entrance.tscn" type="PackedScene" id=6] -[ext_resource path="res://objects/environment/tube/tube_exit.tscn" type="PackedScene" id=7] -[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=9] -[ext_resource path="res://objects/environment/turret/turret.tscn" type="PackedScene" id=10] - -[sub_resource type="RectangleShape2D" id=5] -extents = Vector2( 8, 16 ) - -[node name="Map" type="Node2D" groups=["map"]] -script = ExtResource( 1 ) - -[node name="Sectors" type="CanvasLayer" parent="."] -layer = -100 -visible = false - -[node name="ColorRect" type="ColorRect" parent="Sectors"] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 256.0 -margin_right = 256.0 -color = Color( 1, 0, 0.960784, 0.121569 ) - -[node name="ColorRect4" type="ColorRect" parent="Sectors"] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 256.0 -margin_top = 192.0 -margin_right = 256.0 -margin_bottom = 192.0 -color = Color( 0.101961, 1, 0, 0.121569 ) - -[node name="ColorRect3" type="ColorRect" parent="Sectors"] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 256.0 -margin_top = -192.0 -margin_right = 256.0 -margin_bottom = -192.0 -color = Color( 1, 0, 0, 0.121569 ) - -[node name="ColorRect2" type="ColorRect" parent="Sectors"] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 512.0 -margin_right = 512.0 -color = Color( 0, 0.0627451, 1, 0.121569 ) - -[node name="BackgroundLayer" type="CanvasLayer" parent="."] -layer = -50 - -[node name="Sprite" type="Sprite" parent="BackgroundLayer"] -texture = ExtResource( 3 ) -centered = false - -[node name="Camera2D" parent="." instance=ExtResource( 2 )] -scroll_v = true - -[node name="Player" parent="." instance=ExtResource( 4 )] -position = Vector2( 24, 136 ) -__meta__ = { -"_edit_group_": true -} - -[node name="Ground" type="TileMap" parent="."] -tile_set = ExtResource( 5 ) -cell_size = Vector2( 8, 8 ) -format = 1 -tile_data = PoolIntArray( -65523, 1610612739, 0, -65512, 1610612738, 0, -65509, 1610612737, 0, -65508, 1610612737, 0, -65507, 1610612737, 0, -65506, 1610612737, 0, -65505, 1610612737, 0, -65504, 1610612737, 0, -65503, 1610612737, 0, -65502, 1610612737, 0, 13, 1610612739, 0, 65549, 1610612739, 0, 65554, 0, 0, 65555, 0, 2, 65556, 0, 0, 131085, 1610612739, 0, 131090, -1073741824, 2, 131091, 0, 65536, 131092, -1073741824, 2, 131096, 3, 0, 196621, 1610612739, 0, 196626, 0, 0, 196627, 0, 2, 196628, 0, 0, 196632, 3, 0, 262145, 1610612738, 0, 262148, 1, 0, 262149, 1, 0, 262150, 1, 0, 262151, 1, 0, 262152, 1, 0, 262153, 1, 0, 262154, 1, 0, 262155, 1, 0, 262156, 1, 0, 262157, 2, 0, 262168, 3, 0, 327696, 1610612738, 0, 327699, 1, 0, 327700, 1, 0, 327701, 1, 0, 327702, 1, 0, 327703, 1, 0, 327704, 2, 0, 393233, 0, 65536, 393241, 0, 0, 458753, 1610612739, 0, 524289, 1610612739, 0, 524292, 1610612738, 0, 524295, 1, 0, 524296, 1, 0, 524297, 1, 0, 524298, 1, 0, 524299, 1, 0, 524300, 1, 0, 524301, 1, 0, 524302, 1, 0, 524303, 1, 0, 524304, 1, 0, 524305, 1, 0, 524306, 1, 0, 524307, 1, 0, 524308, 1, 0, 524309, -1073741822, 0, 589825, 1610612739, 0, 655361, 1610612739, 0, 720897, 1610612739, 0, 720900, 3, 0, 720917, 3, 0, 786433, 1610612739, 0, 786436, 3, 0, 786453, 3, 0, 851969, 1610612739, 0, 851989, 3, 0, 917517, 1, 0, 917518, 1, 0, 917519, 1, 0, 917520, 1, 0, 917521, 1, 0, 917522, 1, 0, 917523, 1, 0, 917524, 1, 0, 917525, 2, 0, 1114122, 0, 0, 1114123, 0, 2, 1114124, 0, 2, 1114125, 0, 0, 1179658, -1073741824, 2, 1179659, 0, 65536, 1179660, 0, 65536, 1179661, -1073741824, 2, 1245194, 0, 0, 1245195, 0, 2, 1245196, 0, 2, 1245197, 0, 0, 1310721, 0, 1, 1310722, 0, 2, 1310723, 0, 2, 1310724, 0, 2, 1310725, 0, 2, 1310726, 0, 2, 1310727, 0, 2, 1310728, 0, 2, 1310729, 0, 3 ) - -[node name="Ladder2" type="TileMap" parent="."] -tile_set = ExtResource( 5 ) -cell_size = Vector2( 8, 8 ) -format = 1 -tile_data = PoolIntArray( 1114119, 0, 131072, 1179655, 0, 131072, 1245191, 0, 131072 ) - -[node name="Ladder" parent="." instance=ExtResource( 9 )] -position = Vector2( 56, 136 ) -scale = Vector2( 1, 3 ) - -[node name="Turret" parent="." instance=ExtResource( 10 )] -position = Vector2( 96, 160 ) - -[node name="Area2D" type="Area2D" parent="."] -position = Vector2( 8, 160 ) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] -position = Vector2( 0, -16 ) -shape = SubResource( 5 ) - -[node name="TubeEntrance" parent="." instance=ExtResource( 6 )] -position = Vector2( 104, 120 ) - -[node name="TubeEntrance2" parent="." instance=ExtResource( 6 )] -position = Vector2( 176, 120 ) -direction = Vector2( 0, -1 ) - -[node name="TubeEntrance3" parent="." instance=ExtResource( 6 )] -position = Vector2( 176, 72 ) -direction = Vector2( -1, 0 ) - -[node name="TubeEntrance4" parent="." instance=ExtResource( 6 )] -position = Vector2( 40, 72 ) -direction = Vector2( 0, 1 ) - -[node name="TubeExit" parent="." instance=ExtResource( 7 )] -position = Vector2( 40, 104 ) - -[connection signal="tree_entered" from="Sectors" to="Sectors" method="set_visible" binds= [ false ]] diff --git a/maps/graffiti.gd b/maps/graffiti.gd new file mode 100644 index 0000000..6bbcbd6 --- /dev/null +++ b/maps/graffiti.gd @@ -0,0 +1,7 @@ +extends Node2D + +func _ready(): + var save = Save.current_file + var id = LevelData.levels[Game.current_level].save_id + if !save.levels[id].shards_collected[1]: + visible = false diff --git a/maps/graveyard.tscn b/maps/graveyard.tscn new file mode 100644 index 0000000..16134a4 --- /dev/null +++ b/maps/graveyard.tscn @@ -0,0 +1,612 @@ +[gd_scene load_steps=27 format=2] + +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=1] +[ext_resource path="res://maps/map.gd" type="Script" id=2] +[ext_resource path="res://graphics/backgrounds/night.png" type="Texture" id=3] +[ext_resource path="res://tilesets/t_horror.tres" type="TileSet" id=4] +[ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=5] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=6] +[ext_resource path="res://objects/environment/rock/rock.tscn" type="PackedScene" id=7] +[ext_resource path="res://objects/enemy/artificial_soul.tscn" type="PackedScene" id=8] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=9] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=10] +[ext_resource path="res://audio/music/precision_parasite.ogg" type="AudioStream" id=11] +[ext_resource path="res://objects/enemy/hellarcher.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/environment/falling_block/falling_block_graveyard.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=14] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=15] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=17] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=19] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=20] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=21] +[ext_resource path="res://scripts/has_splash.gd" type="Script" id=22] +[ext_resource path="res://objects/lore/graveyard/hellarcher.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/lore/graveyard/woeful_soul.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/lore/graveyard/graveyard.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/lore/graveyard/artificial_soul.tscn" type="PackedScene" id=26] + +[node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 2 ) +target_time_any = 40 +target_time_100 = 145 +music = ExtResource( 11 ) +lore_entries = [ ExtResource( 25 ), ExtResource( 26 ), ExtResource( 23 ), ExtResource( 24 ) ] + +[node name="Background" type="CanvasLayer" parent="."] +layer = -1 + +[node name="Sprite" type="Sprite" parent="Background"] +position = Vector2( 128, 96 ) +texture = ExtResource( 3 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 21 ) +tile_set = ExtResource( 4 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( -65537, 1, 0, -130976, 1, 0, -1, 1, 65536, -65492, 0, 0, -65440, 1, 65536, 65535, 1, 65536, 31, 0, 0, 44, 0, 65536, 96, 1, 65536, 131071, 1, 65536, 65567, 0, 65536, 65580, 0, 65536, 65632, 1, 65536, 196607, 1, 65536, 131103, 0, 65536, 131116, 0, 65536, 131134, 2, 65536, 131168, 1, 65536, 262143, 1, 65536, 196610, 0, 196609, 196611, 0, 196610, 196612, 0, 196610, 196613, 0, 196610, 196614, 0, 196610, 196615, 0, 196610, 196616, 0, 196610, 196617, 0, 196610, 196618, 0, 196610, 196619, 0, 196610, 196620, 0, 196611, 196639, 0, 65536, 196652, 0, 65536, 196659, 2, 65536, 196661, 2, 65537, 196663, 2, 65536, 196665, 2, 65539, 196667, 2, 65536, 196668, 1, 1, 196669, 1, 2, 196670, 1, 2, 196671, 1, 2, 196672, 1, 2, 196673, 1, 3, 196695, 1, 196608, 196699, 1, 196609, 196700, 1, 196610, 196701, 1, 196610, 196702, 1, 196611, 196704, 1, 65536, 327679, 1, 131072, 262159, 0, 196609, 262160, 0, 196610, 262161, 0, 196611, 262164, 0, 196609, 262165, 0, 196610, 262166, 0, 196610, 262167, 0, 196610, 262168, 0, 196610, 262169, 0, 196610, 262170, 0, 196611, 262175, 0, 131072, 262188, 0, 65536, 262190, 1, 196609, 262191, 1, 196610, 262192, 1, 196610, 262193, 1, 196610, 262194, 1, 196610, 262195, 1, 196610, 262196, 1, 196610, 262197, 1, 196610, 262198, 1, 196610, 262199, 1, 196610, 262200, 1, 196610, 262201, 1, 196610, 262202, 1, 196610, 262203, 1, 196610, 262204, 1, 131074, 262205, 1, 131074, 262206, 1, 131074, 262207, 1, 131074, 262208, 1, 131074, 262209, 1, 131075, 262218, 2, 65537, 262224, 1, 196609, 262225, 1, 196610, 262226, 1, 196610, 262227, 1, 196611, 262240, 1, 65536, 393215, 0, 196609, 327680, 0, 196611, 327724, 0, 65536, 327752, 1, 196609, 327753, 1, 196610, 327754, 1, 196610, 327755, 1, 196610, 327756, 1, 196611, 327776, 1, 65536, 458751, 1, 0, 393255, 0, 1, 393256, 0, 196610, 393257, 0, 196610, 393258, 0, 196610, 393259, 0, 196610, 393260, 0, 131075, 393279, 2, 65536, 393312, 1, 65536, 524287, 1, 65536, 458752, 0, 196609, 458753, 0, 196610, 458754, 0, 196611, 458757, 0, 196609, 458758, 0, 196610, 458759, 0, 196611, 458788, 0, 1, 458789, 0, 196610, 458790, 0, 196610, 458791, 0, 131075, 458811, 2, 65536, 458813, 1, 1, 458814, 1, 196610, 458815, 1, 196610, 458816, 1, 196610, 458817, 1, 196610, 458818, 1, 196611, 458845, 2, 65536, 458848, 1, 65536, 589823, 1, 65536, 524321, 0, 1, 524322, 0, 196610, 524323, 0, 196610, 524324, 0, 131075, 524346, 1, 196609, 524347, 1, 196610, 524348, 1, 196610, 524349, 1, 131075, 524365, 2, 65539, 524379, 1, 1, 524380, 1, 2, 524381, 1, 2, 524382, 1, 2, 524383, 1, 2, 524384, 1, 65539, 655359, 1, 65536, 589854, 0, 1, 589855, 0, 196610, 589856, 0, 196610, 589857, 0, 131075, 589900, 1, 1, 589901, 1, 3, 589915, 1, 131073, 589916, 1, 131074, 589917, 1, 131074, 589918, 1, 131074, 589919, 1, 131074, 589920, 1, 65539, 720895, 1, 65536, 655374, 0, 196609, 655375, 0, 196610, 655376, 0, 196610, 655377, 0, 196610, 655378, 0, 196610, 655379, 0, 196610, 655380, 0, 196610, 655381, 0, 196610, 655382, 0, 196610, 655383, 0, 196610, 655384, 0, 196610, 655385, 0, 196610, 655386, 0, 196611, 655389, 0, 196609, 655390, 0, 131075, 655406, 2, 65536, 655408, 2, 65538, 655410, 2, 65536, 655432, 2, 65539, 655436, 1, 65537, 655437, 1, 65539, 655442, 1, 196609, 655443, 1, 196611, 655456, 1, 65536, 786431, 1, 65536, 720939, 1, 1, 720940, 1, 2, 720941, 1, 2, 720942, 1, 2, 720943, 1, 2, 720944, 1, 2, 720945, 1, 2, 720946, 1, 2, 720947, 1, 2, 720948, 1, 2, 720949, 1, 3, 720955, 2, 65536, 720958, 2, 65536, 720966, 1, 1, 720967, 1, 2, 720968, 1, 3, 720972, 1, 131073, 720973, 1, 131075, 720981, 2, 65537, 720992, 1, 65536, 851967, 1, 65536, 786442, 0, 196609, 786443, 0, 196610, 786444, 0, 196611, 786471, 2, 65536, 786475, 1, 131073, 786476, 1, 131074, 786477, 1, 131074, 786478, 1, 131074, 786479, 1, 131074, 786480, 1, 65538, 786481, 1, 65538, 786482, 1, 131074, 786483, 1, 131074, 786484, 1, 131074, 786485, 1, 131075, 786490, 1, 196609, 786491, 1, 196610, 786492, 1, 196610, 786493, 1, 196610, 786494, 1, 196610, 786495, 1, 2, 786496, 1, 2, 786497, 1, 3, 786502, 1, 131073, 786503, 1, 131074, 786504, 1, 131075, 786517, 1, 1, 786518, 1, 3, 786528, 1, 65536, 917503, 1, 65536, 852007, 1, 1, 852008, 1, 3, 852016, 1, 65537, 852017, 1, 65539, 852031, 1, 65537, 852032, 1, 65538, 852033, 1, 131074, 852034, 1, 196611, 852040, 0, 0, 852053, 1, 131073, 852054, 1, 131074, 852055, 1, 196610, 852056, 1, 196610, 852057, 1, 196610, 852058, 1, 196610, 852059, 1, 196610, 852060, 1, 196610, 852061, 1, 196610, 852062, 1, 196610, 852063, 1, 196610, 852064, 1, 65539, 983039, 1, 65536, 917512, 2, 65536, 917515, 2, 65538, 917518, 2, 65536, 917528, 0, 196609, 917529, 0, 196610, 917530, 0, 196611, 917543, 1, 131073, 917544, 1, 131075, 917552, 1, 65537, 917553, 1, 65539, 917567, 1, 65537, 917568, 1, 65539, 917576, 0, 131073, 917577, 0, 196610, 917578, 0, 196610, 917579, 0, 196610, 917580, 0, 3, 917600, 1, 65536, 1048575, 1, 65536, 983048, 1, 1, 983049, 1, 2, 983050, 1, 2, 983051, 1, 2, 983052, 1, 2, 983053, 1, 2, 983054, 1, 3, 983075, 1, 1, 983076, 1, 3, 983088, 1, 65537, 983089, 1, 65539, 983103, 1, 65537, 983104, 1, 65539, 983116, 0, 131073, 983117, 0, 196610, 983118, 0, 196610, 983119, 0, 196611, 983136, 1, 65536, 1114111, 1, 65536, 1048584, 1, 131073, 1048585, 1, 131074, 1048586, 1, 131074, 1048587, 1, 131074, 1048588, 1, 131074, 1048589, 1, 131074, 1048590, 1, 131075, 1048605, 2, 65537, 1048609, 2, 65536, 1048611, 1, 65537, 1048612, 1, 65539, 1048624, 1, 131073, 1048625, 1, 131075, 1048627, 1, 196609, 1048628, 1, 196610, 1048629, 1, 196610, 1048630, 1, 196610, 1048631, 1, 196610, 1048632, 1, 196610, 1048633, 1, 196610, 1048634, 1, 196610, 1048635, 1, 196610, 1048636, 1, 196610, 1048637, 1, 196610, 1048638, 1, 196610, 1048639, 1, 131074, 1048640, 1, 65539, 1048672, 1, 65536, 1179647, 1, 65536, 1114141, 1, 1, 1114142, 1, 2, 1114143, 1, 2, 1114144, 1, 2, 1114145, 1, 2, 1114146, 1, 2, 1114147, 1, 65538, 1114148, 1, 65539, 1114176, 1, 131073, 1114177, 1, 196610, 1114178, 1, 196610, 1114179, 1, 196611, 1114196, 2, 65536, 1114198, 2, 65538, 1114200, 2, 65536, 1114204, 2, 65536, 1114205, 2, 65537, 1114208, 1, 65536, 1245183, 1, 65536, 1179652, 0, 196609, 1179653, 0, 196610, 1179654, 0, 196611, 1179675, 1, 196609, 1179676, 1, 196610, 1179677, 1, 131074, 1179678, 1, 131074, 1179679, 1, 131074, 1179680, 1, 131074, 1179681, 1, 131074, 1179682, 1, 131074, 1179683, 1, 131074, 1179684, 1, 131075, 1179732, 1, 196609, 1179733, 1, 196610, 1179734, 1, 196610, 1179735, 1, 196610, 1179736, 1, 196610, 1179737, 1, 196610, 1179738, 1, 196610, 1179739, 1, 196610, 1179740, 1, 196610, 1179741, 1, 196610, 1179742, 1, 196610, 1179743, 1, 196610, 1179744, 1, 65539, 1310719, 1, 65536, 1245280, 1, 65536, 1376255, 1, 65536, 1310720, 0, 196609, 1310721, 0, 196611, 1310732, 2, 65536, 1310734, 2, 65539, 1310736, 2, 65536, 1310742, 2, 65536, 1310757, 2, 65537, 1310816, 1, 65536, 1441791, 1, 65536, 1376258, 2, 65538, 1376262, 2, 65536, 1376266, 1, 1, 1376267, 1, 2, 1376268, 1, 2, 1376269, 1, 2, 1376270, 1, 2, 1376271, 1, 2, 1376272, 1, 2, 1376273, 1, 2, 1376274, 1, 2, 1376275, 1, 2, 1376276, 1, 2, 1376277, 1, 2, 1376278, 1, 3, 1376281, 3, 1, 1376283, 2, 65536, 1376287, 2, 65537, 1376289, 2, 65536, 1376290, 2, 65536, 1376291, 2, 65536, 1376292, 1, 1, 1376293, 1, 2, 1376294, 1, 3, 1376301, 2, 65536, 1376303, 2, 65539, 1376304, 2, 65536, 1376305, 2, 65539, 1376308, 2, 65536, 1376322, 2, 65536, 1376324, 2, 65538, 1376326, 2, 65536, 1376336, 2, 65536, 1376338, 2, 65539, 1376340, 2, 65536, 1376342, 2, 65539, 1376344, 2, 65536, 1376352, 1, 65536, 1507327, 1, 65537, 1441792, 1, 2, 1441793, 1, 2, 1441794, 1, 2, 1441795, 1, 2, 1441796, 1, 2, 1441797, 1, 2, 1441798, 1, 2, 1441799, 1, 2, 1441800, 1, 2, 1441801, 1, 2, 1441802, 1, 65538, 1441803, 1, 65538, 1441804, 1, 65538, 1441805, 1, 65538, 1441806, 1, 65538, 1441807, 1, 65538, 1441808, 1, 65538, 1441809, 1, 65538, 1441810, 1, 65538, 1441811, 1, 65538, 1441812, 1, 65538, 1441813, 1, 65538, 1441814, 1, 65538, 1441815, 1, 2, 1441816, 1, 2, 1441817, 1, 2, 1441818, 1, 2, 1441819, 1, 2, 1441820, 1, 2, 1441821, 1, 2, 1441822, 1, 2, 1441823, 1, 2, 1441824, 1, 2, 1441825, 1, 2, 1441826, 1, 2, 1441827, 1, 2, 1441828, 1, 65538, 1441829, 1, 65538, 1441830, 1, 65539, 1441836, 1, 1, 1441837, 1, 2, 1441838, 1, 2, 1441839, 1, 2, 1441840, 1, 2, 1441841, 1, 2, 1441842, 1, 2, 1441843, 1, 2, 1441844, 1, 2, 1441845, 1, 3, 1441851, 1, 1, 1441852, 1, 2, 1441853, 1, 2, 1441854, 1, 2, 1441855, 1, 2, 1441856, 1, 2, 1441857, 1, 2, 1441858, 1, 2, 1441859, 1, 2, 1441860, 1, 2, 1441861, 1, 2, 1441862, 1, 2, 1441863, 1, 2, 1441864, 1, 3, 1441870, 1, 1, 1441871, 1, 2, 1441872, 1, 2, 1441873, 1, 2, 1441874, 1, 2, 1441875, 1, 2, 1441876, 1, 2, 1441877, 1, 2, 1441878, 1, 2, 1441879, 1, 2, 1441880, 1, 2, 1441881, 1, 2, 1441882, 1, 2, 1441883, 1, 2, 1441884, 1, 2, 1441885, 1, 2, 1441886, 1, 2, 1441887, 1, 2, 1441888, 1, 65539, 1572863, 1, 65537, 1507328, 1, 65538, 1507329, 1, 65538, 1507330, 1, 65538, 1507331, 1, 65538, 1507332, 1, 65538, 1507333, 1, 65538, 1507334, 1, 65538, 1507335, 1, 65538, 1507336, 1, 65538, 1507337, 1, 65538, 1507338, 1, 65538, 1507339, 1, 65538, 1507340, 1, 65538, 1507341, 1, 65538, 1507342, 1, 65538, 1507343, 1, 65538, 1507344, 1, 65538, 1507345, 1, 65538, 1507346, 1, 65538, 1507347, 1, 65538, 1507348, 1, 65538, 1507349, 1, 65538, 1507350, 1, 65538, 1507351, 1, 65538, 1507352, 1, 65538, 1507353, 1, 65538, 1507354, 1, 65538, 1507355, 1, 65538, 1507356, 1, 65538, 1507357, 1, 65538, 1507358, 1, 65538, 1507359, 1, 65538, 1507360, 1, 65538, 1507361, 1, 65538, 1507362, 1, 65538, 1507363, 1, 65538, 1507364, 1, 65538, 1507365, 1, 65538, 1507366, 1, 65539, 1507372, 1, 65537, 1507373, 1, 65538, 1507374, 1, 65538, 1507375, 1, 65538, 1507376, 1, 65538, 1507377, 1, 65538, 1507378, 1, 65538, 1507379, 1, 65538, 1507380, 1, 65538, 1507381, 1, 65539, 1507387, 1, 65537, 1507388, 1, 65538, 1507389, 1, 65538, 1507390, 1, 65538, 1507391, 1, 65538, 1507392, 1, 65538, 1507393, 1, 65538, 1507394, 1, 65538, 1507395, 1, 65538, 1507396, 1, 65538, 1507397, 1, 65538, 1507398, 1, 65538, 1507399, 1, 65538, 1507400, 1, 65539, 1507406, 1, 65537, 1507407, 1, 65538, 1507408, 1, 65538, 1507409, 1, 65538, 1507410, 1, 65538, 1507411, 1, 65538, 1507412, 1, 65538, 1507413, 1, 65538, 1507414, 1, 65538, 1507415, 1, 65538, 1507416, 1, 65538, 1507417, 1, 65538, 1507418, 1, 65538, 1507419, 1, 65538, 1507420, 1, 65538, 1507421, 1, 65538, 1507422, 1, 65538, 1507423, 1, 65538, 1507424, 1, 65539, 1638399, 1, 131073, 1572864, 1, 131074, 1572865, 1, 131074, 1572866, 1, 131074, 1572867, 1, 131074, 1572868, 1, 131074, 1572869, 1, 131074, 1572870, 1, 131074, 1572871, 1, 131074, 1572872, 1, 131074, 1572873, 1, 131074, 1572874, 1, 131074, 1572875, 1, 131074, 1572876, 1, 131074, 1572877, 1, 131074, 1572878, 1, 131074, 1572879, 1, 131074, 1572880, 1, 131074, 1572881, 1, 131074, 1572882, 1, 131074, 1572883, 1, 131074, 1572884, 1, 131074, 1572885, 1, 131074, 1572886, 1, 131074, 1572887, 1, 131074, 1572888, 1, 131074, 1572889, 1, 131074, 1572890, 1, 131074, 1572891, 1, 131074, 1572892, 1, 131074, 1572893, 1, 131074, 1572894, 1, 131074, 1572895, 1, 131074, 1572896, 1, 131074, 1572897, 1, 131074, 1572898, 1, 131074, 1572899, 1, 131074, 1572900, 1, 131074, 1572901, 1, 131074, 1572902, 1, 131075, 1572908, 1, 131073, 1572909, 1, 131074, 1572910, 1, 131074, 1572911, 1, 131074, 1572912, 1, 131074, 1572913, 1, 131074, 1572914, 1, 131074, 1572915, 1, 131074, 1572916, 1, 131074, 1572917, 1, 131075, 1572923, 1, 131073, 1572924, 1, 131074, 1572925, 1, 131074, 1572926, 1, 131074, 1572927, 1, 131074, 1572928, 1, 131074, 1572929, 1, 131074, 1572930, 1, 131074, 1572931, 1, 131074, 1572932, 1, 131074, 1572933, 1, 131074, 1572934, 1, 131074, 1572935, 1, 131074, 1572936, 1, 131075, 1572942, 1, 131073, 1572943, 1, 131074, 1572944, 1, 131074, 1572945, 1, 131074, 1572946, 1, 131074, 1572947, 1, 131074, 1572948, 1, 131074, 1572949, 1, 131074, 1572950, 1, 131074, 1572951, 1, 131074, 1572952, 1, 131074, 1572953, 1, 131074, 1572954, 1, 131074, 1572955, 1, 131074, 1572956, 1, 131074, 1572957, 1, 131074, 1572958, 1, 131074, 1572959, 1, 131074, 1572960, 1, 131075 ) + +[node name="Player" parent="." instance=ExtResource( 1 )] +position = Vector2( 32, 176 ) + +[node name="Camera2D" parent="." instance=ExtResource( 17 )] + +[node name="Ladder" type="TileMap" parent="."] +tile_set = ExtResource( 9 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 131140, 1, 0, 196676, 1, 65536, 262212, 1, 65536, 327748, 1, 65536, 393284, 1, 131072, 458831, 1, 0, 524367, 1, 65536, 589903, 1, 65536, 655439, 1, 65536, 720901, 1, 0, 720975, 1, 65536, 786437, 1, 65536, 786511, 1, 131072, 851973, 1, 65536, 917509, 1, 65536, 983045, 1, 131072, 983122, 1, 0, 1048658, 1, 65536, 1114194, 1, 65536, 1179730, 1, 65536, 1245266, 1, 131072 ) + +[node name="Death" type="TileMap" parent="." groups=["death"]] +light_mask = 0 +tile_set = ExtResource( 6 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +collision_mask = 0 +format = 1 +tile_data = PoolIntArray( 196694, -1073741823, 0, 196696, -1610612735, 0, 262228, -1610612735, 0, 589914, -1073741823, 0, 720938, -1073741823, 0, 720971, -1073741823, 0, 786474, -1073741823, 0, 786520, 1, 0, 852006, -1073741823, 0, 917542, -1073741823, 0, 1048643, 1, 0 ) + +[node name="DeathNoBlood" type="TileMap" parent="." groups=["death", "has_splash", "no_blood"]] +tile_set = ExtResource( 6 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +collision_mask = 0 +format = 1 +tile_data = PoolIntArray( 1441831, 8, 0, 1441832, 8, 0, 1441833, 8, 0, 1441834, 8, 0, 1441835, 8, 0, 1441846, 8, 0, 1441847, 8, 0, 1441848, 8, 0, 1441849, 8, 0, 1441850, 8, 0, 1441865, 8, 0, 1441866, 8, 0, 1441867, 8, 0, 1441868, 8, 0, 1441869, 8, 0, 1507367, 9, 0, 1507368, 9, 0, 1507369, 9, 0, 1507370, 9, 0, 1507371, 9, 0, 1507382, 9, 0, 1507383, 9, 0, 1507384, 9, 0, 1507385, 9, 0, 1507386, 9, 0, 1507401, 9, 0, 1507402, 9, 0, 1507403, 9, 0, 1507404, 9, 0, 1507405, 9, 0 ) +script = ExtResource( 22 ) +splash_color = Color( 0.552941, 0.14902, 0.180392, 1 ) + +[node name="DeathBackground" type="TileMap" parent="DeathNoBlood"] +z_index = -11 +tile_set = ExtResource( 6 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 0 +collision_mask = 0 +format = 1 +tile_data = PoolIntArray( 1441830, 8, 0, 1441836, 8, 0, 1441845, 8, 0, 1441851, 8, 0, 1441864, 8, 0, 1441870, 8, 0, 1507366, 9, 0, 1507372, 9, 0, 1507381, 9, 0, 1507387, 9, 0, 1507400, 9, 0, 1507406, 9, 0 ) + +[node name="Environment" type="Node2D" parent="."] + +[node name="Ladder" parent="Environment" instance=ExtResource( 10 )] +position = Vector2( 40, 88 ) +scale = Vector2( 1, 5 ) + +[node name="Ladder2" parent="Environment" instance=ExtResource( 10 )] +position = Vector2( 544, 16 ) +scale = Vector2( 1, 5 ) + +[node name="Ladder3" parent="Environment" instance=ExtResource( 10 )] +position = Vector2( 632, 56 ) +scale = Vector2( 1, 6 ) + +[node name="Ladder4" parent="Environment" instance=ExtResource( 10 )] +position = Vector2( 656, 120 ) +scale = Vector2( 1, 5 ) + +[node name="Rock2" parent="Environment" instance=ExtResource( 7 )] +position = Vector2( 368, 24 ) + +[node name="Rock4" parent="Environment" instance=ExtResource( 7 )] +position = Vector2( 752, 16 ) + +[node name="Rock3" parent="Environment" instance=ExtResource( 7 )] +position = Vector2( 408, 168 ) + +[node name="FallingBlock" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 200, 152 ) + +[node name="FallingBlock2" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 96, 80 ) + +[node name="FallingBlock4" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 320, 32 ) + +[node name="FallingBlock11" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 304, 24 ) + +[node name="FallingBlock13" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 600, 168 ) + +[node name="FallingBlock12" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 272, 24 ) + +[node name="FallingBlock5" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 368, 152 ) + +[node name="FallingBlock8" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 440, 72 ) + +[node name="FallingBlock7" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 456, 168 ) + +[node name="FallingBlock6" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 352, 136 ) + +[node name="FallingBlock10" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 328, 168 ) + +[node name="FallingBlock3" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 80, 64 ) + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Shard" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 464, 120 ) +number = 2 + +[node name="Shard3" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 272, 16 ) +number = 1 + +[node name="Shard4" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 192, 24 ) + +[node name="Shard2" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 736, 16 ) +number = 3 + +[node name="Star" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 200, 104 ) + +[node name="Star5" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 752, 136 ) +color = 4 + +[node name="Star4" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 376, 104 ) +color = 1 + +[node name="Star2" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 520, 128 ) +color = 2 + +[node name="Star3" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 736, 96 ) +color = 3 + +[node name="Key" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 56, 168 ) + +[node name="Key2" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 144, 160 ) + +[node name="Key19" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 288, 112 ) + +[node name="Key20" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 320, 96 ) + +[node name="Key21" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 344, 80 ) + +[node name="Key22" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 232, 72 ) + +[node name="Key24" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 264, 56 ) + +[node name="Key23" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 424, 80 ) + +[node name="Key25" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 480, 16 ) + +[node name="Key26" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 520, 16 ) + +[node name="Key27" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 464, 56 ) + +[node name="Key28" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 488, 48 ) + +[node name="Key31" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 688, 88 ) + +[node name="Key33" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 720, 96 ) + +[node name="Key32" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 696, 136 ) + +[node name="Key41" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 672, 136 ) + +[node name="Key42" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 400, 168 ) + +[node name="Key50" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 528, 48 ) + +[node name="Key43" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 616, 112 ) + +[node name="Key34" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 208, 24 ) + +[node name="Key35" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 656, 72 ) + +[node name="Key36" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 216, 136 ) + +[node name="Key37" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 528, 96 ) + +[node name="Key38" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 584, 32 ) + +[node name="Key39" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 640, 24 ) + +[node name="Key40" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 664, 24 ) + +[node name="Key29" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 464, 88 ) + +[node name="Key30" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 504, 88 ) + +[node name="Key14" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 192, 168 ) + +[node name="Key16" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 56, 16 ) + +[node name="Key17" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 96, 72 ) + +[node name="Key18" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 208, 72 ) + +[node name="Key44" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 240, 128 ) + +[node name="Key45" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 600, 32 ) + +[node name="Key46" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 160, 24 ) + +[node name="Key47" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 128, 24 ) + +[node name="Key48" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 88, 16 ) + +[node name="Key49" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 368, 168 ) + +[node name="Key15" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 232, 168 ) + +[node name="Key3" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 40, 136 ) + +[node name="Key4" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 8, 152 ) + +[node name="Key5" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 272, 168 ) + +[node name="Key7" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 24, 16 ) + +[node name="Key9" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 304, 160 ) + +[node name="Key10" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 736, 56 ) + +[node name="Key11" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 88, 88 ) + +[node name="Key12" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 48, 48 ) + +[node name="Key13" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 80, 56 ) + +[node name="Key8" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 88, 160 ) + +[node name="Key6" parent="Collectibles" instance=ExtResource( 16 )] +position = Vector2( 16, 48 ) + +[node name="Arrow" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 368, 40 ) + +[node name="Arrow2" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 528, 168 ) + +[node name="Enemy" type="Node2D" parent="."] + +[node name="ArtificialSoul" parent="Enemy" instance=ExtResource( 8 )] +position = Vector2( 88, 88 ) + +[node name="ArtificialSoul2" parent="Enemy/ArtificialSoul" instance=ExtResource( 8 )] +initial_angle = 1.0 + +[node name="ArtificialSoul3" parent="Enemy" instance=ExtResource( 8 )] +position = Vector2( 216, 96 ) +radius = 1.0 +speed = 6.0 + +[node name="ArtificialSoul2" parent="Enemy" instance=ExtResource( 8 )] +position = Vector2( 168, 72 ) +__meta__ = { +"_edit_group_": true +} +radius = 3.0 + +[node name="ArtificialSoul2" parent="Enemy/ArtificialSoul2" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 2.0 + +[node name="ArtificialSoul3" parent="Enemy/ArtificialSoul2" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 4.0 + +[node name="ArtificialSoul4" parent="Enemy/ArtificialSoul2" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 6.0 + +[node name="ArtificialSoul12" parent="Enemy" instance=ExtResource( 8 )] +position = Vector2( 128, 32 ) +__meta__ = { +"_edit_group_": true +} +radius = 3.0 +speed = 2.286 + +[node name="ArtificialSoul2" parent="Enemy/ArtificialSoul12" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 2.0 +speed = 2.286 + +[node name="ArtificialSoul5" parent="Enemy/ArtificialSoul12" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 3.0 +speed = 2.286 + +[node name="ArtificialSoul3" parent="Enemy/ArtificialSoul12" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 4.0 +speed = 2.286 + +[node name="ArtificialSoul4" parent="Enemy/ArtificialSoul12" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 6.0 +speed = 2.286 + +[node name="ArtificialSoul6" parent="Enemy/ArtificialSoul12" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 7.0 +speed = 2.286 + +[node name="ArtificialSoul11" parent="Enemy" instance=ExtResource( 8 )] +position = Vector2( 32, 48 ) +__meta__ = { +"_edit_group_": true +} +radius = 3.0 + +[node name="ArtificialSoul2" parent="Enemy/ArtificialSoul11" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 2.0 + +[node name="ArtificialSoul5" parent="Enemy/ArtificialSoul11" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 3.0 + +[node name="ArtificialSoul7" parent="Enemy/ArtificialSoul11" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 9.0 + +[node name="ArtificialSoul9" parent="Enemy" instance=ExtResource( 8 )] +position = Vector2( 296, 56 ) +__meta__ = { +"_edit_group_": true +} +radius = 2.0 + +[node name="ArtificialSoul2" parent="Enemy/ArtificialSoul9" instance=ExtResource( 8 )] +radius = 2.0 +initial_angle = 2.0 + +[node name="ArtificialSoul4" parent="Enemy/ArtificialSoul9" instance=ExtResource( 8 )] +radius = 2.0 +initial_angle = 6.0 + +[node name="ArtificialSoul5" parent="Enemy/ArtificialSoul9" instance=ExtResource( 8 )] +radius = 2.0 +initial_angle = 12.0 + +[node name="ArtificialSoul5" parent="Enemy" instance=ExtResource( 8 )] +position = Vector2( 384, 88 ) +__meta__ = { +"_edit_group_": true +} +radius = 3.0 +speed = 1.0 + +[node name="ArtificialSoul2" parent="Enemy/ArtificialSoul5" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 2.0 +speed = 1.0 + +[node name="ArtificialSoul3" parent="Enemy/ArtificialSoul5" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 4.0 +speed = 1.0 + +[node name="ArtificialSoul4" parent="Enemy/ArtificialSoul5" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 6.0 +speed = 1.0 + +[node name="ArtificialSoul4" parent="Enemy" instance=ExtResource( 8 )] +position = Vector2( 584, 96 ) +__meta__ = { +"_edit_group_": true +} +radius = 3.0 + +[node name="ArtificialSoul2" parent="Enemy/ArtificialSoul4" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 2.0 + +[node name="ArtificialSoul3" parent="Enemy/ArtificialSoul4" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 4.0 + +[node name="ArtificialSoul4" parent="Enemy/ArtificialSoul4" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 6.0 + +[node name="ArtificialSoul13" parent="Enemy" instance=ExtResource( 8 )] +position = Vector2( 600, 168 ) +z_index = 10 +__meta__ = { +"_edit_group_": true +} +radius = 3.0 + +[node name="ArtificialSoul3" parent="Enemy/ArtificialSoul13" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 4.0 + +[node name="ArtificialSoul8" parent="Enemy" instance=ExtResource( 8 )] +position = Vector2( 696, 32 ) +__meta__ = { +"_edit_group_": true +} +radius = 3.0 +speed = 3.0 + +[node name="ArtificialSoul2" parent="Enemy/ArtificialSoul8" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 2.0 +speed = 3.0 + +[node name="ArtificialSoul3" parent="Enemy/ArtificialSoul8" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 4.0 +speed = 3.0 + +[node name="ArtificialSoul4" parent="Enemy/ArtificialSoul8" instance=ExtResource( 8 )] +radius = 3.0 +initial_angle = 6.0 +speed = 3.0 + +[node name="ArtificialSoul10" parent="Enemy" instance=ExtResource( 8 )] +position = Vector2( 712, 128 ) +__meta__ = { +"_edit_group_": true +} +radius = 2.0 +speed = 8.0 + +[node name="ArtificialSoul2" parent="Enemy/ArtificialSoul10" instance=ExtResource( 8 )] +radius = 2.0 +initial_angle = 2.0 +speed = 8.0 + +[node name="ArtificialSoul6" parent="Enemy" instance=ExtResource( 8 )] +position = Vector2( 544, 32 ) +__meta__ = { +"_edit_group_": true +} +radius = 1.0 +speed = 3.0 + +[node name="Jerry" parent="Enemy" instance=ExtResource( 12 )] +position = Vector2( 184, 26 ) +scale = Vector2( -1, 1 ) +shoot_time = 3.5 +bones_amount = 24 + +[node name="Skelarcher3" parent="Enemy" instance=ExtResource( 12 )] +position = Vector2( 168, 160 ) +scale = Vector2( -1, 1 ) + +[node name="Skelarcher8" parent="Enemy" instance=ExtResource( 12 )] +position = Vector2( 353, 42 ) +scale = Vector2( -1, 1 ) +shoot_time = 3.0 + +[node name="Skelarcher2" parent="Enemy" instance=ExtResource( 12 )] +position = Vector2( 392, 24 ) +shoot_time = 1.0 + +[node name="Skelarcher6" parent="Enemy" instance=ExtResource( 12 )] +position = Vector2( 760, 96 ) +scale = Vector2( -1, 1 ) + +[node name="Skelarcher7" parent="Enemy" instance=ExtResource( 12 )] +position = Vector2( 768, 56 ) +scale = Vector2( -1, 1 ) + +[node name="Skelarcher4" parent="Enemy" instance=ExtResource( 12 )] +position = Vector2( 496, 120 ) +scale = Vector2( -1, 1 ) +shoot_time = 0.1 + +[node name="Skelarcher5" parent="Enemy" instance=ExtResource( 12 )] +position = Vector2( 480, 168 ) +scale = Vector2( -1, 1 ) + +[node name="ColorRect" type="ColorRect" parent="."] +margin_left = 256.0 +margin_right = 512.0 +margin_bottom = 192.0 +color = Color( 0, 1, 0.811765, 0.054902 ) +script = ExtResource( 5 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect2" type="ColorRect" parent="."] +margin_left = 512.0 +margin_right = 768.0 +margin_bottom = 192.0 +color = Color( 1, 0, 0.913725, 0.054902 ) +script = ExtResource( 5 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Exit" parent="." instance=ExtResource( 18 )] +position = Vector2( 752, 164 ) +cost = 25 + +[node name="HUD" parent="." instance=ExtResource( 19 )] +song_name = "♫Precision Parasite" diff --git a/maps/hills.tscn b/maps/hills.tscn new file mode 100644 index 0000000..a06cddd --- /dev/null +++ b/maps/hills.tscn @@ -0,0 +1,496 @@ +[gd_scene load_steps=29 format=2] + +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=1] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=2] +[ext_resource path="res://audio/music/rumble_loop.ogg" type="AudioStream" id=3] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=4] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=5] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=6] +[ext_resource path="res://graphics/backgrounds/blue_sky.png" type="Texture" id=7] +[ext_resource path="res://tilesets/t_grass.tres" type="TileSet" id=8] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=9] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=10] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/enemy/bat.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/environment/barrier/barrier.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/enemy/snake.tscn" type="PackedScene" id=14] +[ext_resource path="res://objects/enemy/slime.tscn" type="PackedScene" id=15] +[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=17] +[ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=18] +[ext_resource path="res://maps/map.gd" type="Script" id=19] +[ext_resource path="res://objects/lore/hills/speccy.tscn" type="PackedScene" id=20] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=21] +[ext_resource path="res://objects/lore/hills/bioslime.tscn" type="PackedScene" id=22] +[ext_resource path="res://objects/lore/hills/catbat.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/lore/hills/eviscerator.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/lore/hills/verdant_hills.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=26] +[ext_resource path="res://objects/lore/hills/sg.tscn" type="PackedScene" id=27] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 8, 128 ) + +[node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 19 ) +target_time_any = 70 +target_time_100 = 180 +music = ExtResource( 3 ) +lore_entries = [ ExtResource( 25 ), ExtResource( 24 ), ExtResource( 22 ), ExtResource( 23 ), ExtResource( 27 ), ExtResource( 20 ) ] + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = -2 + +[node name="Background" type="Sprite" parent="CanvasLayer"] +z_index = -2 +texture = ExtResource( 7 ) +centered = false +__meta__ = { +"_edit_lock_": true +} + +[node name="Camera2D" parent="." instance=ExtResource( 6 )] + +[node name="BackgroundTiles" type="TileMap" parent="."] +tile_set = ExtResource( 8 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 720943, 0, 0, 720944, 0, 0, 720945, 0, 0, 720946, 0, 0, 720947, 0, 0, 720948, 0, 0, 720949, 0, 0, 720950, 0, 0, 720951, 0, 0, 720952, 0, 0, 720953, 0, 0, 720954, 0, 0, 720955, 0, 0, 720956, 0, 0, 720957, 0, 0, 720958, 0, 0, 720959, 0, 0, 720960, 0, 0, 720961, 0, 0, 720962, 0, 0, 720963, 0, 0, 720964, 0, 0, 720965, 0, 0, 720966, 0, 0, 720967, 0, 0, 720968, 0, 0, 786503, 0, 3, 786504, 0, 3, 852039, 0, 3, 852040, 0, 3, 917572, 0, 3, 917573, 0, 3, 917574, 0, 3, 917575, 0, 3, 917576, 0, 3, 983108, 0, 3, 983111, 0, 3, 983112, 0, 3, 1048641, 0, 3, 1048642, 0, 3, 1048643, 0, 3, 1048647, 0, 3, 1048648, 0, 3, 1114164, 0, 3, 1114165, 0, 0, 1179692, 0, 3, 1310771, 0, 3 ) + +[node name="Ground" type="TileMap" parent="."] +tile_set = ExtResource( 8 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 196660, 2, 2, 196661, 2, 2, 196668, 0, 0, 196669, 0, 0, 196670, 0, 0, 196671, 0, 0, 196672, 0, 0, 196673, 0, 131073, 196675, 2, 3, 262194, 0, 65536, 262195, 0, 65537, 262196, 0, 65537, 262197, 0, 65537, 262198, 0, 65537, 262199, 0, 65538, 262204, 0, 3, 262205, 0, 3, 262206, 0, 3, 262207, 0, 3, 262208, 0, 1, 262209, 0, 131074, 262210, 0, 0, 262211, 0, 0, 262212, 0, 131073, 327683, 0, 65536, 327684, 0, 65537, 327685, 0, 65537, 327686, 0, 65537, 327687, 0, 65537, 327688, 0, 65537, 327689, 0, 65537, 327690, 0, 65537, 327691, 0, 65538, 327696, 2, 2, 327702, 2, 3, 327703, 2, 3, 327715, 2, 2, 327719, 2, 1, 327740, 0, 3, 327741, 0, 3, 327742, 0, 3, 327743, 0, 3, 327744, 0, 3, 327745, 0, 3, 327746, 0, 3, 327747, 0, 3, 327748, 0, 131074, 327749, 0, 131073, 327755, 2, 2, 327763, 2, 1, 327765, 2, 0, 327769, 2, 1, 327771, 2, 0, 393231, 0, 65536, 393232, 0, 65537, 393233, 0, 65538, 393236, 0, 65536, 393237, 0, 65537, 393238, 0, 65537, 393239, 0, 65537, 393240, 0, 65537, 393241, 0, 65538, 393244, 0, 65536, 393245, 0, 65537, 393246, 0, 65537, 393247, 0, 65537, 393248, 0, 65537, 393249, 0, 65537, 393250, 0, 65537, 393251, 0, 65537, 393252, 0, 65537, 393253, 0, 65537, 393254, 0, 65537, 393255, 0, 65537, 393256, 0, 65537, 393257, 0, 65537, 393258, 0, 65537, 393259, 0, 65538, 393276, 0, 3, 393277, 0, 3, 393278, 0, 3, 393279, 0, 3, 393280, 0, 3, 393281, 0, 3, 393282, 0, 3, 393283, 0, 3, 393284, 0, 3, 393285, 0, 3, 393290, 0, 65536, 393291, 0, 65537, 393292, 0, 65538, 393299, 0, 65536, 393300, 0, 65537, 393301, 0, 65537, 393302, 0, 65537, 393303, 0, 65537, 393304, 0, 65537, 393305, 0, 65537, 393306, 0, 65537, 393307, 0, 65537, 393308, 0, 65537, 393309, 0, 65537, 393310, 0, 65537, 393311, 0, 65537, 458812, 0, 3, 458813, 0, 3, 458814, 0, 3, 458815, 0, 3, 458816, 0, 3, 458817, 0, 3, 458818, 0, 3, 458819, 0, 3, 458820, 0, 3, 458821, 0, 3, 524348, 0, 3, 524349, 0, 3, 524350, 0, 3, 524351, 0, 3, 524352, 0, 3, 524353, 0, 3, 524354, 0, 3, 524355, 0, 3, 524356, 0, 3, 524357, 0, 3, 589844, 0, 65536, 589845, 0, 65537, 589846, 0, 65537, 589847, 0, 65537, 589848, 0, 65537, 589849, 0, 65538, 589854, 0, 65536, 589855, 0, 65537, 589856, 0, 65537, 589857, 0, 65537, 589858, 0, 65538, 589884, 0, 3, 589885, 0, 3, 589886, 0, 3, 589887, 0, 3, 589888, 0, 3, 589889, 0, 3, 589890, 0, 3, 589891, 0, 3, 589892, 0, 3, 589893, 0, 3, 655367, 0, 65536, 655368, 0, 65537, 655369, 0, 65537, 655370, 0, 65537, 655371, 0, 65537, 655372, 0, 65537, 655373, 0, 65538, 655407, 2, 1, 655410, 2, 3, 655413, 2, 2, 655416, 2, 0, 655420, 0, 3, 655421, 0, 3, 655422, 0, 3, 655423, 0, 3, 655424, 0, 3, 655425, 0, 3, 655426, 0, 3, 655427, 0, 3, 655428, 0, 3, 655429, 0, 3, 655431, 2, 2, 655443, 0, 65536, 655444, 0, 65537, 655445, 0, 65538, 720906, 0, 196611, 720942, 0, 131072, 720943, 0, 0, 720944, 0, 0, 720945, 0, 0, 720946, 0, 0, 720947, 0, 0, 720948, 0, 0, 720949, 0, 0, 720950, 0, 0, 720951, 0, 0, 720952, 0, 0, 720953, 0, 0, 720954, 0, 0, 720955, 0, 0, 720956, 0, 0, 720957, 0, 0, 720958, 0, 0, 720959, 0, 0, 720960, 0, 0, 720961, 0, 0, 720962, 0, 0, 720963, 0, 0, 720964, 0, 0, 720965, 0, 0, 720966, 0, 0, 720967, 0, 0, 720968, 0, 0, 720979, 2, 3, 720981, 2, 3, 720990, 2, 0, 786442, 0, 196610, 786477, 0, 131072, 786478, 0, 131075, 786479, 0, 3, 786480, 0, 3, 786481, 0, 3, 786482, 0, 3, 786483, 0, 3, 786484, 0, 3, 786485, 0, 3, 786486, 0, 3, 786487, 0, 3, 786488, 0, 3, 786489, 0, 3, 786490, 0, 3, 786491, 0, 3, 786492, 0, 3, 786493, 0, 3, 786494, 0, 3, 786495, 0, 3, 786496, 0, 3, 786497, 0, 3, 786498, 0, 3, 786499, 0, 3, 786500, 0, 3, 786501, 0, 3, 786502, 0, 3, 786513, 0, 65536, 786514, 0, 65537, 786515, 0, 65537, 786516, 0, 65537, 786517, 0, 65537, 786518, 0, 65537, 786519, 0, 65538, 786524, 0, 65536, 786525, 0, 65537, 786526, 0, 65537, 786527, 0, 65537, 851968, 0, 65537, 851969, 0, 65537, 851970, 0, 65537, 851971, 0, 65537, 851972, 0, 65537, 851973, 0, 65538, 851978, 0, 65539, 851989, 2, 2, 852006, 2, 1, 852008, 2, 1, 852010, 2, 1, 852012, 0, 131072, 852013, 0, 131075, 852014, 0, 3, 852015, 0, 3, 852016, 0, 3, 852017, 0, 3, 852018, 0, 3, 852019, 0, 3, 852020, 0, 3, 852021, 0, 3, 852022, 0, 3, 852023, 0, 3, 852024, 0, 3, 852025, 0, 3, 852026, 0, 3, 852027, 0, 3, 852028, 0, 3, 852029, 0, 3, 852030, 0, 3, 852031, 0, 3, 852032, 0, 3, 852033, 0, 3, 852034, 0, 3, 852035, 0, 3, 852036, 0, 3, 852037, 0, 3, 852038, 0, 3, 917514, 0, 65536, 917515, 0, 65537, 917516, 0, 65537, 917517, 0, 65537, 917518, 0, 65537, 917519, 0, 65537, 917520, 0, 65537, 917521, 0, 65538, 917525, 0, 65536, 917526, 0, 65537, 917527, 0, 65537, 917528, 0, 65537, 917529, 0, 65537, 917530, 0, 65537, 917531, 0, 65537, 917532, 0, 65537, 917533, 0, 65537, 917534, 0, 65537, 917535, 0, 65537, 917536, 0, 65537, 917537, 0, 65537, 917538, 0, 65538, 917541, 0, 65536, 917542, 0, 65537, 917543, 0, 65537, 917544, 0, 65537, 917545, 0, 65537, 917546, 0, 65537, 917547, 0, 65537, 917548, 0, 131075, 917549, 0, 3, 917550, 0, 3, 917551, 0, 3, 917552, 0, 3, 917553, 0, 3, 917554, 0, 3, 917555, 0, 3, 917556, 0, 3, 917557, 0, 3, 917558, 0, 3, 917559, 0, 3, 917560, 0, 3, 917561, 0, 3, 917562, 0, 3, 917563, 0, 3, 917564, 0, 3, 917565, 0, 3, 917566, 0, 3, 917567, 0, 3, 917568, 0, 3, 917569, 0, 3, 917570, 0, 3, 917571, 0, 3, 917573, 0, 131072, 917574, 0, 131073, 983084, 0, 3, 983085, 0, 3, 983086, 0, 3, 983087, 0, 3, 983088, 0, 3, 983089, 0, 3, 983090, 0, 3, 983091, 0, 3, 983092, 0, 3, 983093, 0, 3, 983094, 0, 3, 983095, 0, 3, 983096, 0, 3, 983097, 0, 3, 983098, 0, 3, 983099, 0, 3, 983100, 0, 3, 983101, 0, 3, 983102, 0, 3, 983103, 0, 3, 983104, 0, 3, 983105, 0, 3, 983106, 0, 3, 983107, 0, 3, 983108, 0, 131072, 983109, 0, 131075, 983110, 536870912, 2, 1048598, 2, 0, 1048600, 2, 1, 1048603, 2, 3, 1048606, 2, 2, 1048620, 0, 3, 1048621, 0, 3, 1048622, 0, 3, 1048623, 0, 3, 1048624, 0, 3, 1048625, 0, 3, 1048626, 0, 3, 1048627, 0, 3, 1048628, 0, 3, 1048629, 0, 3, 1048630, 0, 3, 1048631, 0, 3, 1048632, 0, 3, 1048633, 0, 3, 1048634, 0, 3, 1048635, 0, 3, 1048636, 0, 3, 1048637, 0, 3, 1048638, 0, 3, 1048639, 0, 3, 1048640, 0, 3, 1048641, 0, 3, 1048642, 0, 3, 1048643, 0, 131072, 1048644, 0, 131075, 1048645, 0, 1, 1048646, 536870912, 2, 1048657, 2, 2, 1048658, 2, 2, 1048660, 2, 2, 1048661, 2, 2, 1048669, 2, 2, 1114133, 0, 65536, 1114134, 0, 65537, 1114135, 0, 65537, 1114136, 0, 65537, 1114137, 0, 65537, 1114138, 0, 65537, 1114139, 0, 65537, 1114140, 0, 65537, 1114141, 0, 65537, 1114142, 0, 65537, 1114143, 0, 65537, 1114144, 0, 65537, 1114145, 0, 65537, 1114146, 0, 65538, 1114154, 2, 2, 1114156, 0, 3, 1114157, 0, 3, 1114158, 0, 3, 1114159, 0, 3, 1114160, 0, 3, 1114161, 0, 3, 1114162, 0, 3, 1114163, 0, 3, 1114165, 0, 65536, 1114166, 0, 0, 1114167, 0, 0, 1114168, 0, 0, 1114169, 0, 0, 1114170, 0, 0, 1114171, 0, 0, 1114172, 0, 0, 1114173, 0, 0, 1114174, 0, 0, 1114175, 0, 0, 1114176, 536870912, 0, 1114177, 536870912, 0, 1114178, 536870912, 0, 1114179, 0, 131075, 1114180, 0, 1, 1114181, 0, 1, 1114182, 0, 131074, 1114183, 0, 0, 1114184, 536870912, 0, 1114193, 0, 65536, 1114194, 0, 65537, 1114195, 0, 65537, 1114196, 0, 65537, 1114197, 0, 65538, 1114204, 0, 65536, 1114205, 0, 65537, 1114206, 0, 65537, 1114207, 0, 65537, 1179649, 0, 65536, 1179650, 0, 65537, 1179651, 0, 65538, 1179654, 0, 65536, 1179655, 0, 65537, 1179656, 0, 65537, 1179657, 0, 65537, 1179658, 0, 65537, 1179659, 0, 65537, 1179660, 0, 65537, 1179661, 0, 65537, 1179662, 0, 65538, 1179688, 0, 131072, 1179689, 0, 0, 1179690, 0, 0, 1179691, 0, 0, 1179692, 0, 131073, 1179693, 0, 3, 1179694, 0, 3, 1179695, 0, 3, 1179696, 0, 3, 1179697, 0, 3, 1179698, 0, 3, 1179699, 0, 3, 1179700, 0, 3, 1179701, 0, 3, 1179702, 0, 3, 1179703, 0, 3, 1179704, 0, 3, 1179705, 0, 3, 1179706, 0, 3, 1179707, 0, 3, 1179708, 0, 3, 1179709, 0, 3, 1179710, 0, 3, 1179711, 536870912, 1, 1179712, 0, 1, 1179713, 536870912, 3, 1179714, 536870912, 3, 1179715, 536870912, 3, 1179716, 536870912, 3, 1179717, 536870912, 3, 1179718, 536870912, 3, 1179719, 536870912, 3, 1179720, 536870912, 3, 1245202, 2, 2, 1245224, 0, 2, 1245225, 0, 1, 1245226, 0, 1, 1245227, 0, 1, 1245228, 536870912, 2, 1245229, 0, 3, 1245230, 0, 3, 1245231, 0, 3, 1245232, 0, 3, 1245233, 0, 3, 1245234, 0, 3, 1245235, 0, 3, 1245236, 0, 3, 1245237, 0, 3, 1245238, 0, 3, 1245239, 0, 3, 1245240, 0, 3, 1245241, 0, 3, 1245242, 0, 3, 1245243, 0, 3, 1245244, 0, 3, 1245245, 0, 3, 1245246, 0, 3, 1245247, 536870912, 1, 1245248, 0, 1, 1245249, 536870912, 3, 1245250, 536870912, 3, 1245251, 536870912, 3, 1245252, 536870912, 3, 1245253, 536870912, 3, 1245254, 536870912, 3, 1245255, 536870912, 3, 1245256, 536870912, 3, 1310736, 0, 131072, 1310737, 536870912, 0, 1310738, 536870912, 0, 1310739, 536870912, 0, 1310740, 0, 131073, 1310760, 0, 2, 1310761, 0, 1, 1310762, 0, 1, 1310763, 0, 1, 1310764, 536870912, 2, 1310765, 0, 3, 1310766, 0, 3, 1310767, 0, 3, 1310768, 0, 3, 1310769, 0, 3, 1310770, 0, 3, 1310772, 0, 3, 1310773, 0, 3, 1310774, 0, 3, 1310775, 0, 3, 1310776, 0, 3, 1310777, 0, 3, 1310778, 0, 3, 1310779, 0, 3, 1310780, 0, 3, 1310781, 0, 3, 1310782, 0, 3, 1310783, 536870912, 1, 1310784, 0, 1, 1310785, 536870912, 3, 1310786, 536870912, 3, 1310787, 536870912, 3, 1310788, 536870912, 3, 1310789, 536870912, 3, 1310790, 536870912, 3, 1310791, 536870912, 3, 1310792, 536870912, 3, 1376257, 2, 0, 1376261, 2, 1, 1376263, 2, 2, 1376266, 2, 2, 1376269, 2, 3, 1376271, 0, 131072, 1376272, 0, 131075, 1376273, 536870912, 1, 1376274, 536870912, 1, 1376275, 536870912, 1, 1376276, 0, 131074, 1376277, 0, 131073, 1376279, 2, 3, 1376281, 2, 1, 1376283, 2, 3, 1376285, 2, 0, 1376296, 0, 2, 1376297, 0, 1, 1376298, 0, 1, 1376299, 0, 1, 1376300, 536870912, 2, 1376301, 0, 3, 1376302, 0, 3, 1376303, 0, 3, 1376304, 0, 3, 1376305, 0, 3, 1376306, 0, 3, 1376307, 0, 3, 1376308, 0, 3, 1376309, 0, 3, 1376310, 0, 3, 1376311, 0, 3, 1376312, 0, 3, 1376313, 0, 3, 1376314, 0, 3, 1376315, 0, 3, 1376316, 0, 3, 1376317, 0, 3, 1376318, 0, 3, 1376319, 536870912, 1, 1376320, 0, 1, 1376321, 536870912, 3, 1376322, 536870912, 3, 1376323, 536870912, 3, 1376324, 536870912, 3, 1376325, 536870912, 3, 1376326, 536870912, 3, 1376327, 536870912, 3, 1376328, 536870912, 3, 1376331, 2, 2, 1376333, 2, 0, 1376336, 2, 3, 1376338, 2, 2, 1376340, 2, 1, 1376342, 2, 0, 1376344, 2, 2, 1376346, 2, 3, 1376349, 2, 0, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 131075, 1441808, 0, 1, 1441809, 0, 1, 1441810, 0, 1, 1441811, 0, 1, 1441812, 0, 1, 1441813, 0, 131074, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441824, 0, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 0, 0, 1441831, 0, 0, 1441832, 0, 131075, 1441833, 0, 1, 1441834, 0, 1, 1441835, 0, 1, 1441836, 0, 131074, 1441837, 0, 0, 1441838, 0, 0, 1441839, 0, 0, 1441840, 0, 0, 1441841, 0, 0, 1441842, 0, 0, 1441843, 0, 0, 1441844, 0, 0, 1441845, 0, 0, 1441846, 0, 0, 1441847, 0, 0, 1441848, 0, 0, 1441849, 0, 0, 1441850, 0, 0, 1441851, 0, 0, 1441852, 0, 0, 1441853, 0, 0, 1441854, 0, 0, 1441855, 0, 0, 1441856, 0, 0, 1441857, 0, 0, 1441858, 0, 0, 1441859, 0, 0, 1441860, 0, 0, 1441861, 0, 0, 1441862, 0, 0, 1441863, 0, 0, 1441864, 0, 0, 1441865, 0, 0, 1441866, 0, 0, 1441867, 0, 0, 1441868, 0, 0, 1441869, 0, 0, 1441870, 0, 0, 1441871, 0, 0, 1441872, 0, 0, 1441873, 0, 0, 1441874, 0, 0, 1441875, 0, 0, 1441876, 0, 0, 1441877, 0, 0, 1441878, 0, 0, 1441879, 0, 0, 1441880, 0, 0, 1441881, 0, 0, 1441882, 0, 0, 1441883, 0, 0, 1441884, 0, 0, 1441885, 0, 0, 1441886, 0, 0, 1441887, 0, 0, 1507328, 0, 1, 1507329, 0, 1, 1507330, 0, 1, 1507331, 0, 1, 1507332, 0, 1, 1507333, 0, 1, 1507334, 0, 1, 1507335, 0, 1, 1507336, 0, 1, 1507337, 0, 1, 1507338, 0, 1, 1507339, 0, 1, 1507340, 0, 1, 1507341, 0, 1, 1507342, 0, 1, 1507343, 0, 1, 1507344, 0, 1, 1507345, 0, 1, 1507346, 0, 1, 1507347, 0, 1, 1507348, 0, 1, 1507349, 0, 1, 1507350, 0, 1, 1507351, 0, 1, 1507352, 0, 1, 1507353, 0, 1, 1507354, 0, 1, 1507355, 0, 1, 1507356, 0, 1, 1507357, 0, 1, 1507358, 0, 1, 1507359, 0, 1, 1507360, 0, 1, 1507361, 0, 1, 1507362, 0, 1, 1507363, 0, 1, 1507364, 0, 1, 1507365, 0, 1, 1507366, 0, 1, 1507367, 0, 1, 1507368, 0, 1, 1507369, 0, 1, 1507370, 0, 1, 1507371, 0, 1, 1507372, 0, 1, 1507373, 0, 1, 1507374, 0, 1, 1507375, 0, 1, 1507376, 0, 1, 1507377, 0, 1, 1507378, 0, 1, 1507379, 0, 1, 1507380, 0, 1, 1507381, 0, 1, 1507382, 0, 1, 1507383, 0, 1, 1507384, 0, 1, 1507385, 0, 1, 1507386, 0, 1, 1507387, 0, 1, 1507388, 0, 1, 1507389, 0, 1, 1507390, 0, 1, 1507391, 0, 1, 1507392, 0, 1, 1507393, 0, 1, 1507394, 0, 1, 1507395, 0, 1, 1507396, 0, 1, 1507397, 0, 1, 1507398, 0, 1, 1507399, 0, 1, 1507400, 0, 1, 1507401, 0, 1, 1507402, 0, 1, 1507403, 0, 1, 1507404, 0, 1, 1507405, 0, 1, 1507406, 0, 1, 1507407, 0, 1, 1507408, 0, 1, 1507409, 0, 1, 1507410, 0, 1, 1507411, 0, 1, 1507412, 0, 1, 1507413, 0, 1, 1507414, 0, 1, 1507415, 0, 1, 1507416, 0, 1, 1507417, 0, 1, 1507418, 0, 1, 1507419, 0, 1, 1507420, 0, 1, 1507421, 0, 1, 1507422, 0, 1, 1507423, 0, 1 ) + +[node name="Player" parent="." instance=ExtResource( 26 )] +position = Vector2( 32, 176 ) +beta_gameplay = true + +[node name="Death" type="TileMap" parent="."] +tile_set = ExtResource( 9 ) +cell_size = Vector2( 8, 8 ) +format = 1 + +[node name="Ladder" type="TileMap" parent="."] +tile_set = ExtResource( 21 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 196666, 0, 0, 262202, 0, 0, 262215, 0, 0, 327707, 0, 0, 327724, 0, 0, 327738, 0, 0, 327751, 0, 0, 393243, 0, 0, 393260, 0, 0, 458779, 0, 0, 458796, 0, 0, 458832, 0, 0, 524315, 0, 0, 524324, 0, 131073, 524332, 0, 0, 524368, 0, 0, 589851, 0, 0, 655363, 0, 0, 655387, 0, 0, 720899, 0, 0, 720923, 0, 0, 786435, 0, 0, 786459, 0, 0, 851995, 0, 0, 917511, 0, 0, 917579, 0, 0, 917583, 0, 0, 983047, 0, 0, 983115, 0, 0, 983119, 0, 0, 1048583, 0, 0, 1048651, 0, 0, 1048655, 0, 0, 1114119, 0, 0, 1114187, 0, 0, 1179723, 0, 0 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( -8, 104 ) +shape = SubResource( 1 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 776, 112 ) +shape = SubResource( 1 ) + +[node name="Platforms" type="Node2D" parent="."] + +[node name="Ladder" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 56, 112 ) +scale = Vector2( 1, 4 ) + +[node name="Ladder3" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 24, 80 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder2" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 216, 40 ) + +[node name="Ladder11" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 216, 48 ) +can_climb_right = false + +[node name="Ladder9" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 216, 56 ) +scale = Vector2( 1, 7 ) + +[node name="Ladder4" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 352, 40 ) + +[node name="Ladder13" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 352, 48 ) +can_climb_left = false + +[node name="Ladder12" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 352, 56 ) +scale = Vector2( 1, 2 ) + +[node name="Ladder5" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 464, 24 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder6" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 600, 112 ) +scale = Vector2( 1, 5 ) + +[node name="Ladder7" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 632, 112 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder8" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 640, 56 ) +scale = Vector2( 1, 2 ) + +[node name="Ladder10" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 568, 32 ) +scale = Vector2( 1, 2 ) + +[node name="Barrier" parent="Platforms" instance=ExtResource( 13 )] +position = Vector2( 107, 86 ) +scale = Vector2( 1, 26 ) +cost = 20 +label_offset = Vector2( 0, 4 ) + +[node name="Barrier2" parent="Platforms" instance=ExtResource( 13 )] +position = Vector2( 736, 54 ) +scale = Vector2( 1, 41.92 ) +cost = 30 +label_offset = Vector2( 0, 4 ) + +[node name="Barrier3" parent="Platforms" instance=ExtResource( 13 )] +position = Vector2( 424, 144 ) +scale = Vector2( 1, 32 ) +cost = 40 +label_offset = Vector2( 0, 4 ) + +[node name="Turniwood" parent="Platforms" instance=ExtResource( 16 )] +position = Vector2( 368, 144 ) +time = 70.0 + +[node name="Turniwood2" parent="Platforms" instance=ExtResource( 16 )] +position = Vector2( 304, 160 ) +time = 80.0 + +[node name="Turniwood8" parent="Platforms" instance=ExtResource( 16 )] +position = Vector2( 288, 144 ) +time = 80.0 + +[node name="Turniwood3" parent="Platforms" instance=ExtResource( 16 )] +position = Vector2( 400, 144 ) +time = 70.0 + +[node name="Turniwood4" parent="Platforms" instance=ExtResource( 16 )] +position = Vector2( 408, 160 ) +time = 120.0 + +[node name="Turniwood5" parent="Platforms" instance=ExtResource( 16 )] +position = Vector2( 704, 120 ) + +[node name="Turniwood6" parent="Platforms" instance=ExtResource( 16 )] +position = Vector2( 720, 104 ) + +[node name="Exit" parent="Platforms" instance=ExtResource( 11 )] +position = Vector2( 744, 36 ) +cost = 25 + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Shard" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 32, 32 ) + +[node name="Shard3" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 464, 168 ) +number = 3 + +[node name="Shard4" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 488, 16 ) +number = 2 + +[node name="Shard2" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 88, 104 ) +number = 1 + +[node name="Gold" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 48, 32 ) + +[node name="Gold2" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 64, 32 ) + +[node name="Gold3" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 80, 32 ) + +[node name="Gold4" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 168, 40 ) + +[node name="Gold5" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 192, 40 ) + +[node name="Gold6" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 136, 152 ) + +[node name="Gold7" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 152, 152 ) + +[node name="Gold8" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 104, 136 ) + +[node name="Gold9" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 88, 136 ) + +[node name="Gold10" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 72, 136 ) + +[node name="Gold11" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 136, 104 ) + +[node name="Gold13" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 728, 168 ) + +[node name="Gold14" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 184, 104 ) + +[node name="Gold43" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 208, 128 ) + +[node name="Gold44" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 232, 128 ) + +[node name="Gold45" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 264, 128 ) + +[node name="Gold15" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 96, 72 ) + +[node name="Gold17" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 72, 72 ) + +[node name="Gold19" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 8, 96 ) + +[node name="Star" parent="Collectibles" instance=ExtResource( 4 )] +position = Vector2( 16, 136 ) + +[node name="Star2" parent="Collectibles" instance=ExtResource( 4 )] +position = Vector2( 176, 64 ) +color = 1 + +[node name="Star3" parent="Collectibles" instance=ExtResource( 4 )] +position = Vector2( 232, 104 ) +color = 2 + +[node name="Star4" parent="Collectibles" instance=ExtResource( 4 )] +position = Vector2( 528, 168 ) +color = 3 + +[node name="Star5" parent="Collectibles" instance=ExtResource( 4 )] +position = Vector2( 752, 128 ) +color = 4 + +[node name="Gold21" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 120, 104 ) + +[node name="Arrow" parent="Collectibles" instance=ExtResource( 10 )] +position = Vector2( 264, 64 ) + +[node name="Arrow3" parent="Collectibles" instance=ExtResource( 10 )] +position = Vector2( 744, 88 ) + +[node name="Arrow2" parent="Collectibles" instance=ExtResource( 10 )] +position = Vector2( 556, 104 ) + +[node name="Gold18" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 440, 112 ) + +[node name="Gold20" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 384, 120 ) + +[node name="Gold27" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 384, 80 ) + +[node name="Gold28" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 440, 80 ) + +[node name="Gold29" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 496, 80 ) + +[node name="Gold22" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 328, 136 ) + +[node name="Gold24" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 328, 88 ) + +[node name="Gold26" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 344, 56 ) + +[node name="Gold30" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 296, 40 ) + +[node name="Gold31" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 328, 40 ) + +[node name="Gold35" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 408, 24 ) + +[node name="Gold36" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 432, 24 ) + +[node name="Gold34" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 680, 168 ) + +[node name="Gold32" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 264, 40 ) + +[node name="Gold46" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 240, 64 ) + +[node name="Gold33" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 624, 168 ) + +[node name="Gold25" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 312, 88 ) + +[node name="Gold23" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 344, 136 ) + +[node name="Gold16" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 464, 112 ) + +[node name="Gold40" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 488, 112 ) + +[node name="Gold38" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 600, 80 ) + +[node name="Gold41" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 576, 168 ) + +[node name="Gold42" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 544, 168 ) + +[node name="Gold39" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 632, 80 ) + +[node name="Gold47" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 672, 40 ) + +[node name="Gold48" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 696, 40 ) + +[node name="Gold51" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 664, 128 ) + +[node name="Gold52" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 720, 40 ) + +[node name="Gold49" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 688, 88 ) + +[node name="Gold50" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 656, 88 ) + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Slime" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 208, 104 ) +scale = Vector2( -1, 1 ) + +[node name="Slime4" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 520, 16 ) + +[node name="Bat" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 152, 48 ) +left_up_boundary = 4.0 +right_down_boundary = 2.0 + +[node name="Bat3" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 288, 88 ) +right_down_boundary = 5.0 + +[node name="Bat4" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 388, 144 ) +left_up_boundary = 3.0 +right_down_boundary = 3.5 +speed = 60 + +[node name="Bat5" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 392, 48 ) +right_down_boundary = 4.0 + +[node name="Bat6" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 432, 80 ) +left_up_boundary = 4.0 + +[node name="Bat7" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 620, 112 ) +left_up_boundary = 2.0 +right_down_boundary = 2.0 + +[node name="Bat8" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 632, 48 ) +left_up_boundary = 2.0 +right_down_boundary = 2.0 + +[node name="Bat9" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 584, 40 ) +left_up_boundary = 2.0 +right_down_boundary = 2.0 + +[node name="Bat2" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 48, 104 ) +left_up_boundary = 4.0 +right_down_boundary = 2.0 + +[node name="Slime2" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 192, 64 ) + +[node name="Snake" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 88, 72 ) +left_up_boundary = 2.0 +right_down_boundary = 2.0 +speed = 35 + +[node name="Snake3" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 440, 128 ) +right_down_boundary = 5.0 +speed = 70 + +[node name="Snake4" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 440, 168 ) +right_down_boundary = 6.0 +speed = 80 + +[node name="Snake5" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 568, 168 ) +left_up_boundary = 5.0 +right_down_boundary = 1.0 + +[node name="Snake2" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 216, 168 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 +speed = 60 + +[node name="Snake6" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 224, 128 ) +left_up_boundary = 5.0 +speed = 60 + +[node name="ColorRect2" type="ColorRect" parent="."] +margin_left = 512.0 +margin_right = 768.0 +margin_bottom = 192.0 +color = Color( 1, 0.843137, 0, 0.0901961 ) +script = ExtResource( 18 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect3" type="ColorRect" parent="."] +visible = false +margin_right = 256.0 +margin_bottom = 8.0 +color = Color( 0, 0, 0, 1 ) + +[node name="HUD" parent="." instance=ExtResource( 2 )] +song_name = "♫Rumble" + +[node name="TileMap" type="TileMap" parent="."] +tile_set = ExtResource( 8 ) +cell_size = Vector2( 8, 8 ) +format = 1 diff --git a/maps/hills_scholar.tscn b/maps/hills_scholar.tscn new file mode 100644 index 0000000..51a6a63 --- /dev/null +++ b/maps/hills_scholar.tscn @@ -0,0 +1,463 @@ +[gd_scene load_steps=35 format=2] + +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=1] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=2] +[ext_resource path="res://audio/music/rumble_loop.ogg" type="AudioStream" id=3] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=4] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=5] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=6] +[ext_resource path="res://graphics/backgrounds/hills.png" type="Texture" id=7] +[ext_resource path="res://tilesets/t_grass.tres" type="TileSet" id=8] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=9] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=10] +[ext_resource path="res://objects/environment/moving_platform/moving_platform.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/enemy/bat.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/environment/barrier/barrier.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/enemy/snake.tscn" type="PackedScene" id=14] +[ext_resource path="res://objects/enemy/slime.tscn" type="PackedScene" id=15] +[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=17] +[ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=18] +[ext_resource path="res://maps/map.gd" type="Script" id=19] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=20] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=21] +[ext_resource path="res://objects/lore/hills/bioslime.tscn" type="PackedScene" id=22] +[ext_resource path="res://objects/lore/hills/catbat.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/lore/hills/eviscerator.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/lore/hills/verdant_hills.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=26] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=27] +[ext_resource path="res://scripts/has_splash.gd" type="Script" id=28] +[ext_resource path="res://objects/lore/hills/speccy.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/hills/sg.tscn" type="PackedScene" id=30] +[ext_resource path="res://graphics/turniwood/turning_platform_wood_dark.png" type="Texture" id=31] +[ext_resource path="res://graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png" type="Texture" id=32] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=33] +[ext_resource path="res://maps/hills_speccy_detect.gd" type="Script" id=34] + +[node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 19 ) +target_time_any = 70 +target_time_100 = 180 +music = ExtResource( 3 ) +lore_entries = [ ExtResource( 25 ), ExtResource( 24 ), ExtResource( 22 ), ExtResource( 23 ), ExtResource( 30 ), ExtResource( 29 ) ] + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = -2 + +[node name="Background" type="Sprite" parent="CanvasLayer"] +z_index = -2 +texture = ExtResource( 7 ) +centered = false +__meta__ = { +"_edit_lock_": true +} + +[node name="Camera2D" parent="." instance=ExtResource( 6 )] + +[node name="BackgroundTiles" type="TileMap" parent="."] +tile_set = ExtResource( 8 ) +cell_size = Vector2( 8, 8 ) +format = 1 + +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 10 ) +tile_set = ExtResource( 8 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 65535, 3, 0, 96, 3, 0, 131071, 3, 65536, 65632, 3, 65536, 196607, 3, 65536, 131168, 3, 65536, 262143, 3, 65536, 196634, 5, 0, 196698, 3, 1, 196699, 3, 3, 196704, 3, 65536, 327679, 3, 65536, 262170, 3, 1, 262171, 3, 196610, 262172, 3, 196611, 262183, 5, 0, 262189, 5, 0, 262196, 3, 196609, 262197, 3, 196611, 262200, 3, 196609, 262201, 3, 196610, 262202, 3, 196611, 262228, 4, 0, 262230, 3, 1, 262231, 3, 3, 262234, 3, 65537, 262235, 3, 65539, 262236, 4, 0, 262240, 3, 65536, 393215, 3, 65536, 327682, 3, 1, 327683, 3, 2, 327684, 3, 2, 327685, 3, 2, 327686, 3, 3, 327690, 3, 196609, 327691, 3, 196610, 327692, 3, 196610, 327693, 3, 196610, 327694, 3, 196610, 327695, 3, 196611, 327706, 3, 65536, 327710, 3, 0, 327719, 3, 196609, 327720, 3, 196610, 327721, 3, 196610, 327722, 3, 196610, 327723, 3, 196610, 327724, 3, 196610, 327725, 3, 196611, 327762, 3, 1, 327763, 3, 2, 327764, 3, 2, 327765, 3, 2, 327766, 3, 65538, 327767, 3, 65538, 327768, 3, 2, 327769, 3, 2, 327770, 3, 65538, 327771, 3, 65538, 327772, 3, 3, 327776, 3, 65536, 458751, 3, 65536, 393218, 3, 131073, 393219, 3, 131074, 393220, 3, 131074, 393221, 3, 131074, 393222, 3, 131075, 393237, 5, 0, 393241, 3, 1, 393242, 3, 65539, 393246, 3, 65536, 393291, 4, 0, 393298, 3, 65537, 393299, 3, 65538, 393300, 3, 65538, 393301, 3, 131074, 393302, 3, 131074, 393303, 3, 131074, 393304, 3, 131074, 393305, 3, 131074, 393306, 3, 131074, 393307, 3, 131074, 393308, 3, 131075, 393312, 3, 65536, 524287, 3, 65536, 458770, 3, 1, 458771, 3, 2, 458772, 3, 2, 458773, 3, 3, 458776, 3, 196609, 458777, 3, 131074, 458778, 3, 131074, 458779, 3, 196610, 458780, 3, 196610, 458781, 3, 196610, 458782, 3, 131075, 458787, 3, 196609, 458788, 3, 196610, 458789, 3, 196611, 458815, 5, 0, 458819, 4, 0, 458827, 3, 1, 458828, 3, 196610, 458829, 3, 196610, 458830, 3, 196610, 458831, 3, 196610, 458832, 3, 196610, 458833, 3, 196610, 458834, 3, 131074, 458835, 3, 131074, 458836, 3, 65539, 458848, 3, 65536, 589823, 3, 65536, 524306, 3, 65537, 524307, 3, 65538, 524308, 3, 65538, 524309, 3, 65539, 524334, 5, 0, 524346, 5, 0, 524349, 3, 1, 524350, 3, 196610, 524351, 3, 196610, 524352, 3, 196610, 524353, 3, 196610, 524354, 3, 196610, 524355, 3, 3, 524363, 3, 65536, 524372, 3, 65536, 524384, 3, 65536, 655359, 3, 65536, 589838, 4, 0, 589842, 3, 65537, 589843, 3, 131074, 589844, 3, 131074, 589845, 3, 131074, 589846, 3, 3, 589854, 4, 0, 589859, 4, 0, 589863, 3, 0, 589870, 3, 196609, 589871, 3, 196610, 589872, 3, 196610, 589873, 3, 196610, 589874, 3, 196610, 589875, 3, 196610, 589876, 3, 196610, 589877, 3, 196610, 589878, 3, 2, 589879, 3, 196610, 589880, 3, 196610, 589881, 3, 196610, 589882, 3, 196610, 589883, 3, 196610, 589884, 3, 196610, 589885, 3, 131075, 589891, 3, 131073, 589892, 3, 196610, 589893, 3, 196610, 589894, 3, 196610, 589895, 3, 196610, 589896, 3, 196610, 589897, 3, 196610, 589898, 3, 196610, 589899, 3, 131075, 589908, 3, 65536, 589919, 3, 1, 589920, 3, 65539, 720895, 3, 65536, 655370, 5, 0, 655374, 3, 196609, 655375, 3, 196610, 655376, 3, 196610, 655377, 3, 196610, 655378, 3, 131075, 655382, 3, 131073, 655383, 3, 3, 655388, 4, 0, 655390, 3, 1, 655391, 3, 2, 655392, 3, 196610, 655393, 3, 196610, 655394, 3, 196610, 655395, 3, 196610, 655396, 3, 196610, 655397, 3, 196610, 655398, 3, 196610, 655399, 3, 131075, 655414, 3, 65536, 655444, 3, 65536, 655448, 5, 0, 655452, 5, 0, 655454, 3, 1, 655455, 3, 65538, 655456, 3, 65539, 786431, 3, 65536, 720902, 3, 196609, 720903, 3, 196610, 720904, 3, 196610, 720905, 3, 196610, 720906, 3, 196610, 720907, 3, 196610, 720908, 3, 196611, 720919, 3, 131073, 720920, 3, 196610, 720921, 3, 196610, 720922, 3, 196610, 720923, 3, 196610, 720924, 3, 196611, 720926, 3, 131073, 720927, 3, 131075, 720950, 3, 65536, 720977, 3, 1, 720978, 3, 2, 720979, 3, 2, 720980, 3, 131075, 720982, 3, 196609, 720983, 3, 196610, 720984, 3, 196610, 720985, 3, 196610, 720986, 3, 196610, 720987, 3, 196610, 720988, 3, 196610, 720989, 3, 196610, 720990, 3, 131074, 720991, 3, 131074, 720992, 3, 65539, 851967, 3, 65536, 786486, 3, 65536, 786513, 3, 131073, 786514, 3, 131074, 786515, 3, 131075, 786528, 3, 65536, 917503, 3, 65536, 851982, 3, 196609, 851983, 3, 196611, 852022, 3, 131072, 852037, 5, 0, 852040, 5, 0, 852044, 3, 1, 852045, 3, 2, 852046, 3, 2, 852047, 3, 3, 852064, 3, 65536, 983039, 3, 65536, 917517, 3, 0, 917522, 3, 0, 917531, 5, 0, 917548, 3, 196609, 917549, 3, 196610, 917550, 3, 196610, 917551, 3, 196611, 917554, 3, 196609, 917555, 3, 196610, 917556, 3, 196611, 917573, 3, 1, 917574, 3, 2, 917575, 3, 2, 917576, 3, 3, 917580, 3, 131073, 917581, 3, 131074, 917582, 3, 131074, 917583, 3, 131075, 917600, 3, 65536, 1048575, 3, 65536, 983051, 4, 0, 983052, 3, 1, 983053, 3, 65539, 983057, 3, 1, 983058, 3, 65538, 983059, 3, 2, 983060, 3, 2, 983061, 3, 2, 983062, 3, 3, 983065, 3, 196609, 983066, 3, 196610, 983067, 3, 196610, 983068, 3, 196610, 983069, 3, 3, 983073, 5, 0, 983078, 4, 0, 983103, 4, 0, 983106, 4, 0, 983109, 3, 131073, 983110, 3, 131074, 983111, 3, 131074, 983112, 3, 131075, 983124, 5, 0, 983134, 3, 196609, 983135, 3, 196610, 983136, 3, 65539, 1114111, 3, 65536, 1048587, 3, 196609, 1048588, 3, 131074, 1048589, 3, 131074, 1048590, 3, 196610, 1048591, 3, 196610, 1048592, 3, 196610, 1048593, 3, 131074, 1048594, 3, 131074, 1048595, 3, 131074, 1048596, 3, 131074, 1048597, 3, 131074, 1048598, 3, 131075, 1048605, 3, 131073, 1048606, 3, 196610, 1048607, 3, 196610, 1048608, 3, 196610, 1048609, 3, 196611, 1048612, 3, 196609, 1048613, 3, 196610, 1048614, 3, 196610, 1048615, 3, 196610, 1048616, 3, 196611, 1048638, 3, 1, 1048639, 3, 2, 1048640, 3, 2, 1048641, 3, 2, 1048642, 3, 3, 1048659, 3, 1, 1048660, 3, 2, 1048661, 3, 2, 1048662, 3, 3, 1048665, 3, 196608, 1048668, 3, 196608, 1048672, 3, 65536, 1179647, 3, 65536, 1114116, 5, 0, 1114120, 5, 0, 1114174, 3, 131073, 1114175, 3, 131074, 1114176, 3, 131074, 1114177, 3, 131074, 1114178, 3, 131075, 1114193, 5, 0, 1114194, 3, 1, 1114195, 3, 65538, 1114196, 3, 65538, 1114197, 3, 131074, 1114198, 3, 131075, 1114208, 3, 65536, 1245183, 3, 65537, 1179648, 3, 196610, 1179649, 3, 196611, 1179652, 3, 196609, 1179653, 3, 196610, 1179654, 3, 196610, 1179655, 3, 196610, 1179656, 3, 196611, 1179706, 3, 1, 1179707, 3, 3, 1179728, 3, 1, 1179729, 3, 2, 1179730, 3, 65538, 1179731, 3, 131074, 1179732, 3, 131075, 1179744, 3, 65536, 1310719, 3, 65536, 1245194, 4, 0, 1245199, 4, 0, 1245228, 4, 0, 1245242, 3, 131073, 1245243, 3, 131075, 1245264, 3, 131073, 1245265, 3, 131074, 1245266, 3, 131075, 1245280, 3, 65536, 1376255, 3, 65536, 1310730, 3, 1, 1310731, 3, 2, 1310732, 3, 2, 1310733, 3, 2, 1310734, 3, 2, 1310735, 3, 3, 1310761, 3, 1, 1310762, 3, 2, 1310763, 3, 2, 1310764, 3, 3, 1310773, 3, 1, 1310774, 3, 2, 1310775, 3, 3, 1310816, 3, 65536, 1441791, 3, 65536, 1376257, 4, 0, 1376260, 4, 0, 1376263, 4, 0, 1376264, 2, 1, 1376266, 3, 65537, 1376267, 3, 65538, 1376268, 3, 65538, 1376269, 3, 65538, 1376270, 3, 65538, 1376271, 3, 65538, 1376272, 3, 3, 1376275, 4, 0, 1376291, 4, 0, 1376297, 3, 65537, 1376298, 3, 65538, 1376299, 3, 65538, 1376300, 3, 65539, 1376309, 3, 65537, 1376310, 3, 65538, 1376311, 3, 65539, 1376312, 4, 0, 1376320, 4, 0, 1376327, 4, 0, 1376331, 4, 0, 1376339, 4, 0, 1376347, 4, 0, 1376352, 3, 65536, 1507327, 3, 65537, 1441792, 3, 2, 1441793, 3, 2, 1441794, 3, 2, 1441795, 3, 2, 1441796, 3, 2, 1441797, 3, 2, 1441798, 3, 2, 1441799, 3, 2, 1441800, 3, 2, 1441801, 3, 2, 1441802, 3, 65538, 1441803, 3, 65538, 1441804, 3, 65538, 1441805, 3, 65538, 1441806, 3, 65538, 1441807, 3, 65538, 1441808, 3, 65538, 1441809, 3, 2, 1441810, 3, 2, 1441811, 3, 2, 1441812, 3, 2, 1441813, 3, 3, 1441817, 3, 1, 1441818, 3, 2, 1441819, 3, 2, 1441820, 3, 2, 1441821, 3, 2, 1441822, 3, 2, 1441823, 3, 2, 1441824, 3, 2, 1441825, 3, 2, 1441826, 3, 2, 1441827, 3, 2, 1441828, 3, 2, 1441829, 3, 2, 1441830, 3, 2, 1441831, 3, 2, 1441832, 3, 2, 1441833, 3, 65538, 1441834, 3, 65538, 1441835, 3, 65538, 1441836, 3, 65539, 1441845, 3, 65537, 1441846, 3, 65538, 1441847, 3, 65538, 1441848, 3, 2, 1441849, 3, 2, 1441850, 3, 2, 1441851, 3, 2, 1441852, 3, 2, 1441853, 3, 2, 1441854, 3, 2, 1441855, 3, 2, 1441856, 3, 2, 1441857, 3, 2, 1441858, 3, 2, 1441859, 3, 2, 1441860, 3, 2, 1441861, 3, 2, 1441862, 3, 2, 1441863, 3, 3, 1441867, 3, 1, 1441868, 3, 2, 1441869, 3, 2, 1441870, 3, 2, 1441871, 3, 2, 1441872, 3, 2, 1441873, 3, 2, 1441874, 3, 2, 1441875, 3, 2, 1441876, 3, 2, 1441877, 3, 2, 1441878, 3, 2, 1441879, 3, 2, 1441880, 3, 2, 1441881, 3, 2, 1441882, 3, 2, 1441883, 3, 2, 1441884, 3, 2, 1441885, 3, 2, 1441886, 3, 2, 1441887, 3, 2, 1441888, 3, 65539, 1572863, 3, 65537, 1507328, 3, 65538, 1507329, 3, 65538, 1507330, 3, 65538, 1507331, 3, 65538, 1507332, 3, 65538, 1507333, 3, 65538, 1507334, 3, 65538, 1507335, 3, 65538, 1507336, 3, 65538, 1507337, 3, 65538, 1507338, 3, 65538, 1507339, 3, 65538, 1507340, 3, 65538, 1507341, 3, 65538, 1507342, 3, 65538, 1507343, 3, 65538, 1507344, 3, 65538, 1507345, 3, 65538, 1507346, 3, 65538, 1507347, 3, 65538, 1507348, 3, 65538, 1507349, 3, 65539, 1507353, 3, 65537, 1507354, 3, 65538, 1507355, 3, 65538, 1507356, 3, 65538, 1507357, 3, 65538, 1507358, 3, 65538, 1507359, 3, 65538, 1507360, 3, 65538, 1507361, 3, 65538, 1507362, 3, 65538, 1507363, 3, 65538, 1507364, 3, 65538, 1507365, 3, 65538, 1507366, 3, 65538, 1507367, 3, 65538, 1507368, 3, 65538, 1507369, 3, 65538, 1507370, 3, 65538, 1507371, 3, 65538, 1507372, 3, 65539, 1507381, 3, 65537, 1507382, 3, 65538, 1507383, 3, 65538, 1507384, 3, 65538, 1507385, 3, 65538, 1507386, 3, 65538, 1507387, 3, 65538, 1507388, 3, 65538, 1507389, 3, 65538, 1507390, 3, 65538, 1507391, 3, 65538, 1507392, 3, 65538, 1507393, 3, 65538, 1507394, 3, 65538, 1507395, 3, 65538, 1507396, 3, 65538, 1507397, 3, 65538, 1507398, 3, 65538, 1507399, 3, 65539, 1507403, 3, 65537, 1507404, 3, 65538, 1507405, 3, 65538, 1507406, 3, 65538, 1507407, 3, 65538, 1507408, 3, 65538, 1507409, 3, 65538, 1507410, 3, 65538, 1507411, 3, 65538, 1507412, 3, 65538, 1507413, 3, 65538, 1507414, 3, 65538, 1507415, 3, 65538, 1507416, 3, 65538, 1507417, 3, 65538, 1507418, 3, 65538, 1507419, 3, 65538, 1507420, 3, 65538, 1507421, 3, 65538, 1507422, 3, 65538, 1507423, 3, 65538, 1507424, 3, 65539, 1638399, 3, 131073, 1572864, 3, 131074, 1572865, 3, 131074, 1572866, 3, 131074, 1572867, 3, 131074, 1572868, 3, 131074, 1572869, 3, 131074, 1572870, 3, 131074, 1572871, 3, 131074, 1572872, 3, 131074, 1572873, 3, 131074, 1572874, 3, 131074, 1572875, 3, 131074, 1572876, 3, 131074, 1572877, 3, 131074, 1572878, 3, 131074, 1572879, 3, 131074, 1572880, 3, 131074, 1572881, 3, 131074, 1572882, 3, 131074, 1572883, 3, 131074, 1572884, 3, 131074, 1572885, 3, 131075, 1572889, 3, 131073, 1572890, 3, 131074, 1572891, 3, 131074, 1572892, 3, 131074, 1572893, 3, 131074, 1572894, 3, 131074, 1572895, 3, 131074, 1572896, 3, 131074, 1572897, 3, 131074, 1572898, 3, 131074, 1572899, 3, 131074, 1572900, 3, 131074, 1572901, 3, 131074, 1572902, 3, 131074, 1572903, 3, 131074, 1572904, 3, 131074, 1572905, 3, 131074, 1572906, 3, 131074, 1572907, 3, 131074, 1572908, 3, 131075, 1572917, 3, 131073, 1572918, 3, 131074, 1572919, 3, 131074, 1572920, 3, 131074, 1572921, 3, 131074, 1572922, 3, 131074, 1572923, 3, 131074, 1572924, 3, 131074, 1572925, 3, 131074, 1572926, 3, 131074, 1572927, 3, 131074, 1572928, 3, 131074, 1572929, 3, 131074, 1572930, 3, 131074, 1572931, 3, 131074, 1572932, 3, 131074, 1572933, 3, 131074, 1572934, 3, 131074, 1572935, 3, 131075, 1572939, 3, 131073, 1572940, 3, 131074, 1572941, 3, 131074, 1572942, 3, 131074, 1572943, 3, 131074, 1572944, 3, 131074, 1572945, 3, 131074, 1572946, 3, 131074, 1572947, 3, 131074, 1572948, 3, 131074, 1572949, 3, 131074, 1572950, 3, 131074, 1572951, 3, 131074, 1572952, 3, 131074, 1572953, 3, 131074, 1572954, 3, 131074, 1572955, 3, 131074, 1572956, 3, 131074, 1572957, 3, 131074, 1572958, 3, 131074, 1572959, 3, 131074, 1572960, 3, 131075 ) + +[node name="Player" parent="." instance=ExtResource( 26 )] +position = Vector2( 24, 176 ) + +[node name="Death" type="TileMap" parent="." groups=["death", "no_blood"]] +tile_set = ExtResource( 9 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 65515, 11, 0, 131050, 11, 0, 131052, 11, 0, 196586, 11, 0, 196587, 11, 0, 196588, 11, 0, 196589, 11, 0, 262122, 11, 0, 327658, 11, 0, 327661, 11, 0, 327662, 11, 0, 327663, 11, 0, 327664, 11, 0, 393194, 11, 0, 393196, 11, 0, 393201, 11, 0, 458730, 11, 0, 458732, 11, 0, 458734, 11, 0, 458736, 11, 0, 458737, 11, 0, 458739, 11, 0, 524265, 11, 0, 524266, 11, 0, 524267, 11, 0, 524268, 11, 0, 524273, 11, 0, 524274, 11, 0, 524275, 11, 0, 589800, 11, 0, 589801, 11, 0, 589811, 11, 0, 655336, 11, 0, 655337, 11, 0, 655338, 11, 0, 655340, 11, 0, 655343, 11, 0, 655344, 11, 0, 655345, 11, 0, 655346, 11, 0, 655347, 11, 0, 720872, 11, 0, 720873, 11, 0, 720874, 11, 0, 720875, 11, 0, 720879, 11, 0, 786408, 11, 0, 786409, 11, 0, 786410, 11, 0, 786411, 11, 0, 786415, 11, 0, 851944, 11, 0, 851945, 11, 0, 851946, 11, 0, 851951, 11, 0, 917482, 11, 0, 917484, 11, 0, 917487, 11, 0, 983018, 11, 0, 983021, 11, 0, 983024, 11, 0, 1048554, 11, 0, 1048555, 11, 0, 1048556, 11, 0, 1048557, 11, 0, 1048558, 11, 0, 1048559, 11, 0, 1048560, 11, 0, 1441814, 10, 0, 1441815, 10, 0, 1441816, 10, 0, 1441837, 10, 0, 1441838, 10, 0, 1441839, 10, 0, 1441840, 10, 0, 1441841, 10, 0, 1441842, 10, 0, 1441843, 10, 0, 1441844, 10, 0, 1441864, 10, 0, 1441865, 10, 0, 1441866, 10, 0, 1507350, 11, 0, 1507351, 11, 0, 1507352, 11, 0, 1507373, 11, 0, 1507374, 11, 0, 1507375, 11, 0, 1507376, 11, 0, 1507377, 11, 0, 1507378, 11, 0, 1507379, 11, 0, 1507380, 11, 0, 1507400, 11, 0, 1507401, 11, 0, 1507402, 11, 0 ) +script = ExtResource( 28 ) +splash_color = Color( 0.368627, 0.784314, 0.94902, 1 ) + +[node name="Ladder" type="TileMap" parent="."] +tile_set = ExtResource( 21 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 262218, 0, 0, 327749, 0, 0, 327754, 0, 0, 327775, 0, 0, 393285, 0, 0, 393290, 0, 0, 393311, 0, 0, 458821, 0, 0, 458847, 0, 0, 524383, 0, 0, 655362, 0, 0, 720898, 0, 0, 786434, 0, 0, 851970, 0, 0, 983046, 0, 0, 1048582, 0, 0, 1048618, 0, 0, 1114118, 0, 0, 1114154, 0, 0 ) + +[node name="Environment" type="Node2D" parent="."] + +[node name="Ladders" type="Node2D" parent="Environment"] + +[node name="Ladder" parent="Environment/Ladders" instance=ExtResource( 1 )] +position = Vector2( 48, 120 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder8" parent="Environment/Ladders" instance=ExtResource( 1 )] +position = Vector2( 336, 128 ) +scale = Vector2( 1, 2 ) + +[node name="Ladder5" parent="Environment/Ladders" instance=ExtResource( 1 )] +position = Vector2( 552, 40 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder6" parent="Environment/Ladders" instance=ExtResource( 1 )] +position = Vector2( 592, 32 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder7" parent="Environment/Ladders" instance=ExtResource( 1 )] +position = Vector2( 760, 40 ) +scale = Vector2( 1, 4 ) +can_climb_right = false + +[node name="Ladder2" parent="Environment/Ladders" instance=ExtResource( 1 )] +position = Vector2( 16, 80 ) +scale = Vector2( 1, 4 ) + +[node name="TurningPlatforms" type="Node2D" parent="Environment"] + +[node name="TurningPlatform" parent="Environment/TurningPlatforms" instance=ExtResource( 16 )] +position = Vector2( 136, 64 ) +texture = ExtResource( 31 ) + +[node name="TurningPlatform3" parent="Environment/TurningPlatforms" instance=ExtResource( 16 )] +position = Vector2( 368, 152 ) +time = 80.0 +texture = ExtResource( 31 ) + +[node name="TurningPlatform6" parent="Environment/TurningPlatforms" instance=ExtResource( 16 )] +position = Vector2( 384, 32 ) +texture = ExtResource( 31 ) + +[node name="TurningPlatform5" parent="Environment/TurningPlatforms" instance=ExtResource( 16 )] +position = Vector2( 616, 160 ) +texture = ExtResource( 31 ) + +[node name="TurningPlatform4" parent="Environment/TurningPlatforms" instance=ExtResource( 16 )] +position = Vector2( 408, 152 ) +time = 80.0 +texture = ExtResource( 31 ) + +[node name="MovingPlatform" parent="Environment" instance=ExtResource( 11 )] +position = Vector2( 624, 40 ) +scale = Vector2( 2, 1 ) +right_down_boundary = 3.0 + +[node name="MovingPlatform2" parent="Environment" instance=ExtResource( 11 )] +position = Vector2( 344, 80 ) +scale = Vector2( 2, 1 ) +left_up_boundary = 2.0 +right_down_boundary = 2.0 + +[node name="Barrier3" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 124, 109 ) +scale = Vector2( 1, 19 ) +cost = 30 + +[node name="ArrowSign" type="Sprite" parent="Environment"] +position = Vector2( 221, 170 ) +z_index = -6 +texture = ExtResource( 32 ) + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Star" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 4 )] +position = Vector2( 0, 136 ) + +[node name="Star2" parent="Collectibles" instance=ExtResource( 4 )] +position = Vector2( 112, 120 ) +color = 1 + +[node name="Key" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 40, 168 ) + +[node name="Key2" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 64, 168 ) + +[node name="Key3" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 88, 152 ) + +[node name="Key5" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 232, 112 ) + +[node name="Key6" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 48, 80 ) + +[node name="Key7" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 72, 80 ) + +[node name="Key8" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 96, 80 ) + +[node name="Key9" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 152, 48 ) + +[node name="Key10" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 120, 32 ) + +[node name="Key11" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 184, 72 ) + +[node name="Key14" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 120, 72 ) + +[node name="Key13" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 192, 48 ) + +[node name="Key4" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 112, 152 ) + +[node name="Key12" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 160, 168 ) + +[node name="Key15" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 288, 120 ) + +[node name="Key16" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 248, 120 ) + +[node name="Key20" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 360, 104 ) + +[node name="Key22" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 264, 72 ) + +[node name="Key24" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 296, 72 ) + +[node name="Key25" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 288, 48 ) + +[node name="Key26" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 488, 56 ) + +[node name="Key27" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 448, 64 ) + +[node name="Key33" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 432, 152 ) + +[node name="Key34" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 464, 136 ) + +[node name="Key35" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 472, 168 ) + +[node name="Key36" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 496, 120 ) + +[node name="Key37" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 520, 120 ) + +[node name="Key38" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 560, 104 ) + +[node name="Key39" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 640, 136 ) + +[node name="Key40" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 664, 120 ) + +[node name="Key41" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 688, 120 ) + +[node name="Key42" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 712, 120 ) + +[node name="Key43" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 736, 120 ) + +[node name="Key44" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 656, 32 ) + +[node name="Key45" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 680, 32 ) + +[node name="Key46" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 720, 16 ) + +[node name="Key47" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 712, 168 ) + +[node name="Key48" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 680, 168 ) + +[node name="Key49" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 648, 168 ) + +[node name="Key50" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 528, 56 ) + +[node name="Key28" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 408, 64 ) + +[node name="Key23" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 616, 168 ) + +[node name="Key21" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 320, 120 ) + +[node name="Key29" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 200, 168 ) + +[node name="Key30" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 232, 168 ) + +[node name="Key31" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 272, 168 ) + +[node name="Key32" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 304, 168 ) + +[node name="Key18" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 152, 112 ) + +[node name="Key19" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 216, 80 ) + +[node name="Key17" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 200, 112 ) + +[node name="Shard" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 17 )] +position = Vector2( 32, 32 ) + +[node name="Shard4" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 648, 80 ) +number = 2 + +[node name="Shard2" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 17 )] +position = Vector2( 456, 24 ) +number = 1 + +[node name="Shard3" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 688, 80 ) +number = 3 + +[node name="Star3" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 4 )] +position = Vector2( 416, 104 ) +color = 3 + +[node name="Arrow" parent="Collectibles" instance=ExtResource( 27 )] +position = Vector2( 176, 112 ) + +[node name="Arrow2" parent="Collectibles" instance=ExtResource( 27 )] +position = Vector2( 664, 80 ) + +[node name="Star4" parent="Collectibles" instance=ExtResource( 4 )] +position = Vector2( 760, 112 ) +color = 4 + +[node name="Star5" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 4 )] +position = Vector2( 224, 48 ) +color = 2 + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Bat" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 32, 104 ) +left_up_boundary = 4.0 +right_down_boundary = 5.0 + +[node name="Bat4" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 392, 104 ) +left_up_boundary = 3.0 +right_down_boundary = 2.0 +speed = 70 + +[node name="Bat8" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 408, 40 ) +left_up_boundary = 5.0 + +[node name="Bat9" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 576, 48 ) +left_up_boundary = 3.0 +right_down_boundary = 2.0 + +[node name="Bat2" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 72, 32 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 +speed = 50 + +[node name="Snake" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 64, 80 ) +left_up_boundary = 1.0 +right_down_boundary = 5.0 + +[node name="Snake4" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 336, 32 ) +left_up_boundary = 2.0 +right_down_boundary = 3.0 + +[node name="Snake5" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 392, 64 ) +left_up_boundary = 2.0 +right_down_boundary = 11.0 + +[node name="Snake6" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 688, 80 ) +right_down_boundary = 8.0 +speed = 70 + +[node name="Snake7" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 616, 96 ) +left_up_boundary = 1.0 +right_down_boundary = 3.0 +speed = 30 + +[node name="Snake2" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 96, 32 ) +left_up_boundary = 2.0 +right_down_boundary = 4.0 +speed = 30 + +[node name="Slime7" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 232, 24 ) +scale = Vector2( -1, 1 ) + +[node name="Slime6" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 552, 168 ) +scale = Vector2( -1, 1 ) + +[node name="ColorRect2" type="ColorRect" parent="."] +margin_left = 512.0 +margin_right = 768.0 +margin_bottom = 192.0 +color = Color( 1, 0.843137, 0, 0.0901961 ) +script = ExtResource( 18 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect3" type="ColorRect" parent="."] +margin_left = 256.0 +margin_right = 512.0 +margin_bottom = 192.0 +color = Color( 1, 0, 0.631373, 0.0901961 ) +script = ExtResource( 18 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="HUD" parent="." instance=ExtResource( 2 )] +song_name = "♫Rumble" + +[node name="TileMap" type="TileMap" parent="."] +tile_set = ExtResource( 8 ) +cell_size = Vector2( 8, 8 ) +format = 1 + +[node name="Exit" parent="." instance=ExtResource( 20 )] +position = Vector2( 757, 164 ) +cost = 25 + +[node name="SpeccyDetect" type="Node2D" parent="."] +position = Vector2( 224, 176 ) +script = ExtResource( 34 ) + +[node name="Speccy" parent="SpeccyDetect" instance=ExtResource( 33 )] +position = Vector2( -8, 0 ) +flip = true +message = "oi_go_right" diff --git a/maps/hills_speccy_detect.gd b/maps/hills_speccy_detect.gd new file mode 100644 index 0000000..5d89a23 --- /dev/null +++ b/maps/hills_speccy_detect.gd @@ -0,0 +1,15 @@ +extends Node2D + + +var try_for_speccy: bool = true + +onready var skippers: int = get_tree().get_nodes_in_group("speccy_skip").size() + + +func _physics_process(delta: float) -> void: + if try_for_speccy: + if get_tree().get_nodes_in_group("speccy_appear").empty(): + try_for_speccy = false + $Speccy.appear() + elif get_tree().get_nodes_in_group("speccy_skip").size() < skippers: + try_for_speccy = false diff --git a/maps/lab.tscn b/maps/lab.tscn new file mode 100644 index 0000000..e407fcc --- /dev/null +++ b/maps/lab.tscn @@ -0,0 +1,592 @@ +[gd_scene load_steps=53 format=2] + +[ext_resource path="res://graphics/backgrounds/factory.png" type="Texture" id=1] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=2] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=3] +[ext_resource path="res://tilesets/t_laboratory.tres" type="TileSet" id=4] +[ext_resource path="res://audio/music/mitten.ogg" type="AudioStream" id=5] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=6] +[ext_resource path="res://objects/enemy/snake.tscn" type="PackedScene" id=7] +[ext_resource path="res://objects/enemy/bat.tscn" type="PackedScene" id=8] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=9] +[ext_resource path="res://objects/enemy/spider.tscn" type="PackedScene" id=10] +[ext_resource path="res://objects/enemy/rolling_fiend.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/enemy/snail.tscn" type="PackedScene" id=12] +[ext_resource path="res://shaders/electricity.gdshader" type="Shader" id=13] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=14] +[ext_resource path="res://objects/enemy/artificial_soul.tscn" type="PackedScene" id=15] +[ext_resource path="res://objects/enemy/roboturret.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/enemy/scope.tscn" type="PackedScene" id=17] +[ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=18] +[ext_resource path="res://maps/map.gd" type="Script" id=19] +[ext_resource path="res://objects/lore/station/famicop.tscn" type="PackedScene" id=20] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=21] +[ext_resource path="res://objects/lore/lab/famis_lab.tscn" type="PackedScene" id=22] +[ext_resource path="res://objects/lore/hills/catbat.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/lore/hills/eviscerator.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/lore/rust/roboturret.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=26] +[ext_resource path="res://objects/environment/moving_platform/moving_platform.tscn" type="PackedScene" id=27] +[ext_resource path="res://objects/environment/electric_tiles/electric_tiles.tscn" type="PackedScene" id=28] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=30] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=31] +[ext_resource path="res://objects/enemy/hellarcher.tscn" type="PackedScene" id=32] +[ext_resource path="res://objects/environment/falling_block/falling_block_lab.tscn" type="PackedScene" id=33] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=34] +[ext_resource path="res://objects/lore/graveyard/hellarcher.tscn" type="PackedScene" id=35] +[ext_resource path="res://objects/lore/canopy/sabrespighter.tscn" type="PackedScene" id=36] +[ext_resource path="res://objects/lore/cave/shedge.tscn" type="PackedScene" id=37] +[ext_resource path="res://objects/lore/mountain/rolling_fiend.tscn" type="PackedScene" id=38] +[ext_resource path="res://objects/lore/graveyard/artificial_soul.tscn" type="PackedScene" id=39] +[ext_resource path="res://objects/enemy/sheriff.tscn" type="PackedScene" id=40] +[ext_resource path="res://objects/lore/lab/scope.tscn" type="PackedScene" id=41] +[ext_resource path="res://objects/lore/lab/sheriff.tscn" type="PackedScene" id=42] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=43] + +[sub_resource type="ShaderMaterial" id=9] +shader = ExtResource( 13 ) +shader_param/arc_speed = 4.0 +shader_param/arc_fps = 10.0 +shader_param/arc_scale = 8.0 +shader_param/arc_threshold = 0.15 +shader_param/arc_color = Color( 1, 0.93, 0, 1 ) +shader_param/gamma = 2.0 +shader_param/flash_rate = 3.0 +shader_param/flash_intensity = 0.2 +shader_param/background_color = Color( 0, 0, 0, 0 ) + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 16.9355, 4.03226 ) + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 10.4839, 10.4234 ) + +[sub_resource type="RectangleShape2D" id=4] +extents = Vector2( 3.62902, 7.19756 ) + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 3.83064, 7.22781 ) + +[sub_resource type="RectangleShape2D" id=6] +extents = Vector2( 7.15723, 4.01713 ) + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 16.1291, 4.03226 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 4.03226, 4.03226 ) + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 8, 128 ) + +[node name="Map2" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 19 ) +target_time_any = 60 +target_time_100 = 180 +music = ExtResource( 5 ) +lore_entries = [ ExtResource( 22 ), ExtResource( 39 ), ExtResource( 23 ), ExtResource( 35 ), ExtResource( 25 ), ExtResource( 36 ), ExtResource( 20 ), ExtResource( 38 ), ExtResource( 24 ), ExtResource( 37 ), ExtResource( 41 ), ExtResource( 42 ) ] + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = -2 + +[node name="Background" type="Sprite" parent="CanvasLayer"] +z_index = -2 +texture = ExtResource( 1 ) +centered = false +__meta__ = { +"_edit_lock_": true +} + +[node name="Camera2D" parent="." instance=ExtResource( 6 )] + +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 2 +material = ExtResource( 34 ) +tile_set = ExtResource( 4 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 9 +format = 1 +tile_data = PoolIntArray( 39, 1, 0, 46, 1, 0, 90, 1, 0, 65575, 1, 65536, 65582, 1, 65536, 65587, 1, 196609, 65588, 1, 196610, 65589, 1, 196610, 65590, 1, 196610, 65591, 1, 196610, 65592, 1, 196610, 65593, 1, 196610, 65594, 1, 196611, 65626, 1, 65536, 131111, 1, 131073, 131112, 1, 196610, 131113, 1, 196610, 131114, 1, 196610, 131115, 1, 196610, 131116, 1, 196610, 131117, 1, 196610, 131118, 1, 65539, 131119, 4, 65536, 131120, 4, 65536, 131121, 4, 65536, 131122, 4, 65536, 131162, 1, 65536, 196654, 1, 65536, 196698, 1, 65536, 262190, 1, 131073, 262191, 1, 196610, 262192, 1, 196610, 262193, 1, 2, 262194, 1, 196610, 262195, 1, 196611, 262205, 1, 1, 262206, 1, 196610, 262207, 1, 196610, 262208, 1, 196611, 262213, 1, 196609, 262214, 1, 196610, 262215, 1, 196610, 262216, 1, 196610, 262217, 1, 196611, 262229, 1, 196609, 262230, 1, 196610, 262231, 1, 196610, 262232, 1, 196610, 262233, 1, 196610, 262234, 1, 65539, 327699, 1, 0, 327729, 1, 65536, 327741, 1, 65536, 327770, 1, 65536, 393220, 1, 196609, 393221, 1, 196610, 393222, 1, 196611, 393235, 1, 131072, 393243, 1, 196609, 393244, 1, 196610, 393245, 1, 196610, 393246, 1, 196610, 393247, 1, 2, 393248, 1, 196610, 393249, 1, 3, 393265, 1, 65537, 393266, 1, 196610, 393267, 1, 196610, 393268, 1, 196610, 393269, 1, 196610, 393270, 1, 196610, 393271, 1, 196610, 393272, 1, 196610, 393273, 1, 196610, 393274, 1, 196610, 393275, 1, 196610, 393276, 1, 196610, 393277, 1, 131075, 393306, 1, 131073, 393307, 1, 196610, 393308, 1, 196610, 393309, 1, 3, 458783, 1, 65536, 458785, 1, 131073, 458786, 1, 196610, 458787, 1, 196610, 458788, 1, 196611, 458790, 1, 1, 458791, 1, 196610, 458792, 1, 196610, 458793, 1, 196610, 458794, 1, 196610, 458795, 1, 196610, 458796, 1, 196610, 458797, 1, 196610, 458798, 1, 196610, 458799, 1, 196610, 458800, 1, 196610, 458801, 1, 131075, 458815, 1, 1, 458816, 1, 196611, 458845, 1, 65536, 524319, 1, 65536, 524326, 1, 65536, 524351, 1, 65536, 524361, 1, 0, 524381, 1, 65536, 589855, 1, 65536, 589862, 1, 65536, 589886, 1, 1, 589887, 1, 65539, 589896, 1, 1, 589897, 1, 65539, 589903, 1, 196608, 589908, 1, 196609, 589909, 1, 196610, 589910, 1, 196610, 589911, 1, 196610, 589912, 1, 196610, 589913, 1, 196610, 589914, 1, 196610, 589915, 1, 196611, 589917, 1, 131072, 655390, 1, 196609, 655391, 1, 131075, 655398, 1, 65536, 655418, 1, 1, 655419, 1, 196610, 655420, 1, 196610, 655421, 1, 196610, 655422, 1, 131074, 655423, 1, 131075, 655431, 1, 196609, 655432, 1, 131074, 655433, 1, 131074, 655434, 1, 196611, 720899, 1, 0, 720916, 1, 196608, 720934, 1, 131073, 720935, 1, 196610, 720936, 1, 196610, 720937, 1, 196610, 720938, 1, 196610, 720939, 1, 196610, 720940, 1, 196610, 720941, 1, 196610, 720942, 1, 196610, 720943, 1, 196610, 720944, 1, 196610, 720945, 1, 196610, 720946, 1, 196610, 720947, 1, 196610, 720948, 1, 196610, 720949, 1, 196610, 720950, 1, 196610, 720951, 1, 196610, 720952, 1, 196610, 720953, 1, 196610, 720954, 1, 131075, 786435, 1, 131073, 786436, 1, 196610, 786437, 1, 196610, 786438, 1, 196610, 786439, 1, 196610, 786440, 1, 196610, 786441, 1, 196611, 786444, 1, 196609, 786445, 1, 196610, 786446, 1, 196610, 786447, 1, 196610, 786448, 1, 196610, 786449, 1, 196611, 917566, 1, 1, 917567, 1, 196610, 917568, 1, 196610, 917569, 1, 196610, 917570, 1, 196610, 917571, 1, 196610, 917572, 1, 196610, 917573, 1, 196610, 917574, 1, 196610, 917575, 1, 196610, 917576, 1, 196610, 917577, 1, 196610, 917578, 1, 196610, 917579, 1, 196610, 917580, 1, 196610, 917581, 1, 196610, 917582, 1, 196610, 917583, 1, 196610, 917584, 1, 196610, 917585, 1, 196610, 917586, 1, 196610, 917587, 1, 196610, 917588, 1, 196610, 917589, 1, 196611, 917591, 1, 196609, 917592, 1, 196610, 917593, 1, 196611, 917595, 1, 196609, 917596, 1, 196610, 917597, 1, 196611, 917598, 4, 65536, 917599, 4, 65536, 983077, 1, 1, 983078, 1, 196610, 983079, 1, 196610, 983080, 1, 196610, 983081, 1, 196610, 983082, 1, 196611, 983084, 1, 196608, 983087, 1, 196608, 983090, 1, 196609, 983091, 1, 196610, 983092, 1, 196610, 983093, 1, 196610, 983094, 1, 196610, 983095, 1, 196610, 983096, 1, 196610, 983097, 1, 196610, 983098, 1, 196610, 983099, 1, 196610, 983100, 1, 196611, 983102, 1, 65536, 1048578, 1, 196609, 1048579, 1, 196610, 1048580, 1, 3, 1048586, 1, 196609, 1048587, 1, 196611, 1048593, 1, 196609, 1048594, 1, 196610, 1048595, 1, 196611, 1048610, 1, 1, 1048611, 1, 196610, 1048612, 1, 196610, 1048613, 1, 65539, 1048638, 1, 65536, 1114116, 1, 131073, 1114117, 1, 3, 1114133, 1, 196608, 1114143, 1, 1, 1114144, 1, 196610, 1114145, 1, 196610, 1114146, 1, 131075, 1114149, 1, 65536, 1114174, 1, 65536, 1114190, 1, 0, 1179653, 1, 131073, 1179654, 1, 2, 1179655, 1, 3, 1179662, 1, 0, 1179677, 1, 196609, 1179678, 1, 196610, 1179679, 1, 131075, 1179685, 1, 131073, 1179686, 1, 196610, 1179687, 1, 196610, 1179688, 1, 196610, 1179689, 1, 196610, 1179690, 1, 3, 1179693, 1, 1, 1179694, 1, 196610, 1179695, 1, 196610, 1179696, 1, 3, 1179710, 1, 65536, 1179725, 1, 196609, 1179726, 1, 131075, 1179732, 1, 196609, 1179733, 1, 3, 1179737, 1, 0, 1245190, 1, 131073, 1245191, 1, 131074, 1245192, 1, 196610, 1245193, 1, 196610, 1245194, 1, 196610, 1245195, 1, 196610, 1245196, 1, 196610, 1245197, 1, 196610, 1245198, 1, 131074, 1245199, 1, 196610, 1245200, 1, 196611, 1245213, -1073741820, 65536, 1245226, 1, 131072, 1245228, 1, 196609, 1245229, 1, 131075, 1245232, 1, 131073, 1245233, 1, 3, 1245246, 1, 131072, 1245252, 1, 196609, 1245253, 1, 196610, 1245254, 1, 196610, 1245255, 1, 196610, 1245256, 1, 196611, 1245269, 1, 131073, 1245270, 1, 196611, 1245273, 1, 65536, 1310749, -1073741820, 65536, 1310762, -1073741820, 65536, 1310769, 1, 65537, 1310770, 1, 3, 1310809, 1, 65536, 1376285, -1073741820, 65536, 1376298, -1073741820, 65536, 1376305, 1, 131073, 1376306, 1, 131075, 1376321, 1, 196609, 1376322, 1, 196610, 1376323, 1, 196611, 1376345, 1, 131072, 1441792, 0, 1, 1441793, 0, 2, 1441794, 0, 2, 1441795, 0, 2, 1441796, 0, 2, 1441797, 0, 2, 1441798, 0, 2, 1441799, 0, 2, 1441800, 0, 2, 1441801, 0, 2, 1441802, 0, 2, 1441803, 0, 2, 1441804, 0, 2, 1441805, 0, 2, 1441806, 0, 2, 1441807, 0, 2, 1441808, 0, 2, 1441809, 0, 2, 1441810, 0, 2, 1441811, 0, 2, 1441812, 0, 2, 1441813, 0, 2, 1441814, 0, 2, 1441815, 0, 2, 1441816, 0, 2, 1441817, 0, 2, 1441818, 0, 2, 1441819, 0, 2, 1441820, 0, 2, 1441821, 0, 2, 1441822, 0, 2, 1441823, 0, 2, 1441824, 0, 2, 1441825, 0, 2, 1441826, 0, 2, 1441827, 1610612736, 2, 1441828, 1610612736, 2, 1441829, 0, 2, 1441830, 0, 2, 1441831, 0, 2, 1441832, 0, 2, 1441833, 0, 2, 1441834, 0, 2, 1441835, 0, 2, 1441836, 0, 2, 1441837, 0, 2, 1441838, 0, 2, 1441839, 0, 2, 1441840, 0, 2, 1441841, 0, 2, 1441842, 0, 2, 1441843, 0, 2, 1441844, 0, 2, 1441845, 0, 2, 1441846, 0, 2, 1441847, 0, 2, 1441848, 0, 2, 1441849, 0, 2, 1441850, 0, 2, 1441851, 0, 2, 1441852, 0, 2, 1441853, 0, 2, 1441854, 0, 2, 1441855, 0, 2, 1441856, 0, 2, 1441857, 0, 2, 1441858, 0, 2, 1441859, 0, 2, 1441860, 0, 2, 1441861, 0, 2, 1441862, 0, 2, 1441863, 0, 2, 1441864, 0, 2, 1441865, 0, 2, 1441866, 0, 2, 1441867, 0, 2, 1441868, 0, 2, 1441869, 0, 2, 1441870, 0, 2, 1441871, 0, 2, 1441872, 0, 2, 1441873, 0, 2, 1441874, 0, 2, 1441875, 0, 2, 1441876, 0, 2, 1441877, 0, 2, 1441878, 0, 2, 1441879, 0, 2, 1441880, 0, 2, 1441881, 0, 2, 1441882, 0, 2, 1441883, 0, 2, 1441884, 0, 2, 1441885, 0, 2, 1441886, 0, 2, 1441887, 0, 3, 1507328, 1, 196609, 1507329, 1, 196610, 1507330, 1, 196610, 1507331, 1, 196610, 1507332, 1, 196610, 1507333, 1, 196610, 1507334, 1, 196610, 1507335, 1, 196610, 1507336, 1, 196610, 1507337, 1, 196610, 1507338, 1, 196610, 1507339, 1, 196610, 1507340, 1, 196610, 1507341, 1, 196610, 1507342, 1, 196610, 1507343, 1, 196610, 1507344, 1, 196610, 1507345, 1, 196610, 1507346, 1, 196610, 1507347, 1, 196610, 1507348, 1, 196610, 1507349, 1, 196610, 1507350, 1, 196610, 1507351, 1, 196610, 1507352, 1, 196610, 1507353, 1, 196610, 1507354, 1, 196610, 1507355, 1, 196610, 1507356, 1, 196610, 1507357, 1, 196610, 1507358, 1, 196610, 1507359, 1, 196610, 1507360, 1, 196610, 1507361, 1, 196610, 1507362, 1, 196610, 1507363, 1, 196610, 1507364, 1, 196610, 1507365, 1, 196610, 1507366, 1, 196610, 1507367, 1, 196610, 1507368, 1, 196610, 1507369, 1, 196610, 1507370, 1, 196610, 1507371, 1, 196610, 1507372, 1, 196610, 1507373, 1, 196610, 1507374, 1, 196610, 1507375, 1, 196610, 1507376, 1, 196610, 1507377, 1, 196610, 1507378, 1, 196610, 1507379, 1, 196610, 1507380, 1, 196610, 1507381, 1, 196610, 1507382, 1, 196610, 1507383, 1, 196610, 1507384, 1, 196610, 1507385, 1, 196610, 1507386, 1, 196610, 1507387, 1, 196610, 1507388, 1, 196610, 1507389, 1, 196610, 1507390, 1, 196610, 1507391, 1, 196610, 1507392, 1, 196610, 1507393, 1, 196610, 1507394, 1, 196610, 1507395, 1, 196610, 1507396, 1, 196610, 1507397, 1, 196610, 1507398, 1, 196610, 1507399, 1, 196610, 1507400, 1, 196610, 1507401, 1, 196610, 1507402, 1, 196610, 1507403, 1, 196610, 1507404, 1, 196610, 1507405, 1, 196610, 1507406, 1, 196610, 1507407, 1, 196610, 1507408, 1, 196610, 1507409, 1, 196610, 1507410, 1, 196610, 1507411, 1, 196610, 1507412, 1, 196610, 1507413, 1, 196610, 1507414, 1, 196610, 1507415, 1, 196610, 1507416, 1, 196610, 1507417, 1, 196610, 1507418, 1, 196610, 1507419, 1, 196610, 1507420, 1, 196610, 1507421, 1, 196610, 1507422, 1, 196610, 1507423, 1, 196611 ) + +[node name="ElectricTiles" parent="." groups=["can_stain"] instance=ExtResource( 28 )] +material = SubResource( 9 ) +position = Vector2( -152, 16 ) +tile_data = PoolIntArray( 131172, 2, 196608, 262172, 2, 196609, 262173, 2, 196610, 262174, 2, 196610, 262175, 2, 196610, 262176, 2, 196611, 786436, 2, 196609, 786437, 2, 196610, 786438, 2, 196610, 786439, 2, 196610, 786440, 2, 196610, 786441, 2, 196611, 786526, 2, 196609, 786527, 2, 196610, 786528, 2, 196610, 786529, 2, 196610, 786530, 2, 196611, 1048586, 2, 196609, 1048587, 2, 196611, 1114154, 2, 1, 1114155, 2, 2, 1114156, 2, 3, 1179689, 2, 1, 1179690, 2, 65538, 1179691, 2, 65538, 1179692, 2, 65538, 1179693, 2, 3, 1245223, 2, 196609, 1245224, 2, 196610, 1245225, 2, 131074, 1245226, 2, 131074, 1245227, 2, 131074, 1245228, 2, 131074, 1245229, 2, 131075 ) + +[node name="CollisionShape2D" parent="ElectricTiles/DeathTile" index="0"] +position = Vector2( -31.4516, -28.2258 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="1"] +position = Vector2( 94.3548, -105.645 ) +shape = SubResource( 2 ) + +[node name="CollisionShape2D3" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="2"] +position = Vector2( 178.226, -15.3831 ) +shape = SubResource( 3 ) + +[node name="CollisionShape2D4" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="3"] +position = Vector2( 191.532, -12.1573 ) +shape = SubResource( 4 ) + +[node name="CollisionShape2D5" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="4"] +position = Vector2( 165.121, -12.127 ) +shape = SubResource( 5 ) + +[node name="CollisionShape2D6" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="5"] +position = Vector2( 155.544, -8.88611 ) +shape = SubResource( 6 ) + +[node name="CollisionShape2D7" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="6"] +position = Vector2( 520.161, -54.0323 ) +shape = SubResource( 7 ) + +[node name="CollisionShape2D10" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="7"] +position = Vector2( 545.968, -118.548 ) +shape = SubResource( 8 ) + +[node name="Player" parent="." instance=ExtResource( 26 )] +position = Vector2( 32, 176 ) + +[node name="Death" type="TileMap" parent="." groups=["death"]] +light_mask = 0 +tile_set = ExtResource( 9 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 196682, 12, 0, 262211, 12, 0, 262218, 12, 0, 262220, 12, 0, 262221, 12, 0, 262223, 12, 0, 327754, 12, 0, 327755, 12, 0, 327756, 12, 0, 327757, 12, 0, 327758, 12, 0, 327759, 12, 0, 327760, 12, 0, 327761, 12, 0, 327762, 12, 0, 327763, 12, 0, 327764, 12, 0, 393230, 12, 0, 393231, 12, 0, 393232, 12, 0, 393233, 12, 0, 393234, 12, 0, 393236, 12, 0, 393237, 12, 0, 393238, 12, 0, 393239, 12, 0, 393240, 12, 0, 393241, 12, 0, 393242, 12, 0, 458818, 12, 0, 589900, 12, 0, 589906, 12, 0, 655384, 12, 0, 655427, 12, 0, 720902, 1, 0, 720905, 1, 0, 720913, 1, 0, 786453, 12, 0, 786454, 12, 0, 786455, 12, 0, 786457, 12, 0, 786458, 12, 0, 786459, 12, 0, 786460, 12, 0, 851996, 12, 0, 852041, 1, 0, 852044, 1, 0, 852048, 1, 0, 852052, 1, 0, 852056, 1, 0, 917532, 12, 0, 917533, 12, 0, 917590, 12, 0, 917594, 12, 0, 983083, 12, 0, 983085, 12, 0, 983086, 12, 0, 983088, 12, 0, 983089, 12, 0, 1179717, 1, 0, 1179719, 1, 0, 1245257, -1610612735, 0, 1376307, 1, 0, 1376309, 1, 0, 1376311, 1, 0, 1376315, 1, 0, 2031608, 9, 0, 2031609, 6, 0, 2031610, 9, 0, 2031611, 6, 0, 2031612, 9, 0, 2097144, 6, 0, 2097145, 9, 0, 2097146, 6, 0, 2097147, 9, 0, 2097148, 6, 0, 2162680, 9, 0, 2162681, 6, 0, 2162682, 9, 0, 2162683, 6, 0, 2162684, 9, 0, 2228216, 6, 0, 2228217, 9, 0, 2228218, 6, 0, 2228219, 9, 0, 2228220, 6, 0, 2293752, 9, 0, 2293753, 6, 0, 2293754, 9, 0, 2293755, 6, 0, 2293756, 9, 0 ) + +[node name="Ladder" type="TileMap" parent="."] +tile_set = ExtResource( 21 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 196703, 0, 196609, 262239, 0, 196609, 327680, 536870912, 196609, 327775, 0, 196609, 393216, 536870912, 196609, 393311, 0, 196609, 458752, 536870912, 196609, 458847, 0, 196609, 524288, 536870912, 196609, 524383, 0, 196609, 589824, 536870912, 196609, 589919, 0, 196609, 655360, 536870912, 196609, 655455, 0, 196609, 720896, 536870912, 196609, 720991, 0, 196609, 786432, 536870912, 196609, 786450, 536870912, 196609, 786527, 0, 196609, 851968, 536870912, 196609, 851986, 536870912, 196609, 852063, 0, 196609, 917504, 536870912, 196609, 917599, 0, 196609, 983040, 536870912, 196609, 983135, 0, 196609, 1048576, 536870912, 196609, 1048671, 0, 196609, 1114191, 536870912, 196609, 1114207, 0, 196609, 1179727, 536870912, 196609, 1179743, 0, 196609, 1245263, 536870912, 196609, 1245279, 0, 196609 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( -8, 104 ) +shape = SubResource( 1 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 776, 112 ) +shape = SubResource( 1 ) + +[node name="Enemies" type="Node2D" parent="."] + +[node name="ArtificialSoul" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 88, 160 ) +__meta__ = { +"_edit_group_": true +} +radius = 3.0 +speed = 4.5 + +[node name="ArtificialSoul2" parent="Enemies/ArtificialSoul" instance=ExtResource( 15 )] +radius = 3.0 +initial_angle = 1.0 +speed = 4.5 + +[node name="ArtificialSoul3" parent="Enemies/ArtificialSoul" instance=ExtResource( 15 )] +radius = 3.0 +initial_angle = 2.0 +speed = 4.5 + +[node name="ArtificialSoul4" parent="Enemies/ArtificialSoul" instance=ExtResource( 15 )] +radius = 3.0 +initial_angle = 3.0 +speed = 4.5 + +[node name="ArtificialSoul5" parent="Enemies/ArtificialSoul" instance=ExtResource( 15 )] +radius = 3.0 +initial_angle = 4.0 +speed = 4.5 + +[node name="ArtificialSoul2" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 632, 56 ) +__meta__ = { +"_edit_group_": true +} +radius = 3.0 +speed = 4.0 + +[node name="ArtificialSoul5" parent="Enemies/ArtificialSoul2" instance=ExtResource( 15 )] +radius = 3.0 +initial_angle = 4.0 +speed = 4.0 + +[node name="Bat" parent="Enemies" instance=ExtResource( 8 )] +position = Vector2( 8, 136 ) +left_up_boundary = 5.0 + +[node name="Cop3" parent="Enemies" instance=ExtResource( 40 )] +position = Vector2( 312, 136 ) +turn_time = 1.25 + +[node name="Cop" parent="Enemies" instance=ExtResource( 17 )] +position = Vector2( 400, 80 ) +walk_speed = 40.0 +left_boundary = 3.0 +right_boundary = 5.0 +turn_time = 1.0 + +[node name="Shard" parent="Enemies/Cop" instance=ExtResource( 31 )] +position = Vector2( 10, 0 ) +number = 2 + +[node name="RollingFiend5" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 560, 144 ) +move_speed = 100.0 + +[node name="RollingFiend2" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 352, 112 ) +clockwise = true + +[node name="RollingFiend3" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 376, 128 ) +clockwise = true + +[node name="Hellarcher" parent="Enemies" instance=ExtResource( 32 )] +position = Vector2( 240, 40 ) +scale = Vector2( -1, 1 ) +shoot_time = 1.0 +arrow_speed = 100.0 + +[node name="Hellarcher2" parent="Enemies" instance=ExtResource( 32 )] +position = Vector2( 144, 120 ) +scale = Vector2( -1, 1 ) +shoot_time = 0.75 +arrow_speed = 100.0 + +[node name="Hellarcher3" parent="Enemies" instance=ExtResource( 32 )] +position = Vector2( 704, 64 ) +scale = Vector2( -1, 1 ) +arrow_speed = 125.0 + +[node name="Roboturret3" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 112, 88 ) +arrow_speed = 100.0 + +[node name="Roboturret6" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 616, 136 ) +shoot_time = 2.56 +arrow_speed = 200.0 + +[node name="Roboturret7" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 712, 136 ) +shoot_time = 1.5 +arrow_speed = 200.0 + +[node name="Roboturret4" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 408, 40 ) +scale = Vector2( -1, 1 ) +shoot_time = 0.5 + +[node name="Snail" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 88, 40 ) +left_up_boundary = 2.0 +right_down_boundary = 2.0 + +[node name="Spider6" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 336, 24 ) +speed = 60.0 +down_boundary = 3 + +[node name="Snake" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 456, 168 ) +left_up_boundary = 6.0 +right_down_boundary = 4.0 +speed = 70 + +[node name="Platforms" type="Node2D" parent="."] + +[node name="Ladder" parent="Platforms" instance=ExtResource( 3 )] +position = Vector2( 0, 40 ) +scale = Vector2( 1, 12 ) +can_climb_left = false + +[node name="Ladder3" parent="Platforms" instance=ExtResource( 3 )] +position = Vector2( 760, 24 ) +scale = Vector2( 1, 17 ) +can_climb_right = false + +[node name="Ladder4" parent="Platforms" instance=ExtResource( 3 )] +position = Vector2( 632, 136 ) +scale = Vector2( 1, 2 ) +can_climb_left = false + +[node name="Ladder6" parent="Platforms" instance=ExtResource( 3 )] +position = Vector2( 632, 152 ) + +[node name="Ladder2" parent="Platforms" instance=ExtResource( 3 )] +position = Vector2( 144, 104 ) + +[node name="Ladder5" parent="Platforms" instance=ExtResource( 3 )] +position = Vector2( 144, 96 ) +can_climb_left = false + +[node name="MovingPlatform" parent="Platforms" instance=ExtResource( 27 )] +position = Vector2( 176, 88 ) +scale = Vector2( 2, 1 ) +speed = 100 +right_down_boundary = 6.0 + +[node name="MovingPlatform3" parent="Platforms" instance=ExtResource( 27 )] +position = Vector2( 168, 48 ) +scale = Vector2( 2, 1 ) +speed = 40 +right_down_boundary = 5.0 + +[node name="MovingPlatform4" parent="Platforms" instance=ExtResource( 27 )] +position = Vector2( 536, 104 ) +scale = Vector2( 2, 1 ) +speed = 40 +left_up_boundary = 8.0 +right_down_boundary = 1.0 +move_direction = 1 + +[node name="FallingBlock3" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 144, 48 ) + +[node name="FallingBlock4" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 216, 80 ) + +[node name="FallingBlock6" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 600, 40 ) + +[node name="FallingBlock7" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 624, 32 ) + +[node name="FallingBlock5" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 136, 152 ) + +[node name="FallingBlock9" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 608, 72 ) + +[node name="FallingBlock10" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 656, 72 ) + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Key" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 48, 168 ) + +[node name="Key2" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 80, 168 ) + +[node name="Key3" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 112, 168 ) + +[node name="Key4" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 144, 168 ) + +[node name="Key5" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 136, 144 ) + +[node name="Key6" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 112, 136 ) + +[node name="Key7" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 56, 136 ) + +[node name="Key8" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 40, 128 ) + +[node name="Key9" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 24, 120 ) + +[node name="Key10" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 512, 24 ) + +[node name="Key13" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 40, 40 ) + +[node name="Key14" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 72, 40 ) + +[node name="Key15" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 104, 40 ) + +[node name="Key16" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 152, 32 ) + +[node name="Key17" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 264, 40 ) + +[node name="Key18" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 304, 48 ) + +[node name="Key19" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 336, 48 ) + +[node name="Key20" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 368, 48 ) + +[node name="Key21" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 304, 112 ) + +[node name="Key22" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 336, 112 ) + +[node name="Key23" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 352, 112 ) + +[node name="Key24" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 376, 112 ) + +[node name="Key25" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 408, 112 ) + +[node name="Key26" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 392, 144 ) + +[node name="Key27" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 368, 136 ) + +[node name="Key28" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 312, 168 ) + +[node name="Key29" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 264, 168 ) + +[node name="Key11" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 488, 24 ) + +[node name="Key30" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 528, 160 ) + +[node name="Key34" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 440, 112 ) + +[node name="Key35" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 480, 112 ) + +[node name="Key36" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 520, 104 ) + +[node name="Key37" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 544, 104 ) + +[node name="Key38" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 568, 72 ) + +[node name="Key39" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 584, 56 ) + +[node name="Key40" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 512, 48 ) + +[node name="Key43" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 552, 24 ) + +[node name="Key44" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 584, 24 ) + +[node name="Key45" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 728, 104 ) + +[node name="Key46" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 744, 104 ) + +[node name="Key47" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 568, 104 ) + +[node name="Key48" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 592, 104 ) + +[node name="Key49" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 616, 104 ) + +[node name="Key50" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 672, 136 ) + +[node name="Key41" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 496, 64 ) + +[node name="Key42" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 472, 72 ) + +[node name="Key31" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 600, 168 ) + +[node name="Key32" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 648, 168 ) + +[node name="Key33" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 688, 144 ) + +[node name="Key12" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 160, 80 ) + +[node name="Shard" parent="Collectibles" instance=ExtResource( 31 )] +position = Vector2( 240, 72 ) + +[node name="Shard2" parent="Collectibles" instance=ExtResource( 31 )] +position = Vector2( 384, 48 ) +number = 1 + +[node name="Shard3" parent="Collectibles" instance=ExtResource( 31 )] +position = Vector2( 744, 168 ) +number = 3 + +[node name="Star2" parent="Collectibles" instance=ExtResource( 30 )] +position = Vector2( 88, 144 ) + +[node name="Star3" parent="Collectibles" instance=ExtResource( 30 )] +position = Vector2( 368, 168 ) +color = 1 + +[node name="Star" parent="Collectibles" instance=ExtResource( 30 )] +position = Vector2( 696, 24 ) +color = 3 + +[node name="Star4" parent="Collectibles" instance=ExtResource( 30 )] +position = Vector2( 384, 24 ) +color = 2 + +[node name="Star5" parent="Collectibles" instance=ExtResource( 30 )] +position = Vector2( 728, 64 ) +color = 4 + +[node name="ColorRect2" type="ColorRect" parent="."] +margin_left = 512.0 +margin_right = 768.0 +margin_bottom = 192.0 +color = Color( 1, 0.843137, 0, 0.0901961 ) +script = ExtResource( 18 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect4" type="ColorRect" parent="."] +margin_left = 256.0 +margin_right = 512.0 +margin_bottom = 192.0 +color = Color( 0, 0.0627451, 1, 0.0901961 ) +script = ExtResource( 18 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect3" type="ColorRect" parent="."] +margin_right = 256.0 +margin_bottom = 8.0 +color = Color( 0, 0, 0, 1 ) + +[node name="HUD" parent="." instance=ExtResource( 2 )] +song_name = "♫Mitten" + +[node name="Exit" parent="." instance=ExtResource( 14 )] +position = Vector2( 736, 36 ) +cost = 25 + +[node name="Speccy" parent="." instance=ExtResource( 43 )] +position = Vector2( 128, 96 ) +flip = true +message = "go_get_em" + +[connection signal="ready" from="Speccy" to="Speccy" method="appear"] + +[editable path="ElectricTiles"] +[editable path="ElectricTiles/DeathTile"] diff --git a/maps/level_select.gd b/maps/level_select.gd index 82563df..7dc6e8f 100644 --- a/maps/level_select.gd +++ b/maps/level_select.gd @@ -9,7 +9,9 @@ onready var high_score_any = $HighScoreAny onready var high_score_100 = $HighScore100 onready var levelarrow_up = $LevelArrowUp onready var levelarrow_down = $LevelArrowDown - #Shards +onready var lives_mode_text = $LivesModeText +onready var easy_mode_text = $EasyModeText +#Shards onready var shards = [ $ShardGraphics/Shard, $ShardGraphics/Shard2, @@ -24,11 +26,16 @@ onready var shards = [ var save = 0 var current_level = 0 var current_shard = 0 +#Here just so game doesnt crash +export var target_time_100 = 0 +export var target_time_any = 0 # Called when the node enters the scene tree for the first time. func _ready(): + easy_mode_text.text = "difficulty: %s, Z to change" % ["sweet", "salty", "spicy", "pungent"][Game.difficulty] + Fade.fade_in(0.000000000000001) change_current_level(Game.current_level) - Game.ac_music.stop() + Audio.ac_music.stop() func _physics_process(delta): if Input.is_action_just_pressed("ui_up"): change_current_level(-1) @@ -42,9 +49,13 @@ func _physics_process(delta): #Draw Shard Title shard_title.text = level.shard_titles[current_shard] #Select level - if Input.is_action_just_pressed("jump"): + if Input.is_action_just_pressed("ui_accept"): Game.current_level = current_level Game.change_map(level.scene) + #Toggle lives mode + if Input.is_action_just_pressed("ui_cancel"): + Game.difficulty = (Game.difficulty + 1) % 4 + easy_mode_text.text = "difficulty: %s, Z to change" % ["sweet", "salty", "spicy", "pungent"][Game.difficulty] func change_current_shard(amount): if current_shard + amount != -1 && current_shard + amount != 8: #Check if in range @@ -70,17 +81,17 @@ func change_current_level(amount): shard_arrow.position.x = 76 #Load new data var save_id = LevelData.levels[current_level].save_id - var save_data = Save.get_level_data(save_id) + var save_data = Save.current_file.levels[save_id] # set any% scores high_score_any.text = "Any%%\n%05d\n%s" % [ save_data.score_any, - Game.timeify(save_data.time_any) + Game.format_time(save_data.time_any) ] # set 100% scores high_score_100.text = "100%%\n%05d\n%s" % [ save_data.score_100, - Game.timeify(save_data.time_100) + Game.format_time(save_data.time_100) ] # set collected shards for i in 8: - shards[i].visible = save_data.shards[i] + shards[i].visible = save_data.shards_collected[i] diff --git a/maps/level_select.tscn b/maps/level_select.tscn index f3d3ad5..b0fee28 100644 --- a/maps/level_select.tscn +++ b/maps/level_select.tscn @@ -1,14 +1,36 @@ -[gd_scene load_steps=11 format=2] +[gd_scene load_steps=15 format=2] -[ext_resource path="res://scripts/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] [ext_resource path="res://tilesets/t_gui.tres" type="TileSet" id=2] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=3] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=3] [ext_resource path="res://graphics/hud/levelselect_arrow.png" type="Texture" id=4] -[ext_resource path="res://objects/collectibles/gold.tscn" type="PackedScene" id=5] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=5] [ext_resource path="res://graphics/hud/levelselect_nexlevel.png" type="Texture" id=6] [ext_resource path="res://maps/level_select.gd" type="Script" id=7] [ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=8] [ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=9] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=10] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=11] + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 11 ) +shader_param/color_1 = Color( 0.121569, 0.454902, 1, 1 ) +shader_param/color_2 = Color( 0.258824, 0.909804, 0.396078, 1 ) +shader_param/checker_size = Vector2( 8, 8 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 11, 1 ) +shader_param/cycle_alternation = Vector2( 1, 1 ) +shader_param/uv_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 11 ) +shader_param/color_1 = Color( 1, 0.121569, 0.92549, 1 ) +shader_param/color_2 = Color( 0.258824, 0.909804, 0.396078, 0 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 0.2, 11 ) +shader_param/cycle_alternation = Vector2( 2.404, 1.608 ) +shader_param/uv_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) [sub_resource type="ShaderMaterial" id=2] shader = ExtResource( 3 ) @@ -19,9 +41,15 @@ shader_param/border_corners = false script = ExtResource( 7 ) [node name="BackGround" type="ColorRect" parent="."] +material = SubResource( 3 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="BackGround2" type="ColorRect" parent="."] +visible = false +material = SubResource( 4 ) margin_right = 256.0 margin_bottom = 192.0 -color = Color( 0, 0, 0, 1 ) [node name="ColorRect2" type="ColorRect" parent="."] margin_left = 43.0 @@ -37,62 +65,80 @@ format = 1 tile_data = PoolIntArray( 327685, 0, 0, 327686, 536870912, 1, 327687, 0, 1, 327688, 0, 1, 327689, 0, 1, 327690, 0, 1, 327691, 0, 1, 327692, 0, 1, 327693, 0, 1, 327694, 0, 1, 327695, 0, 1, 327696, 0, 1, 327697, 0, 1, 327698, 0, 1, 327699, 0, 1, 327700, 0, 1, 327701, 0, 1, 327702, 0, 1, 327703, 0, 1, 327704, 0, 1, 327705, 0, 1, 327706, 536870912, 0, 393221, 1073741824, 2, 393242, 1610612736, 2, 458757, 1073741824, 2, 458778, 1610612736, 2, 524293, 1073741824, 2, 524314, 1610612736, 2, 589829, 1073741824, 2, 589850, 1610612736, 2, 655365, 1073741824, 2, 655386, 1610612736, 2, 720901, 1073741824, 2, 720922, 1610612736, 2, 786437, 1073741824, 2, 786458, 1610612736, 2, 851973, 1073741824, 2, 851994, 1610612736, 2, 917509, 1073741824, 2, 917530, 1610612736, 2, 983045, 1073741824, 2, 983066, 1610612736, 2, 1048581, 1073741824, 2, 1048602, 1610612736, 2, 1114117, 1073741824, 2, 1114138, 1610612736, 2, 1179653, 1073741824, 0, 1179654, 1073741824, 1, 1179655, 1610612736, 1, 1179656, 1610612736, 1, 1179657, 1610612736, 1, 1179658, 1610612736, 1, 1179659, 1610612736, 1, 1179660, 1610612736, 1, 1179661, 1610612736, 1, 1179662, 1610612736, 1, 1179663, 1610612736, 1, 1179664, 1610612736, 1, 1179665, 1610612736, 1, 1179666, 1610612736, 1, 1179667, 1610612736, 1, 1179668, 1610612736, 1, 1179669, 1610612736, 1, 1179670, 1610612736, 1, 1179671, 1610612736, 1, 1179672, 1610612736, 1, 1179673, 1073741824, 1, 1179674, 1610612736, 0 ) [node name="Title" type="Label" parent="."] -margin_left = 72.0 +material = ExtResource( 10 ) +margin_left = 43.0 margin_top = 48.0 -margin_right = 184.0 -margin_bottom = 68.0 +margin_right = 213.0 +margin_bottom = 58.0 theme = ExtResource( 1 ) -text = "test text -" +text = "test text" align = 1 [node name="HighScoreText" type="Label" parent="."] +material = ExtResource( 10 ) margin_left = 56.0 -margin_top = 62.0 +margin_top = 61.0 margin_right = 200.0 -margin_bottom = 94.0 +margin_bottom = 71.0 theme = ExtResource( 1 ) -text = "High SCORE: - -" +text = "High SCORE:" align = 1 [node name="HighScoreAny" type="Label" parent="."] +material = ExtResource( 10 ) margin_left = 21.0 -margin_top = 74.0 +margin_top = 72.0 margin_right = 165.0 -margin_bottom = 111.0 +margin_bottom = 108.0 theme = ExtResource( 1 ) text = "any% 0000 -0:00:00 -" +0:00:00" align = 1 [node name="HighScore100" type="Label" parent="."] +material = ExtResource( 10 ) margin_left = 84.0 -margin_top = 74.0 +margin_top = 72.0 margin_right = 228.0 -margin_bottom = 111.0 +margin_bottom = 108.0 theme = ExtResource( 1 ) text = "100% 0000 -0:00:00 -" +0:00:00" align = 1 [node name="ShardTitle" type="Label" parent="."] +material = ExtResource( 10 ) margin_left = 43.0 -margin_top = 130.0 +margin_top = 134.0 margin_right = 213.0 -margin_bottom = 173.0 +margin_bottom = 144.0 theme = ExtResource( 1 ) -text = "Collect all coins -" +text = "AAAAAAAAAAAAAAAAAAAAAAAA" align = 1 +[node name="EasyModeText" type="Label" parent="."] +material = ExtResource( 10 ) +margin_top = 3.0 +margin_right = 256.0 +margin_bottom = 13.0 +theme = ExtResource( 1 ) +text = "difficulty" +align = 1 + +[node name="LivesModeText" type="Label" parent="."] +visible = false +material = ExtResource( 10 ) +margin_left = 2.0 +margin_top = 180.0 +margin_right = 258.0 +margin_bottom = 190.0 +theme = ExtResource( 1 ) +text = "lives are off press z to change this" + [node name="ShardGraphics" type="Node2D" parent="."] -position = Vector2( 0, 7 ) +position = Vector2( 0, 10 ) [node name="Shard11" type="Sprite" parent="ShardGraphics"] modulate = Color( 0, 0, 0, 1 ) @@ -193,7 +239,7 @@ visible = false position = Vector2( 111, 91 ) [node name="ShardArrow" type="Sprite" parent="."] -position = Vector2( 76, 113 ) +position = Vector2( 76, 116 ) texture = ExtResource( 4 ) [node name="LevelArrowUp" type="Sprite" parent="."] diff --git a/maps/leveldata/cave_info.tres b/maps/leveldata/cave_info.tres deleted file mode 100644 index b3e443b..0000000 --- a/maps/leveldata/cave_info.tres +++ /dev/null @@ -1,11 +0,0 @@ -[gd_resource type="Resource" load_steps=3 format=2] - -[ext_resource path="res://maps/leveldata/level_info.gd" type="Script" id=1] -[ext_resource path="res://maps/cave.tscn" type="PackedScene" id=2] - -[resource] -script = ExtResource( 1 ) -level_title = "Blue Ray Cavern" -shard_title = [ "Climb the big vine", "Next to the lone tree", "Slime's Treasure", "The snake pit", "5 Rainbow Stars", "Collection bonus", "Time bonus", "Life bonus", "", "" ] -level_number = 0 -scene = ExtResource( 2 ) diff --git a/maps/leveldata/level0_info.tres b/maps/leveldata/level0_info.tres deleted file mode 100644 index 39f0649..0000000 --- a/maps/leveldata/level0_info.tres +++ /dev/null @@ -1,11 +0,0 @@ -[gd_resource type="Resource" load_steps=3 format=2] - -[ext_resource path="res://maps/leveldata/level_info.gd" type="Script" id=1] -[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=2] - -[resource] -script = ExtResource( 1 ) -level_title = "Level 0" -shard_title = [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" ] -level_number = 0 -scene = ExtResource( 2 ) diff --git a/maps/leveldata/level1_info.tres b/maps/leveldata/level1_info.tres deleted file mode 100644 index 60c62b4..0000000 --- a/maps/leveldata/level1_info.tres +++ /dev/null @@ -1,11 +0,0 @@ -[gd_resource type="Resource" load_steps=3 format=2] - -[ext_resource path="res://maps/leveldata/level_info.gd" type="Script" id=1] -[ext_resource path="res://maps/map01.tscn" type="PackedScene" id=2] - -[resource] -script = ExtResource( 1 ) -level_title = "Verdant Hills" -shard_title = [ "Climb the big vine", "Next to the lone tree", "Slime's Treasure", "The snake pit", "5 Rainbow Stars", "Collection bonus", "Time bonus", "Life bonus", "", "" ] -level_number = 0 -scene = ExtResource( 2 ) diff --git a/maps/leveldata/level_info.gd b/maps/leveldata/level_info.gd deleted file mode 100644 index 683dbe7..0000000 --- a/maps/leveldata/level_info.gd +++ /dev/null @@ -1,6 +0,0 @@ -extends Resource - -export var level_title = "" -export var shard_title = ["","","","","","","","","","",] -export var level_number = 0 #level number, used for saving not for level order -export (PackedScene) var scene diff --git a/maps/leveldata/levels.gd b/maps/leveldata/levels.gd deleted file mode 100644 index 184a66f..0000000 --- a/maps/leveldata/levels.gd +++ /dev/null @@ -1,3 +0,0 @@ -extends Resource - -export var level = [] diff --git a/maps/leveldata/levels.tres b/maps/leveldata/levels.tres deleted file mode 100644 index 11f648b..0000000 --- a/maps/leveldata/levels.tres +++ /dev/null @@ -1,10 +0,0 @@ -[gd_resource type="Resource" load_steps=5 format=2] - -[ext_resource path="res://maps/leveldata/level1_info.tres" type="Resource" id=1] -[ext_resource path="res://maps/leveldata/levels.gd" type="Script" id=2] -[ext_resource path="res://maps/leveldata/level0_info.tres" type="Resource" id=3] -[ext_resource path="res://maps/leveldata/cave_info.tres" type="Resource" id=4] - -[resource] -script = ExtResource( 2 ) -level = [ ExtResource( 3 ), ExtResource( 1 ), ExtResource( 4 ) ] diff --git a/maps/map.gd b/maps/map.gd index 08f671c..e256720 100644 --- a/maps/map.gd +++ b/maps/map.gd @@ -1,18 +1,50 @@ extends Node2D + +const PauseScreen := preload("res://objects/hud/pause_screen.tscn") + export var target_time_any = 0 export var target_time_100 = 0 export (AudioStream) var music +export (Array, PackedScene) var lore_entries = [] #Bonuses var time_bonus = true var life_bonus = true var collectible_bonus = false +func _notification(what: int) -> void: + match what: + NOTIFICATION_WM_FOCUS_OUT: + if Debug.entry == false and Game.can_pause and not get_tree().paused: + var pause = PauseScreen.instance() + pause.lore_entries = lore_entries + get_parent().call_deferred("add_child", pause) + func _ready(): - Game.play_sound(music,Game.ac_music) + get_tree().paused = true + Game.can_pause = false + Fade.fade_in(Options.transition_speed_secs) + Fade.connect("fade_finished", get_tree(), "set_pause", [false], CONNECT_ONESHOT) + Fade.connect("fade_finished", Game, "set", ["can_pause", true], CONNECT_ONESHOT) + Audio.play_music(music) + Game.time = 0.0 + Game.still_playing = true + if Debug.reset_is_cheating: Debug.is_cheating = false func _physics_process(delta): - if Game.golds == 50 && Game.shards == 5: + if Game.still_playing: + Game.time += delta + if Debug.entry == false && Game.can_pause: + #Pause + if Input.is_action_just_pressed("pause") && !get_tree().paused: + var pause = PauseScreen.instance() + pause.lore_entries = lore_entries + get_parent().add_child(pause) + # restart level + if Input.is_action_just_pressed("restart") and not Game.marathon_mode: + Game.call_deferred("restart_level") + + if Game.keys == 50 && Game.shards == 5: #Time bonus collectible_bonus = true #Time bonus @@ -25,3 +57,4 @@ func _physics_process(delta): time_bonus = true else: time_bonus = false + diff --git a/maps/map01.tscn b/maps/map01.tscn deleted file mode 100644 index 8bf9b9c..0000000 --- a/maps/map01.tscn +++ /dev/null @@ -1,469 +0,0 @@ -[gd_scene load_steps=22 format=2] - -[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=1] -[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=2] -[ext_resource path="res://graphics/backgrounds/blue_sky.png" type="Texture" id=3] -[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=4] -[ext_resource path="res://objects/collectibles/gold.tscn" type="PackedScene" id=5] -[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=6] -[ext_resource path="res://tilesets/t_grass.tres" type="TileSet" id=7] -[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=8] -[ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=9] -[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=10] -[ext_resource path="res://objects/enemy/slime.tscn" type="PackedScene" id=11] -[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=12] -[ext_resource path="res://objects/enemy/bat.tscn" type="PackedScene" id=13] -[ext_resource path="res://objects/enemy/snake.tscn" type="PackedScene" id=14] -[ext_resource path="res://objects/environment/barrier/barrier.tscn" type="PackedScene" id=15] -[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=16] -[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=17] -[ext_resource path="res://maps/map.gd" type="Script" id=18] -[ext_resource path="res://audio/music/rumble_loop.mp3" type="AudioStream" id=19] -[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=20] - -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 8, 128 ) - -[node name="Map" type="Node2D" groups=["map"]] -pause_mode = 1 -script = ExtResource( 18 ) -target_time_any = 70 -target_time_100 = 180 -music = ExtResource( 19 ) - -[node name="Camera2D" parent="." instance=ExtResource( 8 )] - -[node name="Background" type="Sprite" parent="Camera2D"] -z_index = -2 -texture = ExtResource( 3 ) -centered = false -__meta__ = { -"_edit_lock_": true -} - -[node name="BackgroundTiles" type="TileMap" parent="."] -tile_set = ExtResource( 7 ) -cell_size = Vector2( 8, 8 ) -format = 1 -tile_data = PoolIntArray( 720943, 0, 0, 720944, 0, 0, 720945, 0, 0, 720946, 0, 0, 720947, 0, 0, 720948, 0, 0, 720949, 0, 0, 720950, 0, 0, 720951, 0, 0, 720952, 0, 0, 720953, 0, 0, 720954, 0, 0, 720955, 0, 0, 720956, 0, 0, 720957, 0, 0, 720958, 0, 0, 720959, 0, 0, 720960, 0, 0, 720961, 0, 0, 720962, 0, 0, 720963, 0, 0, 720964, 0, 0, 720965, 0, 0, 720966, 0, 0, 720967, 0, 0, 720968, 0, 0, 786503, 0, 3, 786504, 0, 3, 852039, 0, 3, 852040, 0, 3, 917572, 0, 3, 917573, 0, 3, 917574, 0, 3, 917575, 0, 3, 917576, 0, 3, 983108, 0, 3, 983111, 0, 3, 983112, 0, 3, 1048641, 0, 3, 1048642, 0, 3, 1048643, 0, 3, 1048647, 0, 3, 1048648, 0, 3, 1114164, 0, 3, 1114165, 0, 0, 1179692, 0, 3, 1310771, 0, 3 ) - -[node name="Ground" type="TileMap" parent="."] -tile_set = ExtResource( 7 ) -cell_size = Vector2( 8, 8 ) -format = 1 -tile_data = PoolIntArray( 196660, 2, 2, 196661, 2, 2, 196668, 0, 0, 196669, 0, 0, 196670, 0, 0, 196671, 0, 0, 196672, 0, 0, 196673, 0, 131073, 196675, 2, 3, 262194, 0, 65536, 262195, 0, 65537, 262196, 0, 65537, 262197, 0, 65537, 262198, 0, 65537, 262199, 0, 65538, 262204, 0, 3, 262205, 0, 3, 262206, 0, 3, 262207, 0, 3, 262208, 0, 1, 262209, 0, 131074, 262210, 0, 0, 262211, 0, 0, 262212, 0, 131073, 327683, 0, 65536, 327684, 0, 65537, 327685, 0, 65537, 327686, 0, 65537, 327687, 0, 65537, 327688, 0, 65537, 327689, 0, 65537, 327690, 0, 65537, 327691, 0, 65538, 327696, 2, 2, 327702, 2, 3, 327703, 2, 3, 327715, 2, 2, 327719, 2, 1, 327740, 0, 3, 327741, 0, 3, 327742, 0, 3, 327743, 0, 3, 327744, 0, 3, 327745, 0, 3, 327746, 0, 3, 327747, 0, 3, 327748, 0, 131074, 327749, 0, 131073, 327755, 2, 2, 327763, 2, 1, 327765, 2, 0, 327769, 2, 1, 327771, 2, 0, 393231, 0, 65536, 393232, 0, 65537, 393233, 0, 65538, 393236, 0, 65536, 393237, 0, 65537, 393238, 0, 65537, 393239, 0, 65537, 393240, 0, 65537, 393241, 0, 65538, 393244, 0, 65537, 393245, 0, 65537, 393246, 0, 65537, 393247, 0, 65537, 393248, 0, 65537, 393249, 0, 65537, 393250, 0, 65537, 393251, 0, 65537, 393252, 0, 65537, 393253, 0, 65537, 393254, 0, 65537, 393255, 0, 65537, 393256, 0, 65537, 393257, 0, 65537, 393258, 0, 65537, 393259, 0, 65538, 393276, 0, 3, 393277, 0, 3, 393278, 0, 3, 393279, 0, 3, 393280, 0, 3, 393281, 0, 3, 393282, 0, 3, 393283, 0, 3, 393284, 0, 3, 393285, 0, 3, 393290, 0, 65536, 393291, 0, 65537, 393292, 0, 65538, 393298, 0, 65537, 393299, 0, 65537, 393300, 0, 65537, 393301, 0, 65537, 393302, 0, 65537, 393303, 0, 65537, 393304, 0, 65537, 393305, 0, 65537, 393306, 0, 65537, 393307, 0, 65537, 393308, 0, 65537, 393309, 0, 65537, 393310, 0, 65537, 393311, 0, 65537, 458812, 0, 3, 458813, 0, 3, 458814, 0, 3, 458815, 0, 3, 458816, 0, 3, 458817, 0, 3, 458818, 0, 3, 458819, 0, 3, 458820, 0, 3, 458821, 0, 3, 524348, 0, 3, 524349, 0, 3, 524350, 0, 3, 524351, 0, 3, 524352, 0, 3, 524353, 0, 3, 524354, 0, 3, 524355, 0, 3, 524356, 0, 3, 524357, 0, 3, 589844, 0, 65536, 589845, 0, 65537, 589846, 0, 65537, 589847, 0, 65537, 589848, 0, 65537, 589849, 0, 65538, 589854, 0, 65536, 589855, 0, 65537, 589856, 0, 65537, 589857, 0, 65537, 589858, 0, 65537, 589884, 0, 3, 589885, 0, 3, 589886, 0, 3, 589887, 0, 3, 589888, 0, 3, 589889, 0, 3, 589890, 0, 3, 589891, 0, 3, 589892, 0, 3, 589893, 0, 3, 655368, 0, 65536, 655369, 0, 65537, 655370, 0, 65537, 655371, 0, 65537, 655372, 0, 65537, 655373, 0, 65538, 655407, 2, 1, 655410, 2, 3, 655413, 2, 2, 655416, 2, 0, 655420, 0, 3, 655421, 0, 3, 655422, 0, 3, 655423, 0, 3, 655424, 0, 3, 655425, 0, 3, 655426, 0, 3, 655427, 0, 3, 655428, 0, 3, 655429, 0, 3, 655431, 2, 2, 720906, 0, 196611, 720942, 0, 131072, 720943, 0, 0, 720944, 0, 0, 720945, 0, 0, 720946, 0, 0, 720947, 0, 0, 720948, 0, 0, 720949, 0, 0, 720950, 0, 0, 720951, 0, 0, 720952, 0, 0, 720953, 0, 0, 720954, 0, 0, 720955, 0, 0, 720956, 0, 0, 720957, 0, 0, 720958, 0, 0, 720959, 0, 0, 720960, 0, 0, 720961, 0, 0, 720962, 0, 0, 720963, 0, 0, 720964, 0, 0, 720965, 0, 0, 720966, 0, 0, 720967, 0, 0, 720968, 0, 0, 720979, 2, 3, 720980, 2, 3, 720990, 2, 0, 786442, 0, 196610, 786477, 0, 131072, 786478, 0, 131075, 786479, 0, 3, 786480, 0, 3, 786481, 0, 3, 786482, 0, 3, 786483, 0, 3, 786484, 0, 3, 786485, 0, 3, 786486, 0, 3, 786487, 0, 3, 786488, 0, 3, 786489, 0, 3, 786490, 0, 3, 786491, 0, 3, 786492, 0, 3, 786493, 0, 3, 786494, 0, 3, 786495, 0, 3, 786496, 0, 3, 786497, 0, 3, 786498, 0, 3, 786499, 0, 3, 786500, 0, 3, 786501, 0, 3, 786502, 0, 3, 786513, 0, 65537, 786514, 0, 65537, 786515, 0, 65537, 786516, 0, 65537, 786517, 0, 65537, 786518, 0, 65537, 786524, 0, 65537, 786525, 0, 65537, 786526, 0, 65537, 786527, 0, 65537, 851968, 0, 65537, 851969, 0, 65537, 851970, 0, 65537, 851971, 0, 65537, 851972, 0, 65537, 851973, 0, 65538, 851978, 0, 65539, 851989, 2, 2, 852006, 2, 1, 852008, 2, 1, 852010, 2, 1, 852012, 0, 131072, 852013, 0, 131075, 852014, 0, 3, 852015, 0, 3, 852016, 0, 3, 852017, 0, 3, 852018, 0, 3, 852019, 0, 3, 852020, 0, 3, 852021, 0, 3, 852022, 0, 3, 852023, 0, 3, 852024, 0, 3, 852025, 0, 3, 852026, 0, 3, 852027, 0, 3, 852028, 0, 3, 852029, 0, 3, 852030, 0, 3, 852031, 0, 3, 852032, 0, 3, 852033, 0, 3, 852034, 0, 3, 852035, 0, 3, 852036, 0, 3, 852037, 0, 3, 852038, 0, 3, 917514, 0, 65537, 917515, 0, 65537, 917516, 0, 65537, 917517, 0, 65537, 917518, 0, 65537, 917519, 0, 65537, 917520, 0, 65537, 917521, 0, 65538, 917525, 0, 65536, 917526, 0, 65537, 917527, 0, 65537, 917528, 0, 65537, 917529, 0, 65537, 917530, 0, 65537, 917531, 0, 65537, 917532, 0, 65537, 917533, 0, 65537, 917534, 0, 65537, 917535, 0, 65537, 917536, 0, 65537, 917537, 0, 65537, 917538, 0, 65538, 917541, 0, 65536, 917542, 0, 65537, 917543, 0, 65537, 917544, 0, 65537, 917545, 0, 65537, 917546, 0, 65537, 917547, 0, 65537, 917548, 0, 131075, 917549, 0, 3, 917550, 0, 3, 917551, 0, 3, 917552, 0, 3, 917553, 0, 3, 917554, 0, 3, 917555, 0, 3, 917556, 0, 3, 917557, 0, 3, 917558, 0, 3, 917559, 0, 3, 917560, 0, 3, 917561, 0, 3, 917562, 0, 3, 917563, 0, 3, 917564, 0, 3, 917565, 0, 3, 917566, 0, 3, 917567, 0, 3, 917568, 0, 3, 917569, 0, 3, 917570, 0, 3, 917571, 0, 3, 917573, 0, 131072, 917574, 0, 131073, 983084, 0, 3, 983085, 0, 3, 983086, 0, 3, 983087, 0, 3, 983088, 0, 3, 983089, 0, 3, 983090, 0, 3, 983091, 0, 3, 983092, 0, 3, 983093, 0, 3, 983094, 0, 3, 983095, 0, 3, 983096, 0, 3, 983097, 0, 3, 983098, 0, 3, 983099, 0, 3, 983100, 0, 3, 983101, 0, 3, 983102, 0, 3, 983103, 0, 3, 983104, 0, 3, 983105, 0, 3, 983106, 0, 3, 983107, 0, 3, 983108, 0, 131072, 983109, 0, 131075, 983110, 536870912, 2, 1048598, 2, 0, 1048600, 2, 1, 1048603, 2, 3, 1048606, 2, 2, 1048620, 0, 3, 1048621, 0, 3, 1048622, 0, 3, 1048623, 0, 3, 1048624, 0, 3, 1048625, 0, 3, 1048626, 0, 3, 1048627, 0, 3, 1048628, 0, 3, 1048629, 0, 3, 1048630, 0, 3, 1048631, 0, 3, 1048632, 0, 3, 1048633, 0, 3, 1048634, 0, 3, 1048635, 0, 3, 1048636, 0, 3, 1048637, 0, 3, 1048638, 0, 3, 1048639, 0, 3, 1048640, 0, 3, 1048641, 0, 3, 1048642, 0, 3, 1048643, 0, 131072, 1048644, 0, 131075, 1048645, 0, 1, 1048646, 536870912, 2, 1048657, 2, 2, 1048658, 2, 2, 1048660, 2, 2, 1048661, 2, 2, 1048669, 2, 2, 1114133, 0, 65536, 1114134, 0, 65537, 1114135, 0, 65537, 1114136, 0, 65537, 1114137, 0, 65537, 1114138, 0, 65537, 1114139, 0, 65537, 1114140, 0, 65537, 1114141, 0, 65537, 1114142, 0, 65537, 1114143, 0, 65537, 1114144, 0, 65537, 1114145, 0, 65537, 1114146, 0, 65538, 1114154, 2, 2, 1114156, 0, 3, 1114157, 0, 3, 1114158, 0, 3, 1114159, 0, 3, 1114160, 0, 3, 1114161, 0, 3, 1114162, 0, 3, 1114163, 0, 3, 1114165, 0, 65536, 1114166, 0, 0, 1114167, 0, 0, 1114168, 0, 0, 1114169, 0, 0, 1114170, 0, 0, 1114171, 0, 0, 1114172, 0, 0, 1114173, 0, 0, 1114174, 0, 0, 1114175, 0, 0, 1114176, 536870912, 0, 1114177, 536870912, 0, 1114178, 536870912, 0, 1114179, 0, 131075, 1114180, 0, 1, 1114181, 0, 1, 1114182, 0, 131074, 1114183, 0, 0, 1114184, 536870912, 0, 1114193, 0, 65537, 1114194, 0, 65537, 1114195, 0, 65537, 1114196, 0, 65537, 1114197, 0, 65537, 1114204, 0, 65537, 1114205, 0, 65537, 1114206, 0, 65537, 1114207, 0, 65537, 1179649, 0, 65536, 1179650, 0, 65537, 1179651, 0, 65538, 1179654, 0, 65536, 1179655, 0, 65537, 1179656, 0, 65537, 1179657, 0, 65537, 1179658, 0, 65537, 1179659, 0, 65537, 1179660, 0, 65537, 1179661, 0, 65537, 1179662, 0, 65538, 1179688, 0, 131072, 1179689, 0, 0, 1179690, 0, 0, 1179691, 0, 0, 1179692, 0, 131073, 1179693, 0, 3, 1179694, 0, 3, 1179695, 0, 3, 1179696, 0, 3, 1179697, 0, 3, 1179698, 0, 3, 1179699, 0, 3, 1179700, 0, 3, 1179701, 0, 3, 1179702, 0, 3, 1179703, 0, 3, 1179704, 0, 3, 1179705, 0, 3, 1179706, 0, 3, 1179707, 0, 3, 1179708, 0, 3, 1179709, 0, 3, 1179710, 0, 3, 1179711, 536870912, 1, 1179712, 0, 1, 1179713, 536870912, 3, 1179714, 536870912, 3, 1179715, 536870912, 3, 1179716, 536870912, 3, 1179717, 536870912, 3, 1179718, 536870912, 3, 1179719, 536870912, 3, 1179720, 536870912, 3, 1245202, 2, 2, 1245224, 0, 2, 1245225, 0, 1, 1245226, 0, 1, 1245227, 0, 1, 1245228, 536870912, 2, 1245229, 0, 3, 1245230, 0, 3, 1245231, 0, 3, 1245232, 0, 3, 1245233, 0, 3, 1245234, 0, 3, 1245235, 0, 3, 1245236, 0, 3, 1245237, 0, 3, 1245238, 0, 3, 1245239, 0, 3, 1245240, 0, 3, 1245241, 0, 3, 1245242, 0, 3, 1245243, 0, 3, 1245244, 0, 3, 1245245, 0, 3, 1245246, 0, 3, 1245247, 536870912, 1, 1245248, 0, 1, 1245249, 536870912, 3, 1245250, 536870912, 3, 1245251, 536870912, 3, 1245252, 536870912, 3, 1245253, 536870912, 3, 1245254, 536870912, 3, 1245255, 536870912, 3, 1245256, 536870912, 3, 1310736, 0, 131072, 1310737, 536870912, 0, 1310738, 536870912, 0, 1310739, 536870912, 0, 1310740, 0, 131073, 1310760, 0, 2, 1310761, 0, 1, 1310762, 0, 1, 1310763, 0, 1, 1310764, 536870912, 2, 1310765, 0, 3, 1310766, 0, 3, 1310767, 0, 3, 1310768, 0, 3, 1310769, 0, 3, 1310770, 0, 3, 1310772, 0, 3, 1310773, 0, 3, 1310774, 0, 3, 1310775, 0, 3, 1310776, 0, 3, 1310777, 0, 3, 1310778, 0, 3, 1310779, 0, 3, 1310780, 0, 3, 1310781, 0, 3, 1310782, 0, 3, 1310783, 536870912, 1, 1310784, 0, 1, 1310785, 536870912, 3, 1310786, 536870912, 3, 1310787, 536870912, 3, 1310788, 536870912, 3, 1310789, 536870912, 3, 1310790, 536870912, 3, 1310791, 536870912, 3, 1310792, 536870912, 3, 1376257, 2, 0, 1376261, 2, 1, 1376263, 2, 2, 1376266, 2, 2, 1376269, 2, 3, 1376271, 0, 131072, 1376272, 0, 131075, 1376273, 536870912, 1, 1376274, 536870912, 1, 1376275, 536870912, 1, 1376276, 0, 131074, 1376277, 0, 131073, 1376279, 2, 3, 1376281, 2, 1, 1376283, 2, 3, 1376285, 2, 0, 1376296, 0, 2, 1376297, 0, 1, 1376298, 0, 1, 1376299, 0, 1, 1376300, 536870912, 2, 1376301, 0, 3, 1376302, 0, 3, 1376303, 0, 3, 1376304, 0, 3, 1376305, 0, 3, 1376306, 0, 3, 1376307, 0, 3, 1376308, 0, 3, 1376309, 0, 3, 1376310, 0, 3, 1376311, 0, 3, 1376312, 0, 3, 1376313, 0, 3, 1376314, 0, 3, 1376315, 0, 3, 1376316, 0, 3, 1376317, 0, 3, 1376318, 0, 3, 1376319, 536870912, 1, 1376320, 0, 1, 1376321, 536870912, 3, 1376322, 536870912, 3, 1376323, 536870912, 3, 1376324, 536870912, 3, 1376325, 536870912, 3, 1376326, 536870912, 3, 1376327, 536870912, 3, 1376328, 536870912, 3, 1376331, 2, 2, 1376333, 2, 0, 1376336, 2, 3, 1376338, 2, 2, 1376340, 2, 1, 1376342, 2, 0, 1376344, 2, 2, 1376346, 2, 3, 1376349, 2, 0, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 131075, 1441808, 0, 1, 1441809, 0, 1, 1441810, 0, 1, 1441811, 0, 1, 1441812, 0, 1, 1441813, 0, 131074, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441824, 0, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 0, 0, 1441831, 0, 0, 1441832, 0, 131075, 1441833, 0, 1, 1441834, 0, 1, 1441835, 0, 1, 1441836, 0, 131074, 1441837, 0, 0, 1441838, 0, 0, 1441839, 0, 0, 1441840, 0, 0, 1441841, 0, 0, 1441842, 0, 0, 1441843, 0, 0, 1441844, 0, 0, 1441845, 0, 0, 1441846, 0, 0, 1441847, 0, 0, 1441848, 0, 0, 1441849, 0, 0, 1441850, 0, 0, 1441851, 0, 0, 1441852, 0, 0, 1441853, 0, 0, 1441854, 0, 0, 1441855, 0, 0, 1441856, 0, 0, 1441857, 0, 0, 1441858, 0, 0, 1441859, 0, 0, 1441860, 0, 0, 1441861, 0, 0, 1441862, 0, 0, 1441863, 0, 0, 1441864, 0, 0, 1441865, 0, 0, 1441866, 0, 0, 1441867, 0, 0, 1441868, 0, 0, 1441869, 0, 0, 1441870, 0, 0, 1441871, 0, 0, 1441872, 0, 0, 1441873, 0, 0, 1441874, 0, 0, 1441875, 0, 0, 1441876, 0, 0, 1441877, 0, 0, 1441878, 0, 0, 1441879, 0, 0, 1441880, 0, 0, 1441881, 0, 0, 1441882, 0, 0, 1441883, 0, 0, 1441884, 0, 0, 1441885, 0, 0, 1441886, 0, 0, 1441887, 0, 0, 1507328, 0, 1, 1507329, 0, 1, 1507330, 0, 1, 1507331, 0, 1, 1507332, 0, 1, 1507333, 0, 1, 1507334, 0, 1, 1507335, 0, 1, 1507336, 0, 1, 1507337, 0, 1, 1507338, 0, 1, 1507339, 0, 1, 1507340, 0, 1, 1507341, 0, 1, 1507342, 0, 1, 1507343, 0, 1, 1507344, 0, 1, 1507345, 0, 1, 1507346, 0, 1, 1507347, 0, 1, 1507348, 0, 1, 1507349, 0, 1, 1507350, 0, 1, 1507351, 0, 1, 1507352, 0, 1, 1507353, 0, 1, 1507354, 0, 1, 1507355, 0, 1, 1507356, 0, 1, 1507357, 0, 1, 1507358, 0, 1, 1507359, 0, 1, 1507360, 0, 1, 1507361, 0, 1, 1507362, 0, 1, 1507363, 0, 1, 1507364, 0, 1, 1507365, 0, 1, 1507366, 0, 1, 1507367, 0, 1, 1507368, 0, 1, 1507369, 0, 1, 1507370, 0, 1, 1507371, 0, 1, 1507372, 0, 1, 1507373, 0, 1, 1507374, 0, 1, 1507375, 0, 1, 1507376, 0, 1, 1507377, 0, 1, 1507378, 0, 1, 1507379, 0, 1, 1507380, 0, 1, 1507381, 0, 1, 1507382, 0, 1, 1507383, 0, 1, 1507384, 0, 1, 1507385, 0, 1, 1507386, 0, 1, 1507387, 0, 1, 1507388, 0, 1, 1507389, 0, 1, 1507390, 0, 1, 1507391, 0, 1, 1507392, 0, 1, 1507393, 0, 1, 1507394, 0, 1, 1507395, 0, 1, 1507396, 0, 1, 1507397, 0, 1, 1507398, 0, 1, 1507399, 0, 1, 1507400, 0, 1, 1507401, 0, 1, 1507402, 0, 1, 1507403, 0, 1, 1507404, 0, 1, 1507405, 0, 1, 1507406, 0, 1, 1507407, 0, 1, 1507408, 0, 1, 1507409, 0, 1, 1507410, 0, 1, 1507411, 0, 1, 1507412, 0, 1, 1507413, 0, 1, 1507414, 0, 1, 1507415, 0, 1, 1507416, 0, 1, 1507417, 0, 1, 1507418, 0, 1, 1507419, 0, 1, 1507420, 0, 1, 1507421, 0, 1, 1507422, 0, 1, 1507423, 0, 1 ) - -[node name="Player" parent="." instance=ExtResource( 1 )] -position = Vector2( 32, 166 ) - -[node name="Death" type="TileMap" parent="."] -tile_set = ExtResource( 10 ) -cell_size = Vector2( 8, 8 ) -format = 1 - -[node name="Ladder" type="TileMap" parent="."] -tile_set = ExtResource( 7 ) -cell_size = Vector2( 8, 8 ) -format = 1 -tile_data = PoolIntArray( 196666, 1, 0, 262202, 1, 0, 262215, 1, 0, 327707, 1, 0, 327738, 1, 0, 327751, 1, 0, 393243, 1, 0, 393260, 1, 0, 458779, 1, 0, 458796, 1, 0, 458832, 1, 0, 524315, 1, 0, 524332, 1, 0, 524368, 1, 0, 589851, 1, 0, 589904, 1, 0, 655363, 1, 0, 655387, 1, 0, 720899, 1, 0, 720923, 1, 0, 786435, 1, 0, 786459, 1, 0, 851995, 1, 0, 917511, 1, 0, 917579, 1, 0, 917583, 1, 0, 983047, 1, 0, 983115, 1, 0, 983119, 1, 0, 1048583, 1, 0, 1048651, 1, 0, 1048655, 1, 0, 1114119, 1, 0, 1114187, 1, 0, 1179723, 1, 0 ) - -[node name="StaticBody2D" type="StaticBody2D" parent="."] - -[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] -position = Vector2( -8, 104 ) -shape = SubResource( 1 ) - -[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] -position = Vector2( 776, 112 ) -shape = SubResource( 1 ) - -[node name="Platforms" type="Node2D" parent="."] - -[node name="Ladder" parent="Platforms" instance=ExtResource( 2 )] -position = Vector2( 56, 112 ) -scale = Vector2( 1, 4 ) - -[node name="Ladder3" parent="Platforms" instance=ExtResource( 2 )] -position = Vector2( 24, 80 ) -scale = Vector2( 1, 3 ) - -[node name="Ladder2" parent="Platforms" instance=ExtResource( 2 )] -position = Vector2( 216, 40 ) -scale = Vector2( 1, 9 ) - -[node name="Ladder4" parent="Platforms" instance=ExtResource( 2 )] -position = Vector2( 352, 48 ) -scale = Vector2( 1, 3 ) - -[node name="Ladder5" parent="Platforms" instance=ExtResource( 2 )] -position = Vector2( 464, 24 ) -scale = Vector2( 1, 3 ) - -[node name="Ladder6" parent="Platforms" instance=ExtResource( 2 )] -position = Vector2( 600, 112 ) -scale = Vector2( 1, 5 ) - -[node name="Ladder7" parent="Platforms" instance=ExtResource( 2 )] -position = Vector2( 632, 112 ) -scale = Vector2( 1, 3 ) - -[node name="Ladder8" parent="Platforms" instance=ExtResource( 2 )] -position = Vector2( 640, 56 ) -scale = Vector2( 1, 3 ) - -[node name="Ladder10" parent="Platforms" instance=ExtResource( 2 )] -position = Vector2( 568, 32 ) -scale = Vector2( 1, 2 ) - -[node name="Barrier" parent="Platforms" instance=ExtResource( 15 )] -position = Vector2( 107, 86 ) -scale = Vector2( 1, 26 ) -cost = 20 -label_offset = Vector2( 0, 4 ) - -[node name="Barrier2" parent="Platforms" instance=ExtResource( 15 )] -position = Vector2( 736, 54 ) -scale = Vector2( 1, 41.92 ) -cost = 30 -label_offset = Vector2( 0, 4 ) - -[node name="Barrier3" parent="Platforms" instance=ExtResource( 15 )] -position = Vector2( 424, 144 ) -scale = Vector2( 1, 32 ) -cost = 40 -label_offset = Vector2( 0, 4 ) - -[node name="Turniwood" parent="Platforms" instance=ExtResource( 16 )] -position = Vector2( 368, 144 ) -time = 70.0 - -[node name="Turniwood2" parent="Platforms" instance=ExtResource( 16 )] -position = Vector2( 304, 160 ) -time = 80.0 - -[node name="Turniwood8" parent="Platforms" instance=ExtResource( 16 )] -position = Vector2( 288, 144 ) -time = 80.0 - -[node name="Turniwood3" parent="Platforms" instance=ExtResource( 16 )] -position = Vector2( 400, 144 ) -time = 70.0 - -[node name="Turniwood4" parent="Platforms" instance=ExtResource( 16 )] -position = Vector2( 408, 160 ) -time = 120.0 - -[node name="Turniwood5" parent="Platforms" instance=ExtResource( 16 )] -position = Vector2( 704, 120 ) - -[node name="Turniwood6" parent="Platforms" instance=ExtResource( 16 )] -position = Vector2( 720, 104 ) - -[node name="Exit" parent="Platforms" instance=ExtResource( 20 )] -position = Vector2( 744, 36 ) -cost = 2 - -[node name="Collectibles" type="Node2D" parent="."] - -[node name="Shard" parent="Collectibles" instance=ExtResource( 12 )] -position = Vector2( 32, 32 ) - -[node name="Shard3" parent="Collectibles" instance=ExtResource( 12 )] -position = Vector2( 464, 168 ) -number = 3 - -[node name="Shard4" parent="Collectibles" instance=ExtResource( 12 )] -position = Vector2( 488, 16 ) -number = 2 - -[node name="Shard2" parent="Collectibles" instance=ExtResource( 12 )] -position = Vector2( 88, 104 ) -number = 1 - -[node name="Gold" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 48, 32 ) - -[node name="Gold2" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 64, 32 ) - -[node name="Gold3" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 80, 32 ) - -[node name="Gold4" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 168, 40 ) - -[node name="Gold5" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 192, 40 ) - -[node name="Gold6" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 136, 152 ) - -[node name="Gold7" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 152, 152 ) - -[node name="Gold8" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 104, 136 ) - -[node name="Gold9" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 88, 136 ) - -[node name="Gold10" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 72, 136 ) - -[node name="Gold11" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 136, 104 ) - -[node name="Gold13" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 728, 168 ) - -[node name="Gold14" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 184, 104 ) - -[node name="Gold43" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 208, 128 ) - -[node name="Gold44" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 232, 128 ) - -[node name="Gold45" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 264, 128 ) - -[node name="Gold15" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 96, 72 ) - -[node name="Gold17" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 72, 72 ) - -[node name="Gold19" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 8, 96 ) - -[node name="Star" parent="Collectibles" instance=ExtResource( 4 )] -position = Vector2( 16, 136 ) - -[node name="Star2" parent="Collectibles" instance=ExtResource( 4 )] -position = Vector2( 176, 64 ) -color = 1 - -[node name="Star3" parent="Collectibles" instance=ExtResource( 4 )] -position = Vector2( 232, 104 ) -color = 2 - -[node name="Star4" parent="Collectibles" instance=ExtResource( 4 )] -position = Vector2( 520, 128 ) -color = 3 - -[node name="Star5" parent="Collectibles" instance=ExtResource( 4 )] -position = Vector2( 752, 128 ) -color = 4 - -[node name="Gold21" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 120, 104 ) - -[node name="Arrow" parent="Collectibles" instance=ExtResource( 17 )] -position = Vector2( 264, 64 ) - -[node name="Arrow3" parent="Collectibles" instance=ExtResource( 17 )] -position = Vector2( 744, 88 ) - -[node name="Arrow2" parent="Collectibles" instance=ExtResource( 17 )] -position = Vector2( 528, 168 ) - -[node name="Gold18" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 440, 112 ) - -[node name="Gold20" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 384, 120 ) - -[node name="Gold27" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 384, 80 ) - -[node name="Gold28" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 408, 80 ) - -[node name="Gold29" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 432, 80 ) - -[node name="Gold22" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 328, 136 ) - -[node name="Gold24" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 328, 88 ) - -[node name="Gold26" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 344, 56 ) - -[node name="Gold30" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 296, 40 ) - -[node name="Gold31" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 328, 40 ) - -[node name="Gold35" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 408, 24 ) - -[node name="Gold36" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 432, 24 ) - -[node name="Gold34" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 680, 168 ) - -[node name="Gold32" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 264, 40 ) - -[node name="Gold46" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 240, 64 ) - -[node name="Gold33" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 624, 168 ) - -[node name="Gold25" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 312, 88 ) - -[node name="Gold23" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 344, 136 ) - -[node name="Gold16" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 464, 112 ) - -[node name="Gold40" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 488, 112 ) - -[node name="Gold38" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 600, 80 ) - -[node name="Gold41" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 576, 160 ) - -[node name="Gold42" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 544, 160 ) - -[node name="Gold39" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 632, 80 ) - -[node name="Gold47" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 672, 40 ) - -[node name="Gold48" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 696, 40 ) - -[node name="Gold51" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 664, 128 ) - -[node name="Gold52" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 720, 40 ) - -[node name="Gold49" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 680, 88 ) - -[node name="Gold50" parent="Collectibles" instance=ExtResource( 5 )] -position = Vector2( 656, 88 ) - -[node name="Enemies" type="Node2D" parent="."] - -[node name="Slime" parent="Enemies" instance=ExtResource( 11 )] -position = Vector2( 208, 104 ) -scale = Vector2( -1, 1 ) - -[node name="Slime4" parent="Enemies" instance=ExtResource( 11 )] -position = Vector2( 520, 16 ) - -[node name="Bat" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 152, 48 ) -left_up_boundry = 4.0 -right_down_boundry = 2.0 - -[node name="Bat3" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 288, 88 ) -right_down_boundry = 5.0 - -[node name="Bat4" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 388, 144 ) -left_up_boundry = 3.0 -right_down_boundry = 3.5 -speed = 60 - -[node name="Bat5" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 392, 48 ) -right_down_boundry = 4.0 - -[node name="Bat6" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 432, 88 ) -left_up_boundry = 4.0 - -[node name="Bat7" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 620, 112 ) -left_up_boundry = 2.0 -right_down_boundry = 2.0 - -[node name="Bat8" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 632, 48 ) -left_up_boundry = 2.0 -right_down_boundry = 2.0 - -[node name="Bat9" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 584, 40 ) -left_up_boundry = 2.0 -right_down_boundry = 2.0 - -[node name="Bat2" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 48, 104 ) -left_up_boundry = 4.0 -right_down_boundry = 2.0 - -[node name="Slime2" parent="Enemies" instance=ExtResource( 11 )] -position = Vector2( 192, 64 ) - -[node name="Snake" parent="Enemies" instance=ExtResource( 14 )] -position = Vector2( 88, 72 ) -left_up_boundry = 2.0 -right_down_boundry = 2.0 -speed = 35 - -[node name="Snake3" parent="Enemies" instance=ExtResource( 14 )] -position = Vector2( 440, 128 ) -right_down_boundry = 5.0 -speed = 70 - -[node name="Snake4" parent="Enemies" instance=ExtResource( 14 )] -position = Vector2( 440, 168 ) -right_down_boundry = 6.0 -speed = 80 - -[node name="Snake5" parent="Enemies" instance=ExtResource( 14 )] -position = Vector2( 568, 168 ) -right_down_boundry = 6.0 -speed = 60 - -[node name="Snake2" parent="Enemies" instance=ExtResource( 14 )] -position = Vector2( 216, 168 ) -left_up_boundry = 3.0 -right_down_boundry = 3.0 -speed = 60 - -[node name="Snake6" parent="Enemies" instance=ExtResource( 14 )] -position = Vector2( 224, 128 ) -left_up_boundry = 5.0 -speed = 60 - -[node name="ColorRect2" type="ColorRect" parent="."] -margin_left = 512.0 -margin_right = 768.0 -margin_bottom = 192.0 -color = Color( 1, 0.843137, 0, 0.0901961 ) -script = ExtResource( 9 ) -__meta__ = { -"_edit_lock_": true -} - -[node name="ColorRect3" type="ColorRect" parent="."] -visible = false -margin_right = 256.0 -margin_bottom = 8.0 -color = Color( 0, 0, 0, 1 ) - -[node name="HUD" parent="." instance=ExtResource( 6 )] - -[node name="TileMap" type="TileMap" parent="."] -tile_set = ExtResource( 7 ) -cell_size = Vector2( 8, 8 ) -format = 1 diff --git a/maps/mountain.tscn b/maps/mountain.tscn new file mode 100644 index 0000000..9285a2e --- /dev/null +++ b/maps/mountain.tscn @@ -0,0 +1,682 @@ +[gd_scene load_steps=44 format=2] + +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=1] +[ext_resource path="res://maps/map.gd" type="Script" id=2] +[ext_resource path="res://graphics/backgrounds/mountain_mountain.png" type="Texture" id=3] +[ext_resource path="res://graphics/backgrounds/mountain_clouds.png" type="Texture" id=4] +[ext_resource path="res://graphics/backgrounds/mountain_sunset.png" type="Texture" id=5] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=6] +[ext_resource path="res://tilesets/t_mountain.tres" type="TileSet" id=7] +[ext_resource path="res://objects/enemy/rolling_fiend.tscn" type="PackedScene" id=8] +[ext_resource path="res://objects/environment/moving_platform/moving_platform.tscn" type="PackedScene" id=9] +[ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=10] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=11] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/enemy/bat.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=14] +[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=15] +[ext_resource path="res://objects/enemy/snake.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=17] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/environment/rock/rock.tscn" type="PackedScene" id=19] +[ext_resource path="res://objects/environment/barrier/barrier.tscn" type="PackedScene" id=20] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=21] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=22] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=23] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/respawn_point.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=26] +[ext_resource path="res://audio/music/burnt_out.ogg" type="AudioStream" id=27] +[ext_resource path="res://objects/lore/hills/eviscerator.tscn" type="PackedScene" id=28] +[ext_resource path="res://objects/lore/hills/catbat.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/mountain/echo_mountain.tscn" type="PackedScene" id=30] +[ext_resource path="res://objects/lore/mountain/rolling_fiend.tscn" type="PackedScene" id=31] +[ext_resource path="res://graphics/turniwood/turning_platform_wood_dark.png" type="Texture" id=32] + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 24, 20 ) + +[sub_resource type="RectangleShape2D" id=9] +extents = Vector2( 32, 8 ) + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 36, 4 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 28, 4 ) + +[sub_resource type="RectangleShape2D" id=4] +extents = Vector2( 32, 4 ) + +[sub_resource type="RectangleShape2D" id=12] +extents = Vector2( 32, 4 ) + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 48, 64 ) + +[sub_resource type="RectangleShape2D" id=6] +extents = Vector2( 16, 8 ) + +[sub_resource type="RectangleShape2D" id=11] +extents = Vector2( 24, 4 ) + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 4, 294 ) + +[sub_resource type="Animation" id=10] +resource_name = "liftoff" +length = 3.0 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Background/BackgroundMountain/Mountain:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.0530503, 0.10305, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.8, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 128, 96 ), Vector2( 124, 96 ), Vector2( 132, 96 ), Vector2( 128, 96 ), Vector2( 124, 96 ), Vector2( 132, 96 ), Vector2( 128, 96 ), Vector2( 124, 96 ), Vector2( 132, 96 ), Vector2( 128, 96 ), Vector2( 124, 96 ), Vector2( 132, 96 ), Vector2( 128, 96 ), Vector2( 128, 96 ), Vector2( 128, -999 ) ] +} + +[node name="Map2" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 2 ) +target_time_any = 45 +target_time_100 = 185 +music = ExtResource( 27 ) +lore_entries = [ ExtResource( 30 ), ExtResource( 28 ), ExtResource( 29 ), ExtResource( 31 ) ] + +[node name="Background" type="Node" parent="."] + +[node name="Background" type="CanvasLayer" parent="Background"] +layer = -101 + +[node name="Sunset" type="Sprite" parent="Background/Background"] +position = Vector2( 128, 96 ) +z_index = -2 +texture = ExtResource( 5 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="BackgroundMountain" type="CanvasLayer" parent="Background"] +layer = -100 +follow_viewport_enable = true +follow_viewport_scale = 0.25 + +[node name="Mountain" type="Sprite" parent="Background/BackgroundMountain"] +position = Vector2( 128, 96 ) +scale = Vector2( 4, 4 ) +z_index = -2 +texture = ExtResource( 3 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Background2" type="CanvasLayer" parent="Background"] +layer = -100 + +[node name="Clouds" type="Sprite" parent="Background/Background2"] +pause_mode = 1 +position = Vector2( 128, 96 ) +z_index = -2 +texture = ExtResource( 4 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 11 ) +tile_set = ExtResource( 7 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( -2818047, 0, 65536, -2818046, 0, 65537, -2818045, 0, 65537, -2818044, 0, 65537, -2818043, 0, 65538, -2818033, 0, 65536, -2818032, 0, 65537, -2818031, 0, 65537, -2818030, 0, 65537, -2818029, 0, 65538, -2818022, 0, 0, -2818021, 0, 196609, -2818020, 0, 196609, -2818019, 0, 196609, -2818018, 0, 196609, -2818017, 0, 196609, -2752486, 0, 1, -2686950, 0, 1, -2621440, 0, 0, -2621439, 0, 65537, -2621438, 0, 65537, -2621437, 0, 65537, -2621436, 0, 65537, -2621435, 0, 65537, -2621434, 0, 65537, -2621433, 0, 65537, -2621432, 0, 65537, -2621431, 0, 65537, -2621430, 0, 65537, -2621429, 0, 65537, -2621428, 0, 65537, -2621427, 0, 65537, -2621426, 0, 65537, -2621425, 0, 65537, -2621424, 0, 65538, -2621414, 0, 1, -2621413, 0, 0, -2621412, 0, 0, -2621411, 0, 0, -2555904, 0, 1, -2555878, 0, 1, -2490368, 0, 1, -2490342, 0, 1, -2424832, 0, 1, -2424806, 0, 1, -2359296, 0, 1, -2359270, 0, 1, -2293760, 0, 0, -2293759, 0, 0, -2293758, 0, 0, -2293757, 0, 0, -2293756, 0, 0, -2293755, 0, 0, -2293744, 0, 65536, -2293743, 0, 65537, -2293742, 0, 65538, -2293734, 0, 0, -2293733, 0, 0, -2293732, 0, 0, -2097152, 0, 0, -2097151, 0, 0, -2097150, 0, 0, -2097149, 0, 0, -2097148, 0, 0, -2097147, 0, 0, -2097146, 0, 0, -2097145, 0, 0, -2097144, 0, 0, -2097143, 0, 0, -2097142, 0, 0, -2097141, 0, 0, -2097140, 0, 0, -2097139, 0, 0, -2097138, 0, 0, -2097137, 0, 0, -2097136, 0, 0, -2097135, 0, 0, -2097134, 0, 0, -2031616, 0, 1, -1966080, 0, 1, -1900544, 0, 1, -1900535, 0, 0, -1900534, 0, 0, -1900533, 0, 0, -1900532, 0, 0, -1900531, 0, 0, -1900530, 0, 0, -1900529, 0, 0, -1900528, 0, 0, -1900527, 0, 0, -1900526, 0, 0, -1835008, 0, 1, -1835004, 0, 0, -1835001, 0, 0, -1835000, 0, 0, -1834999, 0, 0, -1769472, 0, 1, -1769463, 0, 0, -1769447, 0, 0, -1769446, 0, 0, -1769445, 0, 0, -1703936, 0, 1, -1703927, 0, 0, -1703909, 0, 1, -1638400, 0, 1, -1638391, 0, 0, -1638390, 0, 0, -1638389, 0, 0, -1638388, 0, 0, -1638387, 0, 0, -1638386, 0, 0, -1638385, 0, 0, -1638384, 0, 0, -1638383, 0, 0, -1638382, 0, 0, -1638381, 0, 0, -1638380, 0, 0, -1638373, 0, 1, -1572864, 0, 1, -1572844, 0, 1, -1572837, 0, 1, -1507328, 0, 1, -1507308, 0, 1, -1507301, 0, 1, -1441792, 0, 1, -1441772, 0, 1, -1441765, 0, 1, -1376256, 0, 1, -1376236, 0, 1, -1376229, 0, 1, -1310720, 0, 1, -1310700, 0, 1, -1310693, 0, 1, -1245184, 0, 1, -1245164, 0, 1, -1245157, 0, 65536, -1245156, 0, 65537, -1245155, 0, 65537, -1245154, 0, 65537, -1245153, 0, 65538, -1179648, 0, 65536, -1179647, 0, 65537, -1179646, 0, 65537, -1179645, 0, 65537, -1179644, 0, 65537, -1179643, 0, 65537, -1179642, 0, 65537, -1179641, 0, 65537, -1179640, 0, 65538, -1179638, 0, 65536, -1179637, 0, 65537, -1179636, 0, 65537, -1179635, 0, 65538, -1179631, 0, 65536, -1179630, 0, 65537, -1179629, 0, 65537, -1179628, 0, 65538, -917480, 0, 65536, -917479, 0, 65537, -917478, 0, 65537, -917477, 0, 65538, -851955, 0, 65536, -851954, 0, 65537, -851953, 0, 65538, -655359, 0, 65536, -655358, 0, 65537, -655357, 0, 65537, -655356, 0, 65537, -655355, 0, 65538, -655340, 0, 65536, -655339, 0, 65537, -655338, 0, 65537, -655337, 0, 65537, -655336, 0, 65537, -655335, 0, 65537, -655334, 0, 65537, -655333, 0, 65538, -458743, 0, 0, -458742, 0, 0, -458741, 0, 0, -458740, 0, 0, -458739, 0, 0, -458738, 0, 0, -458737, 0, 0, -458736, 0, 0, -458735, 0, 0, -458734, 0, 0, -458733, 0, 0, -458732, 0, 0, -458731, 0, 0, -393207, 0, 1, -327671, 0, 1, -262135, 0, 1, -262129, 0, 0, -262128, 0, 0, -262127, 0, 0, -262120, 0, 0, -262119, 0, 0, -262118, 0, 0, -262117, 0, 0, -262116, 0, 0, -262115, 0, 0, -262114, 0, 0, -262113, 0, 0, -196599, 0, 1, -196591, 0, 1, -131068, 0, 0, -131067, 0, 0, -131066, 0, 0, -131065, 0, 0, -131063, 0, 1, -131059, 0, 65536, -131058, 0, 65538, -131055, 0, 1, -131050, 0, 0, -65527, 0, 1, -65526, 0, 0, -65519, 0, 1, -65515, 0, 65536, -65514, 0, 65537, -65513, 0, 65536, -65512, 0, 65537, -65511, 0, 65537, -65510, 0, 65537, -65509, 0, 65537, -65508, 0, 65537, -65507, 0, 65537, -65506, 0, 65537, -65505, 0, 65537, 9, 0, 1, 17, 0, 1, 65545, 0, 1, 65553, 0, 1, 131081, 0, 1, 131089, 0, 1, 196617, 0, 1, 196619, 0, 65536, 196620, 0, 65537, 196621, 0, 65537, 196622, 0, 65537, 196623, 0, 65537, 196624, 0, 65538, 196625, 0, 1, 262153, 0, 1, 262161, 0, 1, 327689, 0, 1, 327697, 0, 1, 327707, 0, 0, 327708, 0, 0, 327709, 0, 0, 327710, 0, 0, 393225, 0, 1, 393233, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458761, 0, 1, 524297, 0, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 720910, 0, 0, 720911, 0, 0, 720912, 0, 0, 720913, 0, 0, 720914, 0, 0, 720915, 0, 0, 720920, 0, 196609, 720921, 0, 196609, 720922, 0, 196609, 720923, 0, 196609, 720924, 0, 196609, 720925, 0, 196609, 720926, 0, 196609, 720927, 0, 196609, 851969, 0, 65536, 851970, 0, 65537, 851971, 0, 65537, 851972, 0, 65537, 851973, 0, 65537, 851974, 0, 65537, 851975, 0, 65538, 983041, 0, 196609, 983042, 0, 196609, 983043, 0, 196609, 983044, 0, 196609, 983045, 0, 196609, 983046, 0, 196609, 983047, 0, 196609, 983048, 0, 196609, 983049, 0, 196609, 983050, 0, 196609, 983051, 0, 196609, 983052, 0, 196609, 983053, 0, 196609, 983059, 0, 0, 983060, 0, 0, 983061, 0, 0, 983062, 0, 0, 983063, 0, 0, 983064, 0, 0, 983065, 0, 0, 983066, 0, 0, 983067, 0, 0, 1245186, 0, 196609, 1245187, 0, 196609, 1245188, 0, 196609, 1245189, 0, 196609, 1245190, 0, 196609, 1245191, 0, 196609, 1310743, 0, 65536, 1310744, 0, 65537, 1310745, 0, 65537, 1310746, 0, 65537, 1310747, 0, 65537, 1310748, 0, 65538, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 0, 0, 1507332, 0, 0, 1507333, 0, 0, 1507334, 0, 0, 1507335, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507338, 0, 0, 1507339, 0, 0, 1507340, 0, 0, 1507341, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1507350, 0, 0, 1507351, 0, 0, 1507352, 0, 0, 1507353, 0, 0, 1507354, 0, 0, 1507355, 0, 0, 1507356, 0, 0, 1507357, 0, 0, 1507358, 0, 0, 1507359, 0, 0 ) + +[node name="Camera2D" parent="." instance=ExtResource( 1 )] +scroll_h = false +scroll_v = true +respawn_h = false + +[node name="Player" parent="." instance=ExtResource( 6 )] +position = Vector2( 24, 176 ) + +[node name="Ladder" type="TileMap" parent="."] +tile_set = ExtResource( 23 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( -2752488, 0, 2, -2686952, 0, 2, -2621416, 0, 2, -2555880, 0, 2, -2555873, 0, 2, -2490344, 0, 2, -2490337, 0, 2, -2424808, 0, 2, -2424801, 0, 2, -2359272, 0, 2, -2359265, 0, 2, -2293736, 0, 2, -2293729, 0, 2, -2228200, 0, 2, -2228193, 0, 2, -2162657, 0, 2, -2097121, 0, 2, -2031585, 0, 2, -1966058, 0, 2, -1966049, 0, 2, -1900522, 0, 2, -1900513, 0, 2, -1834986, 0, 2, -1834977, 0, 2, -1769450, 0, 2, -1769441, 0, 2, -1703935, 0, 2, -1703914, 0, 2, -1703905, 0, 2, -1638399, 0, 2, -1638378, 0, 2, -1638369, 0, 2, -1572863, 0, 2, -1572842, 0, 2, -1572833, 0, 2, -1507327, 0, 2, -1507306, 0, 2, -1507297, 0, 2, -1441791, 0, 2, -1441770, 0, 2, -1441761, 0, 2, -1376255, 0, 2, -1376234, 0, 2, -1376225, 0, 2, -1310698, 0, 2, -1310689, 0, 2, -1245162, 0, 2, -1179626, 0, 2, -1114090, 0, 2, -1048554, 0, 2, -917475, 0, 2, -851939, 0, 2, -786403, 0, 2, -720867, 0, 2, -655331, 0, 2, -589795, 0, 2, -524259, 0, 2, -458723, 0, 2, -393209, 0, 2, -327673, 0, 2, -262137, 0, 2, -196589, 0, 2, -131053, 0, 2, -65517, 0, 2, 19, 0, 2, 65555, 0, 2, 131091, 0, 2, 196627, 0, 2, 262163, 0, 2, 327699, 0, 2, 393235, 0, 2, 458771, 0, 2, 589825, 0, 2, 655361, 0, 2, 720897, 0, 2, 851998, 0, 2, 917534, 0, 2, 983070, 0, 2, 1048606, 0, 2, 1114142, 0, 2, 1179678, 0, 2, 1245214, 0, 2 ) + +[node name="Death" type="TileMap" parent="." groups=["death"]] +light_mask = 0 +tile_set = ExtResource( 22 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( -2686976, 1, 0, -2686975, 1, 0, -2686974, 1, 0, -2686973, 1, 0, -2686972, 1, 0, -2686971, 1, 0, -2686970, 1, 0, -2686969, 1, 0, -2686968, 1, 0, -2686967, 1, 0, -2686966, 1, 0, -2686965, 1, 0, -2686964, 1, 0, -2686963, 1, 0, -2686962, 1, 0, -2686961, 1, 0, -2686960, 1, 0, -2162688, 1, 0, -2162687, 1, 0, -2162686, 1, 0, -2162685, 1, 0, -2162684, 1, 0, -2162683, 1, 0, -2162682, 1, 0, -2162681, 1, 0, -2162680, 1, 0, -2162679, 1, 0, -2162678, 1, 0, -2162677, 1, 0, -2162676, 1, 0, -2162675, 1, 0, -2162674, 1, 0, -2162673, 1, 0, -2162672, 1, 0, -2162671, 1, 0, -2162670, 1, 0, -524276, 1, 0, -524273, 1, 0, 1441800, 1, 0, 1441801, 1, 0, 1441802, 1, 0, 1441803, 1, 0, 1441804, 1, 0, 1441805, 1, 0, 1441806, 1, 0, 1441807, 1, 0, 1441812, 1, 0, 1441813, 1, 0, 1441814, 1, 0 ) + +[node name="Environment" type="Node2D" parent="."] + +[node name="MovingPlatform" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 96, 168 ) +scale = Vector2( 2, 1 ) +left_up_boundary = 2.0 +right_down_boundary = 2.0 + +[node name="MovingPlatform5" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 104, 136 ) +scale = Vector2( 2, 1 ) +right_down_boundary = 5.0 + +[node name="MovingPlatform8" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 96, -280 ) +scale = Vector2( 2, 1 ) +speed = 30 +right_down_boundary = 2.0 + +[node name="MovingPlatform9" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 80, -344 ) +scale = Vector2( 2, 1 ) +speed = 40 +left_up_boundary = 3.0 +right_down_boundary = 4.0 + +[node name="MovingPlatform6" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 80, -280 ) +scale = Vector2( 2, 1 ) +direction = -1 +speed = 30 +left_up_boundary = 2.0 + +[node name="MovingPlatform2" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 184, 40 ) +scale = Vector2( 2, 1 ) +left_up_boundary = 2.0 +right_down_boundary = 2.0 + +[node name="MovingPlatform4" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 172, 104 ) +left_up_boundary = 1.0 +right_down_boundary = 2.0 + +[node name="MovingPlatform3" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 16, 40 ) +scale = Vector2( 2, 1 ) +speed = 40 +left_up_boundary = 8.0 +right_down_boundary = 2.0 +move_direction = 1 + +[node name="Ladder" parent="Environment" instance=ExtResource( 12 )] +position = Vector2( 240, 104 ) +scale = Vector2( 1, 7 ) + +[node name="Ladder2" parent="Environment" instance=ExtResource( 12 )] +position = Vector2( 152, -24 ) +scale = Vector2( 1, 11 ) + +[node name="Ladder8" parent="Environment" instance=ExtResource( 12 )] +position = Vector2( 176, -240 ) +scale = Vector2( 1, 15 ) + +[node name="Ladder11" parent="Environment" instance=ExtResource( 12 )] +position = Vector2( 8, -208 ) +scale = Vector2( 1, 6 ) +can_climb_left = false + +[node name="Ladder10" parent="Environment" instance=ExtResource( 12 )] +position = Vector2( 192, -336 ) +scale = Vector2( 1, 9 ) + +[node name="Ladder9" parent="Environment" instance=ExtResource( 12 )] +position = Vector2( 248, -312 ) +scale = Vector2( 1, 20 ) +can_climb_right = false + +[node name="Ladder7" parent="Environment" instance=ExtResource( 12 )] +position = Vector2( 232, -112 ) +scale = Vector2( 1, 8 ) + +[node name="Ladder5" parent="Environment" instance=ExtResource( 12 )] +position = Vector2( 56, -48 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder4" parent="Environment" instance=ExtResource( 12 )] +position = Vector2( 8, 72 ) +scale = Vector2( 1, 3 ) + +[node name="TurningPlatform" parent="Environment" instance=ExtResource( 15 )] +position = Vector2( 168, 168 ) +texture = ExtResource( 32 ) + +[node name="TurningPlatform2" parent="Environment" instance=ExtResource( 15 )] +position = Vector2( 80, 144 ) +texture = ExtResource( 32 ) + +[node name="TurningPlatform4" parent="Environment" instance=ExtResource( 15 )] +position = Vector2( 168, -280 ) +texture = ExtResource( 32 ) + +[node name="Rock2" parent="Environment" instance=ExtResource( 19 )] +position = Vector2( 112, 56 ) + +[node name="Rock3" parent="Environment" instance=ExtResource( 19 )] +position = Vector2( 80, -152 ) + +[node name="Rock4" parent="Environment" instance=ExtResource( 19 )] +position = Vector2( 160, -208 ) + +[node name="Barrier" parent="Environment" instance=ExtResource( 20 )] +position = Vector2( 140, -48 ) +scale = Vector2( 1, 16 ) +cost = 30 + +[node name="Barrier2" parent="Environment" instance=ExtResource( 20 )] +position = Vector2( 148, -248 ) +scale = Vector2( 1, 16 ) +cost = 40 + +[node name="Enemies" type="Node2D" parent="."] + +[node name="RollingFiend" parent="Enemies" instance=ExtResource( 8 )] +position = Vector2( 200, 152 ) + +[node name="RollingFiend2" parent="Enemies" instance=ExtResource( 8 )] +position = Vector2( 216, 32 ) + +[node name="RollingFiend8" parent="Enemies" instance=ExtResource( 8 )] +position = Vector2( 240, 48 ) + +[node name="RollingFiend4" parent="Enemies" instance=ExtResource( 8 )] +position = Vector2( 104, -24 ) + +[node name="RollingFiend7" parent="Enemies" instance=ExtResource( 8 )] +position = Vector2( 160, -344 ) +move_speed = 70.0 + +[node name="RollingFiend3" parent="Enemies" instance=ExtResource( 8 )] +position = Vector2( 32, 96 ) + +[node name="RollingFiend5" parent="Enemies" instance=ExtResource( 8 )] +position = Vector2( 80, -139 ) + +[node name="RollingFiend6" parent="Enemies" instance=ExtResource( 8 )] +position = Vector2( 104, -152 ) + +[node name="Bat3" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 124, -152 ) +left_up_boundary = 2.0 +right_down_boundary = 3.0 + +[node name="Bat6" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 112, -64 ) +left_up_boundary = 4.0 +right_down_boundary = 2.0 + +[node name="Bat4" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 64, -232 ) +left_up_boundary = 2.0 +right_down_boundary = 4.0 +speed = 60 + +[node name="Bat7" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 88, -296 ) +left_up_boundary = 1.0 +right_down_boundary = 4.0 + +[node name="Bat8" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 248, -264 ) +left_up_boundary = 4.0 +right_down_boundary = 6.0 +speed = 50 + +[node name="Snake" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 216, 82 ) +left_up_boundary = 3.0 +right_down_boundary = 4.0 + +[node name="Snake2" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 136, 80 ) +left_up_boundary = 2.0 +right_down_boundary = 3.0 + +[node name="Snake7" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 216, -16 ) +left_up_boundary = 2.0 +right_down_boundary = 5.0 +speed = 80 + +[node name="Snake3" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 96, 114 ) +left_up_boundary = 10.0 +right_down_boundary = 2.0 + +[node name="Collectibles" type="Node2D" parent="."] +position = Vector2( 172, 160 ) + +[node name="Star" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 28, 16 ) + +[node name="Star2" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 60, -128 ) +color = 1 + +[node name="Star3" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( -60, -272 ) +color = 4 + +[node name="Star4" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 36, -176 ) +color = 3 + +[node name="Star5" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( -68, -144 ) +color = 2 + +[node name="Gold" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -124, -64 ) + +[node name="Gold2" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -156, -64 ) + +[node name="Gold3" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -44, 8 ) + +[node name="Gold4" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -20, 8 ) + +[node name="Gold5" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -116, 8 ) + +[node name="Gold6" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -132, 8 ) + +[node name="Gold7" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -92, -24 ) + +[node name="Gold8" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -108, -48 ) + +[node name="Gold16" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -76, -48 ) + +[node name="Gold9" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 36, -48 ) + +[node name="Gold10" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 20, -8 ) + +[node name="Gold12" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 28, -80 ) + +[node name="Gold14" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -28, -80 ) + +[node name="Gold15" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 12, -48 ) + +[node name="Gold17" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -124, -184 ) + +[node name="Gold18" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -124, -112 ) + +[node name="Gold19" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -140, -184 ) + +[node name="Gold20" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -164, -248 ) + +[node name="Gold22" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -132, -248 ) + +[node name="Gold23" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -92, -224 ) + +[node name="Gold24" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -36, -224 ) + +[node name="Gold32" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -124, -312 ) + +[node name="Gold33" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 52, -448 ) + +[node name="Gold34" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -140, -312 ) + +[node name="Gold36" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -92, -400 ) + +[node name="Gold37" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -68, -400 ) + +[node name="Gold39" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -68, -368 ) + +[node name="Gold40" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -52, -368 ) + +[node name="Gold41" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -36, -368 ) + +[node name="Gold38" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -44, -400 ) + +[node name="Gold44" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 36, -384 ) + +[node name="Gold45" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -36, -448 ) + +[node name="Gold46" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -28, -512 ) + +[node name="Gold48" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 44, -512 ) + +[node name="Gold52" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 44, -8 ) + +[node name="Gold49" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 68, -512 ) + +[node name="Gold47" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -44, -512 ) + +[node name="Gold35" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 52, 16 ) + +[node name="Gold25" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -11, -224 ) + +[node name="Gold42" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 4, -248 ) + +[node name="Gold43" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 28, -248 ) + +[node name="Gold50" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 20, -280 ) + +[node name="Gold51" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 44, -280 ) + +[node name="Gold26" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 20, -200 ) + +[node name="Gold30" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -92, -104 ) + +[node name="Gold31" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -76, -104 ) + +[node name="Gold27" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 44, -200 ) + +[node name="Gold28" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -116, -16 ) + +[node name="Gold13" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 68, -80 ) + +[node name="Gold11" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( -12, -48 ) + +[node name="Shard" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( -148, -248 ) + +[node name="Shard2" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( -148, -448 ) +number = 2 + +[node name="Shard3" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( -28, -312 ) +number = 1 + +[node name="Shard4" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 52, -488 ) +number = 3 + +[node name="Arrow" parent="Collectibles" instance=ExtResource( 24 )] +position = Vector2( -84, -368 ) + +[node name="Arrow2" parent="Collectibles" instance=ExtResource( 24 )] +position = Vector2( 60, -320 ) + +[node name="Respawns" type="Node2D" parent="."] + +[node name="RespawnPoint" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 40, -16 ) +match_v = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint"] +position = Vector2( 8, -20 ) +shape = SubResource( 2 ) + +[node name="RespawnPoint2" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 160, 16 ) +__meta__ = { +"_edit_group_": true +} +match_v = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint2"] +position = Vector2( 16, 0 ) +shape = SubResource( 9 ) + +[node name="RespawnPoint6" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 48, 56 ) +__meta__ = { +"_edit_group_": true +} +match_v = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint6"] +position = Vector2( -12, -44 ) +shape = SubResource( 7 ) + +[node name="RespawnPoint7" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 96, 24 ) +__meta__ = { +"_edit_group_": true +} +match_v = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint7"] +position = Vector2( 12, -4 ) +shape = SubResource( 8 ) + +[node name="RespawnPoint3" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 16, -144 ) +__meta__ = { +"_edit_group_": true +} +match_v = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint3"] +position = Vector2( 24, -36 ) +shape = SubResource( 4 ) + +[node name="RespawnPoint9" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 16, -200 ) +__meta__ = { +"_edit_group_": true +} +match_v = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint9"] +position = Vector2( 24, -4 ) +shape = SubResource( 12 ) + +[node name="RespawnPoint4" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 183, -200 ) +__meta__ = { +"_edit_group_": true +} +match_v = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint4"] +position = Vector2( 24, -64 ) +shape = SubResource( 5 ) + +[node name="RespawnPoint5" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 176, -8 ) +__meta__ = { +"_edit_group_": true +} +match_v = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint5"] +position = Vector2( -16, -8 ) +shape = SubResource( 6 ) + +[node name="RespawnPoint8" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 184, -184 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint8"] +position = Vector2( 8, 4 ) +shape = SubResource( 11 ) + +[node name="Boundaries" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Boundaries"] +position = Vector2( -4, -92 ) +shape = SubResource( 1 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="Boundaries"] +position = Vector2( 260, -94 ) +shape = SubResource( 1 ) + +[node name="ColorRect" type="ColorRect" parent="."] +margin_top = -192.0 +margin_right = 256.0 +color = Color( 0.0784314, 1, 0, 0.113725 ) +script = ExtResource( 10 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect2" type="ColorRect" parent="."] +margin_top = -384.0 +margin_right = 256.0 +margin_bottom = -192.0 +color = Color( 0, 0.0862745, 1, 0.113725 ) +script = ExtResource( 10 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="HUD" parent="." instance=ExtResource( 17 )] +song_name = "♫Burnt Out" + +[node name="Exit" parent="." instance=ExtResource( 26 )] +position = Vector2( 28, -356 ) +cost = 25 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." groups=["mountain_easter_egg"]] +anims/liftoff = SubResource( 10 ) + +[connection signal="tree_entered" from="Background/BackgroundMountain/Mountain" to="Background/BackgroundMountain/Mountain" method="set_visible" binds= [ true ]] diff --git a/maps/rust.tscn b/maps/rust.tscn new file mode 100644 index 0000000..cb64470 --- /dev/null +++ b/maps/rust.tscn @@ -0,0 +1,554 @@ +[gd_scene load_steps=35 format=2] + +[ext_resource path="res://maps/map.gd" type="Script" id=1] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/backgrounds/rust.png" type="Texture" id=3] +[ext_resource path="res://tilesets/t_rust.tres" type="TileSet" id=4] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=5] +[ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=6] +[ext_resource path="res://objects/enemy/steam.tscn" type="PackedScene" id=7] +[ext_resource path="res://objects/environment/rock/crate.tscn" type="PackedScene" id=8] +[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=9] +[ext_resource path="res://graphics/secret/i_cant_take_it_anymore.png" type="Texture" id=10] +[ext_resource path="res://objects/enemy/rolling_saw.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/enemy/tin.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/enemy/roboturret.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=14] +[ext_resource path="res://objects/environment/switches/button.tscn" type="PackedScene" id=15] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=16] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=17] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=19] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=20] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=21] +[ext_resource path="res://objects/environment/barrier/barrier.tscn" type="PackedScene" id=22] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=23] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=24] +[ext_resource path="res://audio/music/cryokiller.ogg" type="AudioStream" id=25] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=26] +[ext_resource path="res://scripts/has_splash.gd" type="Script" id=27] +[ext_resource path="res://objects/lore/rust/roboturret.tscn" type="PackedScene" id=28] +[ext_resource path="res://objects/lore/rust/tin.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/rust/rolling_saw.tscn" type="PackedScene" id=30] +[ext_resource path="res://objects/lore/rust/rust_inc.tscn" type="PackedScene" id=31] +[ext_resource path="res://graphics/turniwood/turning_platform_rust.png" type="Texture" id=32] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=33] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 4, 112 ) + +[node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 1 ) +target_time_any = 80 +target_time_100 = 160 +music = ExtResource( 25 ) +lore_entries = [ ExtResource( 31 ), ExtResource( 28 ), ExtResource( 30 ), ExtResource( 29 ) ] + +[node name="Camera2D" parent="." instance=ExtResource( 2 )] + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = -64 + +[node name="Sprite" type="Sprite" parent="CanvasLayer"] +position = Vector2( 128, 96 ) +texture = ExtResource( 3 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 26 ) +tile_set = ExtResource( 4 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 48, 0, 0, 65584, 0, 0, 131120, 0, 0, 196614, 0, 0, 196656, 0, 0, 196671, 0, 0, 196672, 0, 0, 196673, 0, 0, 196674, 0, 0, 262173, 0, 131072, 262174, 0, 65537, 262175, 0, 65537, 262176, 0, 65537, 262177, 0, 65537, 262178, 0, 65537, 262179, 0, 65537, 262180, 0, 65537, 262181, -1610612736, 131072, 262192, 0, 0, 327691, 0, 131072, 327692, 0, 65537, 327693, 0, 65537, 327694, 0, 65537, 327695, 0, 65537, 327696, 0, 65537, 327697, 0, 65537, 327698, 0, 65537, 327699, 0, 65537, 327700, 0, 65537, 327701, 0, 65537, 327702, 0, 65537, 327703, 0, 65537, 327704, 0, 65537, 327705, 0, 65537, 327706, 0, 65537, 327707, 0, 65537, 327708, 0, 65537, 327709, 1610612736, 131072, 327717, -1073741824, 65537, 327733, 0, 0, 327734, 0, 196609, 327735, 0, 196609, 327736, 0, 65536, 327737, 0, 65538, 327738, 0, 65537, 327739, 0, 65538, 327740, 536870912, 65536, 327760, 0, 131072, 327761, 0, 65537, 327762, 1610612736, 65538, 327763, 0, 65537, 327764, 0, 131073, 327765, 0, 65537, 327766, 0, 65537, 327767, 0, 65537, 327768, 0, 65537, 327769, 0, 65537, 327770, 0, 65537, 327771, 0, 65538, 327772, 0, 65537, 327773, 0, 65537, 327774, 0, 65537, 327775, 0, 65537, 393227, -2147483648, 65537, 393253, -1073741824, 65537, 393268, 0, 0, 393269, 0, 0, 393288, 0, 65536, 393289, 0, 65537, 393290, 0, 131075, 393296, -1073741824, 65537, 458763, -2147483648, 65537, 458789, -1073741824, 131072, 458790, 0, 65537, 458791, 0, 65537, 458792, 0, 65537, 458793, 0, 65537, 458794, 0, 65537, 458795, 0, 65537, 458796, 0, 65537, 458797, 0, 65537, 458798, 0, 65537, 458799, 536870912, 65536, 458805, 0, 0, 458822, 0, 0, 458832, -1073741824, 65538, 524299, -2147483648, 65537, 524315, 0, 131072, 524316, 0, 65537, 524317, 0, 65537, 524318, 0, 65537, 524319, 0, 65537, 524320, 0, 65537, 524321, 0, 65537, 524322, 536870912, 131072, 524338, 0, 0, 524341, 0, 0, 524342, 0, 0, 524343, 0, 0, 524344, 0, 0, 524357, 0, 0, 524358, 0, 0, 524359, 0, 0, 524368, -1073741824, 65537, 589830, -2147483648, 65536, 589831, 0, 196609, 589832, 0, 196609, 589833, 0, 65536, 589834, 0, 65537, 589835, -536870912, 131072, 589851, -1073741824, 65537, 589858, -1073741824, 65537, 589892, 0, 0, 589893, 0, 0, 589894, 0, 0, 589898, 0, 65536, 589899, 0, 65537, 589900, 536870912, 65536, 589904, -1073741824, 65536, 589906, 0, 0, 589907, 0, 0, 589908, 0, 0, 589910, 0, 0, 589911, 0, 0, 589913, 0, 0, 589914, 0, 0, 655366, -1073741824, 65537, 655376, 0, 65536, 655377, 0, 65537, 655378, 0, 65537, 655379, 0, 65537, 655380, 0, 65537, 655381, 0, 65537, 655382, 0, 65537, 655383, 0, 65537, 655384, 0, 65537, 655385, 0, 65537, 655386, 0, 65537, 655387, 1610612736, 131072, 655394, -1073741824, 131072, 655395, 0, 65537, 655396, 0, 65537, 655397, 0, 65538, 655398, 0, 65537, 655399, 0, 65537, 655400, 0, 65537, 655401, 536870912, 65536, 655418, 0, 0, 655419, 0, 0, 655420, 0, 0, 655427, 0, 0, 655428, 0, 0, 655429, 0, 0, 655430, 0, 0, 720902, -1073741824, 65537, 720903, 0, 196609, 720904, 0, 196609, 720962, 0, 0, 720963, 0, 0, 720964, 0, 0, 720965, 0, 0, 720966, 0, 0, 720967, 0, 0, 720968, 0, 0, 786438, -1073741824, 65538, 851974, -1073741824, 65537, 851975, 0, 196609, 851976, 0, 196609, 851989, 0, 0, 852021, 0, 0, 852042, 0, 0, 917510, -1073741824, 65537, 917519, 0, 131072, 917520, 0, 262144, 917550, 0, 65536, 917551, 0, 65537, 917552, 0, 65537, 917553, 0, 65537, 917554, 0, 65537, 917555, 0, 65537, 917556, 0, 65537, 917557, 0, 65537, 917558, 0, 65537, 917559, 0, 65537, 917560, 0, 65537, 917561, -1610612736, 131072, 917565, 0, 65536, 917566, 0, 65537, 917567, 0, 65537, 917568, 0, 65537, 917569, 0, 65537, 917570, 0, 65537, 917571, 0, 65537, 917572, 536870912, 65536, 917590, 0, 0, 917591, 0, 0, 917592, 0, 0, 917593, 0, 0, 917594, 0, 0, 917595, 0, 0, 917596, 0, 0, 917597, 0, 0, 917599, 0, 0, 983046, -1073741824, 131072, 983047, 0, 65537, 983048, 0, 65537, 983049, 0, 65537, 983050, 0, 65537, 983051, 0, 65537, 983052, 0, 65537, 983053, 0, 65537, 983054, 0, 65538, 983055, 1610612736, 131072, 983058, 0, 0, 983059, 0, 0, 983078, 0, 0, 983079, 0, 0, 983080, 0, 0, 983081, 0, 0, 983097, -1073741824, 131072, 983098, -1610612736, 131072, 983113, 0, 0, 983121, 0, 0, 983122, 0, 0, 983123, 0, 0, 1048634, -1073741824, 65537, 1048647, 0, 0, 1114135, 0, 131072, 1114136, 0, 65537, 1114137, 0, 65537, 1114138, 0, 65537, 1114139, 0, 65537, 1114140, 0, 65537, 1114141, 0, 65538, 1114142, 0, 65537, 1114143, 0, 65537, 1114144, 0, 65537, 1114145, 0, 65537, 1114146, 0, 65537, 1114147, 0, 65537, 1114148, -1610612736, 131072, 1114170, -1073741824, 131072, 1114171, 0, 65537, 1114172, 0, 65537, 1114173, 0, 65537, 1114174, 536870912, 65537, 1114175, 0, 65537, 1114176, 0, 65537, 1114177, 0, 65537, 1114178, 0, 131075, 1114191, 0, 0, 1114205, 0, 0, 1114206, 0, 0, 1179661, 0, 65536, 1179662, 0, 65537, 1179663, 0, 131074, 1179664, 0, 131074, 1179665, 0, 65537, 1179666, 0, 65537, 1179667, 0, 65537, 1179668, 0, 131074, 1179669, 0, 131074, 1179670, 0, 65537, 1179671, 1610612736, 131072, 1179684, -1073741824, 65537, 1179723, 0, 0, 1179724, 0, 0, 1179725, 0, 0, 1245220, -1073741824, 131072, 1245221, 0, 65537, 1245222, 0, 65537, 1245223, 0, 131075, 1245254, 0, 65536, 1245255, 0, 65537, 1245256, 536870912, 65536, 1310720, 0, 0, 1310721, 0, 0, 1310731, 0, 0, 1376256, 0, 0, 1376257, 0, 0, 1376261, 0, 0, 1376286, 0, 0, 1376297, 0, 0, 1376304, 0, 0, 1376312, 0, 65536, 1376313, 536870912, 65538, 1376314, 536870912, 65537, 1376315, 536870912, 65536, 1376333, 0, 0, 1376334, 0, 0, 1376335, 0, 0, 1376341, 0, 0, 1376342, 0, 0, 1376343, 0, 0, 1441792, 0, 1, 1441793, 0, 2, 1441794, 0, 2, 1441795, 0, 2, 1441796, 0, 2, 1441797, 0, 2, 1441798, 0, 2, 1441799, 0, 2, 1441800, 0, 2, 1441801, 0, 2, 1441802, 0, 2, 1441803, 0, 2, 1441804, 0, 2, 1441805, 0, 2, 1441806, 0, 2, 1441807, 0, 2, 1441808, 0, 2, 1441809, 0, 2, 1441810, 0, 2, 1441811, 0, 2, 1441812, 0, 2, 1441813, 0, 2, 1441814, 0, 2, 1441815, 0, 2, 1441816, 0, 2, 1441817, 0, 2, 1441818, 0, 2, 1441819, 0, 2, 1441820, 0, 2, 1441821, 0, 2, 1441822, 0, 2, 1441823, 0, 2, 1441824, 0, 2, 1441825, 0, 2, 1441826, 0, 2, 1441827, 0, 2, 1441828, 0, 2, 1441829, 0, 2, 1441830, 0, 2, 1441831, 0, 2, 1441832, 0, 2, 1441833, 0, 2, 1441834, 0, 2, 1441835, 0, 2, 1441836, 0, 2, 1441837, 0, 3, 1441843, 0, 1, 1441844, 0, 2, 1441845, 0, 2, 1441846, 0, 3, 1441853, 0, 1, 1441854, 0, 2, 1441855, 0, 2, 1441856, 0, 2, 1441857, 0, 2, 1441858, 0, 2, 1441859, 0, 2, 1441860, 0, 2, 1441861, 0, 2, 1441862, 0, 2, 1441863, 0, 2, 1441864, 0, 2, 1441865, 0, 2, 1441866, 0, 2, 1441867, 0, 3, 1441882, 0, 1, 1441883, 0, 2, 1441884, 0, 2, 1441885, 0, 2, 1441886, 0, 2, 1441887, 0, 3, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 0, 0, 1507332, 0, 0, 1507333, 0, 0, 1507334, 0, 0, 1507335, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507338, 0, 0, 1507339, 0, 0, 1507340, 0, 0, 1507341, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1507350, 0, 0, 1507351, 0, 0, 1507352, 0, 0, 1507353, 0, 0, 1507354, 0, 0, 1507355, 0, 0, 1507356, 0, 0, 1507357, 0, 0, 1507358, 0, 0, 1507359, 0, 0, 1507360, 0, 0, 1507361, 0, 0, 1507362, 0, 0, 1507363, 0, 0, 1507364, 0, 0, 1507365, 0, 0, 1507366, 0, 0, 1507367, 0, 0, 1507368, 0, 0, 1507369, 0, 0, 1507370, 0, 0, 1507371, 0, 0, 1507372, 0, 0, 1507373, 0, 0, 1507379, 0, 0, 1507380, 0, 0, 1507381, 0, 0, 1507382, 0, 0, 1507389, 0, 0, 1507390, 0, 0, 1507391, 0, 0, 1507392, 0, 0, 1507393, 0, 0, 1507394, 0, 0, 1507395, 0, 0, 1507396, 0, 0, 1507397, 0, 0, 1507398, 0, 0, 1507399, 0, 0, 1507400, 0, 0, 1507401, 0, 0, 1507402, 0, 0, 1507403, 0, 0, 1507418, 0, 0, 1507419, 0, 0, 1507420, 0, 0, 1507421, 0, 0, 1507422, 0, 0, 1507423, 0, 0 ) + +[node name="Player" parent="." instance=ExtResource( 5 )] +position = Vector2( 24, 176 ) + +[node name="Death" type="TileMap" parent="." groups=["death"]] +position = Vector2( 0, 1 ) +tile_set = ExtResource( 16 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 262157, 1, 0, 262161, 1, 0, 262168, 1, 0, 262172, 1, 0, 393254, 1, 0, 393255, 1, 0, 393256, 1, 0, 393257, 1, 0, 393258, 1, 0, 393259, 1, 0, 393260, 1, 0, 393261, 1, 0, 393262, 1, 0 ) + +[node name="DeathNoBlood" type="TileMap" parent="." groups=["death", "no_blood"]] +tile_set = ExtResource( 16 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1441838, 7, 0, 1441839, 7, 0, 1441840, 7, 0, 1441841, 7, 0, 1441842, 7, 0, 1441847, 7, 0, 1441848, 7, 0, 1441849, 7, 0, 1441850, 7, 0, 1441851, 7, 0, 1441852, 7, 0, 1441868, 7, 0, 1441869, 7, 0, 1441870, 7, 0, 1441871, 7, 0, 1441872, 7, 0, 1441873, 7, 0, 1441874, 7, 0, 1441875, 7, 0, 1441876, 7, 0, 1441877, 7, 0, 1441878, 7, 0, 1441879, 7, 0, 1441880, 7, 0, 1441881, 7, 0, 1507374, 6, 0, 1507375, 6, 0, 1507376, 6, 0, 1507377, 6, 0, 1507378, 6, 0, 1507383, 6, 0, 1507384, 6, 0, 1507385, 6, 0, 1507386, 6, 0, 1507387, 6, 0, 1507388, 6, 0, 1507404, 6, 0, 1507405, 6, 0, 1507406, 6, 0, 1507407, 6, 0, 1507408, 6, 0, 1507409, 6, 0, 1507410, 6, 0, 1507411, 6, 0, 1507412, 6, 0, 1507413, 6, 0, 1507414, 6, 0, 1507415, 6, 0, 1507416, 6, 0, 1507417, 6, 0 ) +script = ExtResource( 27 ) +splash_color = Color( 0.12549, 0.133333, 0.227451, 1 ) + +[node name="DeathBackground" type="TileMap" parent="DeathNoBlood" groups=["death", "no_blood"]] +z_index = -11 +tile_set = ExtResource( 16 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1441837, 7, 0, 1441843, 7, 0, 1441846, 7, 0, 1441853, 7, 0, 1441867, 7, 0, 1441882, 7, 0 ) + +[node name="Ladder" type="TileMap" parent="."] +tile_set = ExtResource( 23 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 196618, 0, 196608, 262154, 0, 196608, 327690, 0, 196608, 327759, 0, 196608, 393226, 0, 196608, 393295, 0, 196608, 458762, 0, 196608, 458831, 0, 196608, 524298, 0, 196608, 524367, 0, 196608, 589826, 0, 196608, 589917, 536870912, 196608, 655362, 0, 196608, 655453, 536870912, 196608, 720898, 0, 196608, 720989, 536870912, 196608, 786434, 0, 196608, 786476, 0, 196608, 851970, 0, 196608, 852012, 0, 196608, 917506, 0, 196608, 917548, 0, 196608, 983042, 0, 196608, 983084, 0, 196608, 1048578, 0, 196608, 1179717, 0, 196608, 1245253, 0, 196608 ) + +[node name="Environment" type="Node2D" parent="."] + +[node name="TurningPlatform6" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 336, 40 ) +time = 15.0 +delay = 1.0 +texture = ExtResource( 32 ) + +[node name="TurningPlatform7" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 656, 168 ) +time = 15.0 +texture = ExtResource( 32 ) + +[node name="TurningPlatform4" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 312, 40 ) +time = 30.0 +texture = ExtResource( 32 ) + +[node name="Ladder" parent="Environment" instance=ExtResource( 14 )] +position = Vector2( 352, 96 ) +scale = Vector2( 1, 4 ) + +[node name="Ladder7" parent="Environment" instance=ExtResource( 14 )] +position = Vector2( 632, 40 ) +scale = Vector2( 1, 4 ) +can_climb_right = false + +[node name="Ladder5" parent="Environment" instance=ExtResource( 14 )] +position = Vector2( 552, 144 ) + +[node name="Ladder8" parent="Environment" instance=ExtResource( 14 )] +position = Vector2( 552, 152 ) +can_climb_right = false + +[node name="Ladder6" parent="Environment" instance=ExtResource( 14 )] +position = Vector2( 744, 72 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder2" parent="Environment" instance=ExtResource( 14 )] +position = Vector2( 16, 72 ) +scale = Vector2( 1, 8 ) + +[node name="Ladder3" parent="Environment" instance=ExtResource( 14 )] +position = Vector2( 80, 24 ) +scale = Vector2( 1, 2 ) + +[node name="Ladder9" parent="Environment" instance=ExtResource( 14 )] +position = Vector2( 80, 40 ) +scale = Vector2( 1, 4 ) +can_climb_right = false + +[node name="Button" parent="Environment" instance=ExtResource( 15 )] +position = Vector2( 80, 113 ) +target_group = "button1" + +[node name="Button2" parent="Environment" instance=ExtResource( 15 )] +position = Vector2( 728, 168 ) +target_group = "button3" + +[node name="Button4" parent="Environment" instance=ExtResource( 15 )] +position = Vector2( 272, 168 ) +target_group = "button4" + +[node name="Button3" parent="Environment" instance=ExtResource( 15 )] +position = Vector2( 520, 16 ) +target_group = "button2" + +[node name="Barrier2" parent="Environment" instance=ExtResource( 22 )] +position = Vector2( 332, 63 ) +scale = Vector2( 1, 17 ) +cost = 15 + +[node name="Rock3" parent="Environment" instance=ExtResource( 8 )] +position = Vector2( 152, 112 ) + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Steam" parent="Enemies" groups=["button1"] instance=ExtResource( 7 )] +position = Vector2( 104, 152 ) +rotation = -1.57079 +off_time = 1.5 + +[node name="Steam8" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 136, 152 ) +rotation = 3.14159 +off_time = 1.5 + +[node name="Steam11" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 168, 152 ) +rotation = 3.14159 +off_time = 1.5 + +[node name="Steam5" parent="Enemies" groups=["button4"] instance=ExtResource( 7 )] +position = Vector2( 336, 80 ) +rotation = 1.5708 +off_time = 1.5 + +[node name="Steam4" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 48, 72 ) +off_time = 1.5 + +[node name="Steam7" parent="Enemies" groups=["button3"] instance=ExtResource( 7 )] +position = Vector2( 672, 40 ) +off_time = 0.0 +on_time = inf + +[node name="Steam2" parent="Enemies" groups=["button1"] instance=ExtResource( 7 )] +position = Vector2( 128, 152 ) +rotation = 3.14159 +off_time = 0.0 +on_time = inf + +[node name="Steam3" parent="Enemies" groups=["button1"] instance=ExtResource( 7 )] +position = Vector2( 176, 152 ) +rotation = 3.14159 +off_time = 0.0 +on_time = inf + +[node name="RollingSaw3" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 576, 41 ) + +[node name="RollingSaw5" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 472, 72 ) + +[node name="RollingSaw8" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 448, 161 ) + +[node name="RollingSaw9" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 472, 175 ) + +[node name="RollingSaw4" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 600, 79 ) + +[node name="RollingSaw6" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 648, 128 ) +clockwise = true + +[node name="RollingSaw7" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 664, 112 ) +clockwise = true + +[node name="RollingSaw13" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 752, 128 ) + +[node name="RollingSaw2" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 48, 32 ) +move_speed = 80.0 + +[node name="Tin" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 168, 128 ) +up_boundary = 5.0 +down_boundary = 2.0 + +[node name="Tin5" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 368, 160 ) +up_boundary = 5.0 +down_boundary = 1.0 +speed = 40 + +[node name="Tin6" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 408, 160 ) +up_boundary = 5.0 +down_boundary = 1.0 +speed = 40 +move_direction = 1 + +[node name="Tin2" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 24, 112 ) +up_boundary = 2.0 +down_boundary = 3.0 +speed = 40 +move_direction = 1 + +[node name="Tin4" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 104, 88 ) +up_boundary = 3.0 + +[node name="Steam6" parent="Enemies" groups=["button3"] instance=ExtResource( 7 )] +position = Vector2( 384, 56 ) +rotation = 1.5708 + +[node name="Steam9" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 488, 40 ) +rotation = 1.5708 + +[node name="Steam12" parent="Enemies" groups=["button2"] instance=ExtResource( 7 )] +position = Vector2( 616, 72 ) +rotation = 1.5708 +off_time = 0.0 +on_time = inf + +[node name="Steam13" parent="Enemies" groups=["button2"] instance=ExtResource( 7 )] +position = Vector2( 592, 80 ) +rotation = -1.5708 +off_time = 0.0 +on_time = inf + +[node name="Roboturret" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 200, 168 ) + +[node name="Roboturret5" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 392, 105 ) +shoot_time = 0.9 + +[node name="Roboturret6" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 720, 104 ) +shoot_time = 2.5 + +[node name="Roboturret2" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 216, 129 ) +shoot_time = 2.5 + +[node name="Roboturret7" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 168, 33 ) +shoot_time = 2.5 + +[node name="Roboturret3" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 176, 73 ) +scale = Vector2( -1, 1 ) + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Shard" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 48, 16 ) + +[node name="Shard2" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 736, 32 ) +number = 3 + +[node name="Shard3" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 96, 112 ) +number = 1 + +[node name="Shard4" parent="Collectibles" instance=ExtResource( 18 )] +position = Vector2( 664, 64 ) +number = 2 + +[node name="Gold" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 464, 112 ) + +[node name="Gold2" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 496, 128 ) + +[node name="Gold3" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 112, 112 ) + +[node name="Gold4" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 208, 32 ) + +[node name="Gold5" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 120, 32 ) + +[node name="Gold7" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 64, 112 ) + +[node name="Gold6" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 264, 56 ) + +[node name="Gold8" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 112, 136 ) + +[node name="Gold9" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 408, 168 ) + +[node name="Gold11" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 432, 168 ) + +[node name="Gold10" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 160, 136 ) + +[node name="Gold14" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 192, 128 ) + +[node name="Gold16" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 272, 128 ) + +[node name="Gold17" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 296, 144 ) + +[node name="Gold18" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 304, 112 ) + +[node name="Gold19" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 328, 112 ) + +[node name="Gold20" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 376, 104 ) + +[node name="Gold21" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 408, 104 ) + +[node name="Gold22" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 712, 32 ) + +[node name="Gold23" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 152, 72 ) + +[node name="Gold24" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 336, 168 ) + +[node name="Gold25" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 504, 168 ) + +[node name="Gold26" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 528, 168 ) + +[node name="Gold27" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 560, 168 ) + +[node name="Gold28" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 224, 56 ) + +[node name="Gold29" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 592, 168 ) + +[node name="Gold30" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 624, 160 ) + +[node name="Gold31" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 608, 136 ) + +[node name="Gold32" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 656, 112 ) + +[node name="Gold37" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 264, 24 ) + +[node name="Gold38" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 288, 24 ) + +[node name="Gold39" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 424, 32 ) + +[node name="Gold40" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 200, 72 ) + +[node name="Gold41" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 480, 32 ) + +[node name="Gold42" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 528, 16 ) + +[node name="Gold48" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 544, 104 ) + +[node name="Gold49" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 520, 104 ) + +[node name="Gold50" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 488, 104 ) + +[node name="Gold44" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 656, 32 ) + +[node name="Gold45" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 688, 32 ) + +[node name="Gold46" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 608, 64 ) + +[node name="Gold47" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 584, 40 ) + +[node name="Gold43" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 504, 16 ) + +[node name="Gold34" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 696, 104 ) + +[node name="Gold35" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 736, 104 ) + +[node name="Gold36" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 720, 64 ) + +[node name="Gold33" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 688, 160 ) + +[node name="Gold15" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 232, 128 ) + +[node name="Gold13" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 312, 72 ) + +[node name="Gold12" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 288, 72 ) + +[node name="Arrow" parent="Collectibles" instance=ExtResource( 24 )] +position = Vector2( 168, 96 ) + +[node name="Star" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 384, 160 ) +color = 1 + +[node name="Star3" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 144, 168 ) + +[node name="Star4" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 568, 80 ) +color = 3 + +[node name="Star5" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 744, 128 ) +color = 4 + +[node name="Star2" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 432, 56 ) +color = 2 + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( -4, 96 ) +shape = SubResource( 1 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 772, 96 ) +shape = SubResource( 1 ) + +[node name="ColorRect" type="ColorRect" parent="."] +margin_left = 256.0 +margin_right = 512.0 +margin_bottom = 192.0 +color = Color( 0, 1, 0.227451, 0.0627451 ) +script = ExtResource( 6 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect2" type="ColorRect" parent="."] +margin_left = 512.0 +margin_right = 768.0 +margin_bottom = 192.0 +color = Color( 1, 0.937255, 0, 0.0627451 ) +script = ExtResource( 6 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ICantTakeItAnymore" type="Sprite" parent="."] +position = Vector2( -96, 96 ) +texture = ExtResource( 10 ) + +[node name="HUD" parent="." instance=ExtResource( 17 )] +song_name = "♫Cryokiller" + +[node name="Exit" parent="." instance=ExtResource( 19 )] +position = Vector2( 752, 164 ) +cost = 25 + +[node name="Speccy" parent="." groups=["button3"] instance=ExtResource( 33 )] +position = Vector2( 705, 41 ) +flip = true diff --git a/maps/station.gd b/maps/station.gd new file mode 100644 index 0000000..9ac633d --- /dev/null +++ b/maps/station.gd @@ -0,0 +1,12 @@ +extends "res://maps/map.gd" + +var acab_shard_has_been_collected: bool = false + +func _physics_process(delta): + ._physics_process(delta) + if get_tree().get_nodes_in_group("cop").size() == 0: + if !acab_shard_has_been_collected: + Audio.play_shard_sound() + Game.score += 500 + Game.shards_collected[0] = true + acab_shard_has_been_collected = true diff --git a/maps/station.tscn b/maps/station.tscn new file mode 100644 index 0000000..5ab3c5a --- /dev/null +++ b/maps/station.tscn @@ -0,0 +1,583 @@ +[gd_scene load_steps=38 format=2] + +[ext_resource path="res://maps/station.gd" type="Script" id=1] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=2] +[ext_resource path="res://tilesets/t_station.tres" type="TileSet" id=3] +[ext_resource path="res://graphics/backgrounds/night.png" type="Texture" id=4] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=5] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=6] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=7] +[ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=8] +[ext_resource path="res://audio/music/spine_v2.ogg" type="AudioStream" id=9] +[ext_resource path="res://objects/enemy/cop.tscn" type="PackedScene" id=10] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=13] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=14] +[ext_resource path="res://objects/enemy/laser_wall.tscn" type="PackedScene" id=15] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=16] +[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=17] +[ext_resource path="res://objects/environment/switches/button.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=19] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=20] +[ext_resource path="res://objects/environment/barrier/jail_bars.tscn" type="PackedScene" id=21] +[ext_resource path="res://objects/npc/msx.tscn" type="PackedScene" id=22] +[ext_resource path="res://objects/environment/barrier/barrier.tscn" type="PackedScene" id=23] +[ext_resource path="res://maps/graffiti.gd" type="Script" id=24] +[ext_resource path="res://objects/lore/station/msx.tscn" type="PackedScene" id=25] +[ext_resource path="res://graphics/graffiti/tgirls_rule.png" type="Texture" id=26] +[ext_resource path="res://graphics/graffiti/msx.png" type="Texture" id=27] +[ext_resource path="res://graphics/graffiti/msx_was_here.png" type="Texture" id=28] +[ext_resource path="res://objects/lore/station/famicop.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/station/dread_pd.tscn" type="PackedScene" id=30] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=31] +[ext_resource path="res://ui/theme.tres" type="Theme" id=32] +[ext_resource path="res://graphics/hatch/hatch.png" type="Texture" id=33] +[ext_resource path="res://graphics/turniwood/turning_platoform_lab.png" type="Texture" id=34] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=35] + +[sub_resource type="Animation" id=2] +resource_name = "open" +length = 0.9 +tracks/0/type = "value" +tracks/0/path = NodePath(".:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.7, 0.8 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 1, 0 ] +} + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 4, 120 ) + +[node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 1 ) +target_time_any = 180 +target_time_100 = 500 +music = ExtResource( 9 ) +lore_entries = [ ExtResource( 30 ), ExtResource( 29 ), ExtResource( 25 ) ] + +[node name="Camera2D" parent="." instance=ExtResource( 6 )] + +[node name="Background" type="CanvasLayer" parent="."] +layer = -1 + +[node name="Sprite" type="Sprite" parent="Background"] +position = Vector2( 128, 96 ) +texture = ExtResource( 4 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="BackgroundTiles" type="TileMap" parent="."] +z_index = -2 +tile_set = ExtResource( 3 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 327699, 0, 3, 327700, 0, 3, 327701, 0, 3, 327702, 0, 3, 327703, 0, 3, 327704, 0, 3, 327705, 0, 3, 327706, 0, 3, 327707, 0, 3, 327708, 0, 3, 327709, 0, 3, 327710, 0, 3, 327711, 0, 3, 327712, 0, 3, 327713, 0, 3, 327714, 0, 3, 327715, 0, 3, 327716, 0, 3, 327717, 0, 3, 327718, 0, 3, 327719, 0, 3, 327720, 0, 3, 327721, 0, 3, 327722, 0, 3, 327723, 0, 3, 327724, 0, 3, 327725, 0, 3, 327726, 0, 3, 327727, 0, 3, 327728, 0, 3, 327729, 0, 3, 327730, 0, 3, 327731, 0, 3, 327732, 0, 3, 327733, 0, 3, 327734, 0, 3, 327735, 0, 3, 327736, 0, 3, 327737, 0, 3, 327738, 0, 3, 327739, 0, 3, 327740, 0, 3, 327741, 0, 3, 327742, 0, 3, 327743, 0, 3, 327744, 0, 3, 327745, 0, 3, 327746, 0, 3, 327747, 0, 3, 327748, 0, 3, 327749, 0, 3, 327750, 0, 3, 327751, 0, 3, 327752, 0, 3, 327753, 0, 3, 327754, 0, 3, 327755, 0, 3, 327756, 0, 3, 327757, 0, 3, 327758, 0, 3, 327759, 0, 3, 327760, 0, 3, 327761, 0, 3, 327762, 0, 3, 327763, 0, 3, 327764, 0, 3, 327765, 0, 3, 327766, 0, 3, 327767, 0, 3, 327768, 0, 3, 327769, 0, 3, 327770, 0, 3, 327771, 0, 3, 327772, 0, 3, 327773, 0, 3, 327774, 0, 3, 393234, 0, 3, 393235, 0, 3, 393236, 0, 3, 393237, 0, 3, 393238, 0, 3, 393239, 0, 3, 393240, 0, 3, 393241, 0, 3, 393242, 0, 3, 393243, 0, 3, 393244, 0, 3, 393245, 0, 3, 393246, 0, 3, 393247, 0, 3, 393248, 0, 3, 393249, 0, 3, 393250, 0, 3, 393251, 0, 3, 393252, 0, 3, 393253, 0, 3, 393254, 0, 3, 393255, 0, 3, 393256, 0, 3, 393257, 0, 3, 393258, 0, 3, 393259, 0, 3, 393260, 0, 3, 393261, 0, 3, 393262, 0, 3, 393263, 0, 3, 393264, 0, 3, 393265, 0, 3, 393266, 0, 3, 393267, 0, 3, 393268, 0, 3, 393269, 0, 3, 393270, 0, 3, 393271, 0, 3, 393272, 0, 3, 393273, 0, 3, 393274, 0, 3, 393275, 0, 3, 393276, 0, 3, 393277, 0, 3, 393278, 0, 3, 393279, 0, 3, 393280, 0, 3, 393281, 0, 3, 393282, 0, 3, 393283, 0, 3, 393284, 0, 3, 393285, 0, 3, 393286, 0, 3, 393287, 0, 3, 393288, 0, 3, 393289, 0, 3, 393290, 0, 3, 393291, 0, 3, 393292, 0, 3, 393293, 0, 3, 393294, 0, 3, 393295, 0, 3, 393296, 0, 3, 393297, 0, 3, 393298, 0, 3, 393299, 0, 3, 393300, 0, 3, 393301, 0, 3, 393302, 0, 3, 393303, 0, 3, 393304, 0, 3, 393305, 0, 3, 393306, 0, 3, 393307, 0, 3, 393308, 0, 3, 393309, 0, 3, 393310, 0, 3, 393311, 0, 3, 458771, 0, 3, 458772, 536870912, 3, 458773, 536870912, 3, 458774, 536870912, 3, 458775, 536870912, 3, 458776, 536870912, 3, 458777, 536870912, 3, 458778, 536870912, 3, 458779, 536870912, 3, 458780, 536870912, 3, 458781, 536870912, 3, 458782, 536870912, 3, 458783, 536870912, 3, 458784, 536870912, 3, 458785, 536870912, 3, 458786, 536870912, 3, 458787, 536870912, 3, 458788, 536870912, 3, 458789, 536870912, 3, 458790, 536870912, 3, 458791, 536870912, 3, 458792, 536870912, 3, 458793, 536870912, 3, 458794, 536870912, 3, 458795, 536870912, 3, 458796, 536870912, 3, 458797, 536870912, 3, 458798, 536870912, 3, 458799, 536870912, 3, 458800, 536870912, 3, 458801, 536870912, 3, 458802, 536870912, 3, 458803, 536870912, 3, 458804, 536870912, 3, 458805, 536870912, 3, 458806, 536870912, 3, 458807, 536870912, 3, 458808, 536870912, 3, 458809, 536870912, 3, 458810, 536870912, 3, 458811, 536870912, 3, 458812, 536870912, 3, 458813, 536870912, 3, 458814, 536870912, 3, 458815, 536870912, 3, 458816, 536870912, 3, 458817, 536870912, 3, 458818, 536870912, 3, 458819, 536870912, 3, 458820, 536870912, 3, 458821, 536870912, 3, 458822, 536870912, 3, 458823, 536870912, 3, 458824, 536870912, 3, 458825, 536870912, 3, 458826, 536870912, 3, 458827, 536870912, 3, 458828, 536870912, 3, 458829, 536870912, 3, 458830, 536870912, 3, 458831, 536870912, 3, 458832, 536870912, 3, 458833, 536870912, 3, 458834, 536870912, 3, 458835, 536870912, 3, 458836, 536870912, 3, 458837, 536870912, 3, 458838, 536870912, 3, 458839, 536870912, 3, 458840, 536870912, 3, 458841, 536870912, 3, 458842, 536870912, 3, 458843, 536870912, 3, 458844, 536870912, 3, 458845, 536870912, 3, 458846, 536870912, 3, 458847, 536870912, 3, 524307, 0, 3, 524308, 536870912, 3, 524309, 536870912, 3, 524310, 536870912, 3, 524311, 536870912, 3, 524312, 536870912, 3, 524313, 536870912, 3, 524314, 536870912, 3, 524315, 536870912, 3, 524316, 536870912, 3, 524317, 536870912, 3, 524318, 536870912, 3, 524319, 536870912, 3, 524320, 536870912, 3, 524321, 536870912, 3, 524322, 536870912, 3, 524323, 536870912, 3, 524324, 536870912, 3, 524325, 536870912, 3, 524326, 536870912, 3, 524327, 536870912, 3, 524328, 536870912, 3, 524329, 536870912, 3, 524330, 536870912, 3, 524331, 536870912, 3, 524332, 536870912, 3, 524333, 536870912, 3, 524334, 536870912, 3, 524335, 536870912, 3, 524336, 536870912, 3, 524337, 536870912, 3, 524338, 536870912, 3, 524339, 536870912, 3, 524340, 536870912, 3, 524341, 536870912, 3, 524342, 536870912, 3, 524343, 536870912, 3, 524344, 536870912, 3, 524345, 536870912, 3, 524346, 536870912, 3, 524347, 536870912, 3, 524348, 536870912, 3, 524349, 536870912, 3, 524350, 536870912, 3, 524351, 536870912, 3, 524352, 536870912, 3, 524353, 536870912, 3, 524354, 536870912, 3, 524355, 536870912, 3, 524356, 536870912, 3, 524357, 536870912, 3, 524358, 536870912, 3, 524359, 536870912, 3, 524360, 536870912, 3, 524361, 536870912, 3, 524362, 536870912, 3, 524363, 536870912, 3, 524364, 536870912, 3, 524365, 536870912, 3, 524366, 536870912, 3, 524367, 536870912, 3, 524368, 536870912, 3, 524369, 536870912, 3, 524370, 536870912, 3, 524371, 536870912, 3, 524372, 536870912, 3, 524373, 536870912, 3, 524374, 536870912, 3, 524375, 536870912, 3, 524376, 536870912, 3, 524377, 536870912, 3, 524378, 536870912, 3, 524379, 536870912, 3, 524380, 536870912, 3, 524381, 536870912, 3, 524382, 536870912, 3, 524383, 536870912, 3, 589843, 0, 3, 589844, 536870912, 3, 589845, 536870912, 3, 589846, 536870912, 3, 589847, 536870912, 3, 589848, 536870912, 3, 589849, 536870912, 3, 589850, 536870912, 3, 589851, 536870912, 3, 589852, 536870912, 3, 589853, 536870912, 3, 589854, 536870912, 3, 589855, 536870912, 3, 589856, 536870912, 3, 589857, 536870912, 3, 589858, 536870912, 3, 589859, 536870912, 3, 589860, 536870912, 3, 589861, 536870912, 3, 589862, 536870912, 3, 589863, 536870912, 3, 589864, 536870912, 3, 589865, 536870912, 3, 589866, 536870912, 3, 589867, 536870912, 3, 589868, 536870912, 3, 589869, 536870912, 3, 589870, 536870912, 3, 589871, 536870912, 3, 589872, 536870912, 3, 589873, 536870912, 3, 589874, 536870912, 3, 589875, 536870912, 3, 589876, 536870912, 3, 589877, 536870912, 3, 589878, 536870912, 3, 589879, 536870912, 3, 589880, 0, 3, 589881, 0, 3, 589882, 536870912, 3, 589883, 536870912, 3, 589884, 536870912, 3, 589885, 536870912, 3, 589886, 536870912, 3, 589887, 536870912, 3, 589888, 536870912, 3, 589889, 536870912, 3, 589890, 536870912, 3, 589891, 536870912, 3, 589892, 536870912, 3, 589893, 536870912, 3, 589894, 536870912, 3, 589895, 536870912, 3, 589896, 536870912, 3, 589897, 536870912, 3, 589898, 536870912, 3, 589899, 536870912, 3, 589900, 536870912, 3, 589901, 536870912, 3, 589902, 536870912, 3, 589903, 536870912, 3, 589904, 536870912, 3, 589905, 536870912, 3, 589906, 536870912, 3, 589907, 536870912, 3, 589908, 536870912, 3, 589909, 536870912, 3, 589910, 536870912, 3, 589911, 536870912, 3, 589912, 536870912, 3, 589913, 536870912, 3, 589914, 536870912, 3, 589915, 536870912, 3, 589916, 536870912, 3, 589917, 536870912, 3, 589918, 536870912, 3, 589919, 536870912, 3, 655379, 0, 3, 655380, 536870912, 3, 655381, 536870912, 3, 655382, 536870912, 3, 655383, 536870912, 3, 655384, 536870912, 3, 655385, 536870912, 3, 655386, 536870912, 3, 655387, 536870912, 3, 655388, 536870912, 3, 655389, 536870912, 3, 655390, 536870912, 3, 655391, 536870912, 3, 655392, 536870912, 3, 655393, 536870912, 3, 655394, 536870912, 3, 655395, 536870912, 3, 655396, 536870912, 3, 655397, 536870912, 3, 655398, 536870912, 3, 655399, 536870912, 3, 655400, 536870912, 3, 655401, 536870912, 3, 655402, 536870912, 3, 655403, 536870912, 3, 655404, 536870912, 3, 655405, 536870912, 3, 655406, 536870912, 3, 655407, 536870912, 3, 655408, 536870912, 3, 655409, 536870912, 3, 655410, 536870912, 3, 655411, 536870912, 3, 655412, 536870912, 3, 655413, 536870912, 3, 655414, 536870912, 3, 655415, 536870912, 3, 655416, 0, 3, 655417, 0, 3, 655418, 536870912, 3, 655419, 536870912, 3, 655420, 536870912, 3, 655421, 536870912, 3, 655422, 536870912, 3, 655423, 536870912, 3, 655424, 536870912, 3, 655425, 536870912, 3, 655426, 536870912, 3, 655427, 536870912, 3, 655428, 536870912, 3, 655429, 536870912, 3, 655430, 536870912, 3, 655431, 536870912, 3, 655432, 536870912, 3, 655433, 536870912, 3, 655434, 536870912, 3, 655435, 536870912, 3, 655436, 536870912, 3, 655437, 536870912, 3, 655438, 536870912, 3, 655439, 536870912, 3, 655440, 536870912, 3, 655441, 536870912, 3, 655442, 536870912, 3, 655443, 536870912, 3, 655444, 536870912, 3, 655445, 536870912, 3, 655446, 536870912, 3, 655447, 536870912, 3, 655448, 536870912, 3, 655449, 536870912, 3, 655450, 536870912, 3, 655451, 536870912, 3, 655452, 536870912, 3, 655453, 536870912, 3, 655454, 536870912, 3, 655455, 536870912, 3, 720915, 0, 3, 720916, 536870912, 3, 720917, 536870912, 3, 720918, 536870912, 3, 720919, 536870912, 3, 720920, 536870912, 3, 720921, 536870912, 3, 720922, 536870912, 3, 720923, 536870912, 3, 720924, 536870912, 3, 720925, 536870912, 3, 720926, 536870912, 3, 720927, 536870912, 3, 720928, 536870912, 3, 720929, 536870912, 3, 720930, 536870912, 3, 720931, 536870912, 3, 720932, 536870912, 3, 720933, 536870912, 3, 720934, 536870912, 3, 720935, 536870912, 3, 720936, 536870912, 3, 720937, 536870912, 3, 720938, 536870912, 3, 720939, 536870912, 3, 720940, 536870912, 3, 720941, 536870912, 3, 720942, 536870912, 3, 720943, 536870912, 3, 720944, 536870912, 3, 720945, 536870912, 3, 720946, 536870912, 3, 720947, 536870912, 3, 720948, 536870912, 3, 720949, 536870912, 3, 720950, 536870912, 3, 720951, 536870912, 3, 720952, 536870912, 3, 720953, 536870912, 3, 720954, 536870912, 3, 720955, 536870912, 3, 720956, 536870912, 3, 720957, 536870912, 3, 720958, 536870912, 3, 720959, 536870912, 3, 720960, 536870912, 3, 720961, 536870912, 3, 720962, 536870912, 3, 720963, 536870912, 3, 720964, 536870912, 3, 720965, 536870912, 3, 720966, 536870912, 3, 720967, 536870912, 3, 720968, 536870912, 3, 720969, 536870912, 3, 720970, 536870912, 3, 720971, 536870912, 3, 720972, 536870912, 3, 720973, 536870912, 3, 720974, 536870912, 3, 720975, 536870912, 3, 720976, 536870912, 3, 720977, 536870912, 3, 720978, 536870912, 3, 720979, 536870912, 3, 720980, 536870912, 3, 720981, 536870912, 3, 720982, 536870912, 3, 720983, 536870912, 3, 720984, 536870912, 3, 720985, 536870912, 3, 720986, 536870912, 3, 720987, 536870912, 3, 720988, 536870912, 3, 720989, 536870912, 3, 720990, 536870912, 3, 720991, 536870912, 3, 786451, 0, 3, 786452, 536870912, 3, 786453, 536870912, 3, 786454, 536870912, 3, 786455, 536870912, 3, 786456, 536870912, 3, 786457, 536870912, 3, 786458, 536870912, 3, 786459, 536870912, 3, 786460, 536870912, 3, 786461, 536870912, 3, 786462, 536870912, 3, 786463, 536870912, 3, 786464, 536870912, 3, 786465, 536870912, 3, 786466, 536870912, 3, 786467, 536870912, 3, 786468, 536870912, 3, 786469, 536870912, 3, 786470, 536870912, 3, 786471, 536870912, 3, 786472, 536870912, 3, 786473, 536870912, 3, 786474, 536870912, 3, 786475, 536870912, 3, 786476, 536870912, 3, 786477, 536870912, 3, 786478, 536870912, 3, 786479, 536870912, 3, 786480, 536870912, 3, 786481, 536870912, 3, 786482, 536870912, 3, 786483, 536870912, 3, 786484, 536870912, 3, 786485, 536870912, 3, 786486, 536870912, 3, 786487, 536870912, 3, 786488, 536870912, 3, 786489, 536870912, 3, 786490, 536870912, 3, 786491, 536870912, 3, 786492, 536870912, 3, 786493, 536870912, 3, 786494, 536870912, 3, 786495, 536870912, 3, 786496, 536870912, 3, 786497, 536870912, 3, 786498, 536870912, 3, 786499, 536870912, 3, 786500, 536870912, 3, 786501, 536870912, 3, 786502, 536870912, 3, 786503, 536870912, 3, 786504, 536870912, 3, 786505, 536870912, 3, 786506, 536870912, 3, 786507, 536870912, 3, 786508, 536870912, 3, 786509, 536870912, 3, 786510, 536870912, 3, 786511, 536870912, 3, 786512, 536870912, 3, 786513, 536870912, 3, 786514, 536870912, 3, 786515, 536870912, 3, 786516, 536870912, 3, 786517, 536870912, 3, 786518, 536870912, 3, 786519, 536870912, 3, 786520, 536870912, 3, 786521, 536870912, 3, 786522, 536870912, 3, 786523, 536870912, 3, 786524, 536870912, 3, 786525, 536870912, 3, 786526, 536870912, 3, 786527, 536870912, 3, 851987, 0, 3, 851988, 536870912, 3, 851989, 536870912, 3, 851990, 536870912, 3, 851991, 536870912, 3, 851992, 536870912, 3, 851993, 536870912, 3, 851994, 536870912, 3, 851995, 536870912, 3, 851996, 536870912, 3, 851997, 536870912, 3, 851998, 536870912, 3, 851999, 536870912, 3, 852000, 536870912, 3, 852001, 536870912, 3, 852002, 536870912, 3, 852003, 536870912, 3, 852004, 536870912, 3, 852005, 536870912, 3, 852006, 536870912, 3, 852007, 536870912, 3, 852008, 536870912, 3, 852009, 536870912, 3, 852010, 536870912, 3, 852011, 536870912, 3, 852012, 536870912, 3, 852013, 536870912, 3, 852014, 536870912, 3, 852015, 536870912, 3, 852016, 536870912, 3, 852017, 536870912, 3, 852018, 536870912, 3, 852019, 536870912, 3, 852020, 536870912, 3, 852021, 536870912, 3, 852022, 536870912, 3, 852023, 536870912, 3, 852024, 536870912, 3, 852025, 536870912, 3, 852026, 536870912, 3, 852027, 536870912, 3, 852028, 536870912, 3, 852029, 536870912, 3, 852030, 536870912, 3, 852031, 536870912, 3, 852032, 536870912, 3, 852033, 536870912, 3, 852034, 536870912, 3, 852035, 536870912, 3, 852036, 536870912, 3, 852037, 536870912, 3, 852038, 536870912, 3, 852039, 536870912, 3, 852040, 536870912, 3, 852041, 536870912, 3, 852042, 536870912, 3, 852043, 536870912, 3, 852044, 536870912, 3, 852045, 536870912, 3, 852046, 536870912, 3, 852047, 536870912, 3, 852048, 536870912, 3, 852049, 536870912, 3, 852050, 536870912, 3, 852051, 536870912, 3, 852052, 536870912, 3, 852053, 536870912, 3, 852054, 536870912, 3, 852055, 536870912, 3, 852056, 536870912, 3, 852057, 536870912, 3, 852058, 536870912, 3, 852059, 536870912, 3, 852060, 536870912, 3, 852061, 536870912, 3, 852062, 536870912, 3, 852063, 536870912, 3, 917523, 0, 3, 917524, 536870912, 3, 917525, 536870912, 3, 917526, 536870912, 3, 917527, 536870912, 3, 917528, 536870912, 3, 917529, 536870912, 3, 917530, 536870912, 3, 917531, 536870912, 3, 917532, 536870912, 3, 917533, 536870912, 3, 917534, 536870912, 3, 917535, 536870912, 3, 917536, 536870912, 3, 917537, 536870912, 3, 917538, 536870912, 3, 917539, 536870912, 3, 917540, 536870912, 3, 917541, 536870912, 3, 917542, 536870912, 3, 917543, 536870912, 3, 917544, 536870912, 3, 917545, 536870912, 3, 917546, 536870912, 3, 917547, 536870912, 3, 917548, 536870912, 3, 917549, 536870912, 3, 917550, 536870912, 3, 917551, 536870912, 3, 917552, 536870912, 3, 917553, 536870912, 3, 917554, 536870912, 3, 917555, 536870912, 3, 917556, 536870912, 3, 917557, 536870912, 3, 917558, 536870912, 3, 917559, 536870912, 3, 917560, 536870912, 3, 917561, 536870912, 3, 917562, 536870912, 3, 917563, 536870912, 3, 917564, 536870912, 3, 917565, 536870912, 3, 917566, 536870912, 3, 917567, 536870912, 3, 917568, 536870912, 3, 917569, 536870912, 3, 917570, 536870912, 3, 917571, 536870912, 3, 917572, 536870912, 3, 917573, 536870912, 3, 917574, 536870912, 3, 917575, 536870912, 3, 917576, 536870912, 3, 917577, 536870912, 3, 917578, 536870912, 3, 917579, 536870912, 3, 917580, 536870912, 3, 917581, 536870912, 3, 917582, 536870912, 3, 917583, 536870912, 3, 917584, 536870912, 3, 917585, 536870912, 3, 917586, 536870912, 3, 917587, 536870912, 3, 917588, 536870912, 3, 917589, 536870912, 3, 917590, 536870912, 3, 917591, 536870912, 3, 917592, 536870912, 3, 917593, 536870912, 3, 917594, 536870912, 3, 917595, 536870912, 3, 917596, 536870912, 3, 917597, 536870912, 3, 917598, 536870912, 3, 917599, 536870912, 3, 983059, 0, 3, 983060, 536870912, 3, 983061, 536870912, 3, 983062, 536870912, 3, 983063, 536870912, 3, 983064, 536870912, 3, 983065, 536870912, 3, 983066, 536870912, 3, 983067, 536870912, 3, 983068, 536870912, 3, 983069, 536870912, 3, 983070, 536870912, 3, 983071, 536870912, 3, 983072, 536870912, 3, 983073, 536870912, 3, 983074, 536870912, 3, 983075, 536870912, 3, 983076, 536870912, 3, 983077, 536870912, 3, 983078, 536870912, 3, 983079, 536870912, 3, 983080, 536870912, 3, 983081, 536870912, 3, 983082, 536870912, 3, 983083, 536870912, 3, 983084, 536870912, 3, 983085, 536870912, 3, 983086, 536870912, 3, 983087, 536870912, 3, 983088, 536870912, 3, 983089, 536870912, 3, 983090, 536870912, 3, 983091, 536870912, 3, 983092, 536870912, 3, 983093, 536870912, 3, 983094, 536870912, 3, 983095, 536870912, 3, 983096, 536870912, 3, 983097, 536870912, 3, 983098, 536870912, 3, 983099, 536870912, 3, 983100, 536870912, 3, 983101, 536870912, 3, 983102, 536870912, 3, 983103, 536870912, 3, 983104, 536870912, 3, 983105, 536870912, 3, 983106, 536870912, 3, 983107, 536870912, 3, 983108, 536870912, 3, 983109, 536870912, 3, 983110, 536870912, 3, 983111, 536870912, 3, 983112, 536870912, 3, 983113, 536870912, 3, 983114, 536870912, 3, 983115, 536870912, 3, 983116, 536870912, 3, 983117, 536870912, 3, 983118, 536870912, 3, 983119, 536870912, 3, 983120, 536870912, 3, 983121, 536870912, 3, 983122, 536870912, 3, 983123, 536870912, 3, 983124, 536870912, 3, 983125, 536870912, 3, 983126, 536870912, 3, 983127, 536870912, 3, 983128, 536870912, 3, 983129, 536870912, 3, 983130, 536870912, 3, 983131, 536870912, 3, 983132, 536870912, 3, 983133, 536870912, 3, 983134, 536870912, 3, 983135, 536870912, 3, 1048595, 0, 3, 1048596, 536870912, 3, 1048597, 536870912, 3, 1048598, 536870912, 3, 1048599, 536870912, 3, 1048600, 536870912, 3, 1048601, 536870912, 3, 1048602, 536870912, 3, 1048603, 536870912, 3, 1048604, 536870912, 3, 1048605, 536870912, 3, 1048606, 536870912, 3, 1048607, 536870912, 3, 1048608, 536870912, 3, 1048609, 536870912, 3, 1048610, 536870912, 3, 1048611, 536870912, 3, 1048612, 536870912, 3, 1048613, 536870912, 3, 1048614, 536870912, 3, 1048615, 536870912, 3, 1048616, 536870912, 3, 1048617, 536870912, 3, 1048618, 536870912, 3, 1048619, 536870912, 3, 1048620, 536870912, 3, 1048621, 536870912, 3, 1048622, 536870912, 3, 1048623, 536870912, 3, 1048624, 536870912, 3, 1048625, 536870912, 3, 1048626, 536870912, 3, 1048627, 536870912, 3, 1048628, 536870912, 3, 1048629, 536870912, 3, 1048630, 536870912, 3, 1048631, 536870912, 3, 1048632, 536870912, 3, 1048633, 536870912, 3, 1048634, 536870912, 3, 1048635, 536870912, 3, 1048636, 536870912, 3, 1048637, 536870912, 3, 1048638, 536870912, 3, 1048639, 536870912, 3, 1048640, 536870912, 3, 1048641, 536870912, 3, 1048642, 536870912, 3, 1048643, 536870912, 3, 1048644, 536870912, 3, 1048645, 536870912, 3, 1048646, 536870912, 3, 1048647, 536870912, 3, 1048648, 536870912, 3, 1048649, 536870912, 3, 1048650, 536870912, 3, 1048651, 536870912, 3, 1048652, 536870912, 3, 1048653, 536870912, 3, 1048654, 536870912, 3, 1048655, 536870912, 3, 1048656, 536870912, 3, 1048657, 536870912, 3, 1048658, 536870912, 3, 1048659, 536870912, 3, 1048660, 536870912, 3, 1048661, 536870912, 3, 1048662, 536870912, 3, 1048663, 536870912, 3, 1048664, 536870912, 3, 1048665, 536870912, 3, 1048666, 536870912, 3, 1048667, 536870912, 3, 1048668, 536870912, 3, 1048669, 536870912, 3, 1048670, 536870912, 3, 1048671, 536870912, 3, 1114131, 0, 3, 1114132, 536870912, 3, 1114133, 536870912, 3, 1114134, 536870912, 3, 1114135, 536870912, 3, 1114136, 536870912, 3, 1114137, 536870912, 3, 1114138, 536870912, 3, 1114139, 536870912, 3, 1114140, 536870912, 3, 1114141, 536870912, 3, 1114142, 536870912, 3, 1114143, 536870912, 3, 1114144, 536870912, 3, 1114145, 536870912, 3, 1114146, 536870912, 3, 1114147, 536870912, 3, 1114148, 536870912, 3, 1114149, 536870912, 3, 1114150, 536870912, 3, 1114151, 536870912, 3, 1114152, 536870912, 3, 1114153, 536870912, 3, 1114154, 536870912, 3, 1114155, 536870912, 3, 1114156, 536870912, 3, 1114157, 536870912, 3, 1114158, 536870912, 3, 1114159, 536870912, 3, 1114160, 536870912, 3, 1114161, 536870912, 3, 1114162, 536870912, 3, 1114163, 536870912, 3, 1114164, 536870912, 3, 1114165, 536870912, 3, 1114166, 536870912, 3, 1114167, 536870912, 3, 1114168, 536870912, 3, 1114169, 536870912, 3, 1114170, 536870912, 3, 1114171, 536870912, 3, 1114172, 536870912, 3, 1114173, 536870912, 3, 1114174, 536870912, 3, 1114175, 536870912, 3, 1114176, 536870912, 3, 1114177, 536870912, 3, 1114178, 536870912, 3, 1114179, 536870912, 3, 1114180, 536870912, 3, 1114181, 536870912, 3, 1114182, 536870912, 3, 1114183, 536870912, 3, 1114184, 536870912, 3, 1114185, 536870912, 3, 1114186, 536870912, 3, 1114187, 536870912, 3, 1114188, 536870912, 3, 1114189, 536870912, 3, 1114190, 536870912, 3, 1114191, 536870912, 3, 1114192, 536870912, 3, 1114193, 536870912, 3, 1114194, 536870912, 3, 1114195, 536870912, 3, 1114196, 536870912, 3, 1114197, 536870912, 3, 1114198, 536870912, 3, 1114199, 536870912, 3, 1114200, 536870912, 3, 1114201, 536870912, 3, 1114202, 536870912, 3, 1114203, 536870912, 3, 1114204, 536870912, 3, 1114205, 536870912, 3, 1114206, 536870912, 3, 1114207, 536870912, 3, 1179666, 536870912, 3, 1179667, 0, 3, 1179668, 536870912, 3, 1179669, 536870912, 3, 1179670, 536870912, 3, 1179671, 536870912, 3, 1179672, 536870912, 3, 1179673, 536870912, 3, 1179674, 536870912, 3, 1179675, 536870912, 3, 1179676, 536870912, 3, 1179677, 536870912, 3, 1179678, 536870912, 3, 1179679, 536870912, 3, 1179680, 536870912, 3, 1179681, 536870912, 3, 1179682, 536870912, 3, 1179683, 536870912, 3, 1179684, 536870912, 3, 1179685, 536870912, 3, 1179686, 536870912, 3, 1179687, 536870912, 3, 1179688, 536870912, 3, 1179689, 536870912, 3, 1179690, 536870912, 3, 1179691, 536870912, 3, 1179692, 536870912, 3, 1179693, 536870912, 3, 1179694, 536870912, 3, 1179695, 536870912, 3, 1179696, 536870912, 3, 1179697, 536870912, 3, 1179698, 536870912, 3, 1179699, 536870912, 3, 1179700, 536870912, 3, 1179701, 536870912, 3, 1179702, 536870912, 3, 1179703, 536870912, 3, 1179704, 536870912, 3, 1179705, 536870912, 3, 1179706, 536870912, 3, 1179707, 536870912, 3, 1179708, 536870912, 3, 1179709, 536870912, 3, 1179710, 536870912, 3, 1179711, 536870912, 3, 1179712, 536870912, 3, 1179713, 536870912, 3, 1179714, 536870912, 3, 1179715, 536870912, 3, 1179716, 536870912, 3, 1179717, 536870912, 3, 1179718, 536870912, 3, 1179719, 536870912, 3, 1179720, 536870912, 3, 1179721, 536870912, 3, 1179722, 536870912, 3, 1179723, 536870912, 3, 1179724, 536870912, 3, 1179725, 536870912, 3, 1179726, 536870912, 3, 1179727, 536870912, 3, 1179728, 536870912, 3, 1179729, 536870912, 3, 1179730, 536870912, 3, 1179731, 536870912, 3, 1179732, 536870912, 3, 1179733, 536870912, 3, 1179734, 536870912, 3, 1179735, 536870912, 3, 1179736, 536870912, 3, 1179737, 536870912, 3, 1179738, 0, 2, 1179739, 0, 2, 1179740, 0, 2, 1179741, 0, 2, 1179742, 0, 2, 1179743, 536870912, 3, 1245202, 536870912, 3, 1245203, 536870912, 3, 1245204, 536870912, 3, 1245205, 536870912, 3, 1245206, 536870912, 3, 1245207, 536870912, 3, 1245208, 536870912, 3, 1245209, 536870912, 3, 1245210, 536870912, 3, 1245211, 536870912, 3, 1245212, 536870912, 3, 1245213, 536870912, 3, 1245214, 536870912, 3, 1245215, 536870912, 3, 1245216, 536870912, 3, 1245217, 536870912, 3, 1245218, 536870912, 3, 1245219, 536870912, 3, 1245220, 536870912, 3, 1245221, 536870912, 3, 1245222, 536870912, 3, 1245223, 536870912, 3, 1245224, 536870912, 3, 1245225, 536870912, 3, 1245226, 536870912, 3, 1245227, 536870912, 3, 1245228, 536870912, 3, 1245229, 536870912, 3, 1245230, 536870912, 3, 1245231, 536870912, 3, 1245232, 536870912, 3, 1245233, 536870912, 3, 1245234, 536870912, 3, 1245235, 536870912, 3, 1245236, 536870912, 3, 1245237, 536870912, 3, 1245238, 536870912, 3, 1245239, 536870912, 3, 1245240, 536870912, 3, 1245241, 536870912, 3, 1245242, 536870912, 3, 1245243, 536870912, 3, 1245244, 536870912, 3, 1245245, 536870912, 3, 1245246, 536870912, 3, 1245247, 536870912, 3, 1245248, 536870912, 3, 1245249, 536870912, 3, 1245250, 536870912, 3, 1245251, 536870912, 3, 1245252, 536870912, 3, 1245253, 536870912, 3, 1245254, 536870912, 3, 1245255, 536870912, 3, 1245256, 536870912, 3, 1245257, 536870912, 3, 1245258, 536870912, 3, 1245259, 536870912, 3, 1245260, 536870912, 3, 1245261, 536870912, 3, 1245262, 536870912, 3, 1245263, 536870912, 3, 1245264, 536870912, 3, 1245265, 536870912, 3, 1245266, 536870912, 3, 1245267, 536870912, 3, 1245268, 536870912, 3, 1245269, 536870912, 3, 1245270, 536870912, 3, 1245271, 536870912, 3, 1245272, 536870912, 3, 1245273, 0, 2, 1245274, 0, 2, 1245275, 0, 2, 1245276, 0, 2, 1245277, 0, 2, 1245278, 0, 2, 1245279, 536870912, 3, 1310738, 536870912, 3, 1310739, 536870912, 3, 1310740, 536870912, 3, 1310741, 536870912, 3, 1310742, 536870912, 3, 1310743, 536870912, 3, 1310744, 536870912, 3, 1310745, 536870912, 3, 1310746, 536870912, 3, 1310747, 536870912, 3, 1310748, 536870912, 3, 1310749, 536870912, 3, 1310750, 536870912, 3, 1310751, 536870912, 3, 1310752, 536870912, 3, 1310753, 536870912, 3, 1310754, 536870912, 3, 1310755, 536870912, 3, 1310756, 536870912, 3, 1310757, 536870912, 3, 1310758, 536870912, 3, 1310759, 536870912, 3, 1310760, 536870912, 3, 1310761, 536870912, 3, 1310762, 536870912, 3, 1310763, 536870912, 3, 1310764, 536870912, 3, 1310765, 536870912, 3, 1310766, 536870912, 3, 1310767, 536870912, 3, 1310768, 536870912, 3, 1310769, 536870912, 3, 1310770, 536870912, 3, 1310771, 536870912, 3, 1310772, 536870912, 3, 1310773, 536870912, 3, 1310774, 536870912, 3, 1310775, 536870912, 3, 1310776, 536870912, 3, 1310777, 536870912, 3, 1310778, 536870912, 3, 1310779, 536870912, 3, 1310780, 536870912, 3, 1310781, 536870912, 3, 1310782, 536870912, 3, 1310783, 536870912, 3, 1310784, 536870912, 3, 1310785, 536870912, 3, 1310786, 536870912, 3, 1310787, 536870912, 3, 1310788, 536870912, 3, 1310789, 536870912, 3, 1310790, 536870912, 3, 1310791, 536870912, 3, 1310792, 536870912, 3, 1310793, 536870912, 3, 1310794, 536870912, 3, 1310795, 536870912, 3, 1310796, 536870912, 3, 1310797, 536870912, 3, 1310798, 536870912, 3, 1310799, 536870912, 3, 1310800, 536870912, 3, 1310801, 536870912, 3, 1310802, 536870912, 3, 1310803, 536870912, 3, 1310804, 536870912, 3, 1310805, 536870912, 3, 1310806, 536870912, 3, 1310807, 536870912, 3, 1310808, 536870912, 3, 1310809, 0, 2, 1310810, 0, 2, 1310811, 0, 2, 1310812, 0, 2, 1310813, 0, 2, 1310814, 0, 2, 1310815, 536870912, 3, 1376274, 0, 2, 1376275, 0, 2, 1376276, 0, 2, 1376277, 0, 2, 1376278, 0, 2, 1376279, 0, 2, 1376280, 0, 2, 1376281, 0, 2, 1376282, 0, 2, 1376283, 0, 2, 1376284, 0, 2, 1376285, 0, 2, 1376286, 0, 2, 1376287, 0, 2, 1441801, 0, 0, 1441802, 0, 0, 1441809, 0, 65536, 1441810, 0, 65537, 1441811, 0, 65536, 1441812, 0, 65537, 1441813, 0, 65536, 1441814, 0, 65537, 1441815, 0, 65536, 1441816, 0, 65537, 1441817, 0, 65536, 1441818, 0, 65537, 1441819, 0, 65536, 1441820, 0, 65537, 1441821, 0, 65536, 1441822, 0, 65537, 1441823, 0, 65536, 1507328, 0, 131074, 1507329, 0, 131074, 1507330, 0, 131074, 1507331, 0, 131074, 1507332, 0, 131074, 1507333, 0, 131074, 1507334, 0, 131074, 1507335, 0, 131074, 1507336, 0, 131074, 1507337, 0, 131074, 1507338, 0, 131074, 1507339, 0, 131074, 1507340, 0, 131074, 1507341, 0, 131074, 1507342, 0, 131074, 1507346, 0, 131074, 1507347, 0, 131074, 1507348, 0, 131074, 1507349, 0, 131074, 1507350, 0, 131074, 1507351, 0, 131074, 1507352, 0, 131074, 1507353, 0, 131074, 1507354, 0, 131074, 1507355, 0, 131074, 1507356, 0, 131074, 1507357, 0, 131074, 1507358, 0, 131074, 1507359, 0, 131074 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Graffiti" type="Node2D" parent="."] +script = ExtResource( 24 ) + +[node name="Msx" type="Sprite" parent="Graffiti"] +position = Vector2( 289, 118 ) +texture = ExtResource( 27 ) + +[node name="TgirlsRule" type="Sprite" parent="Graffiti"] +position = Vector2( 585, 60 ) +texture = ExtResource( 26 ) + +[node name="MsxWasHere" type="Sprite" parent="Graffiti"] +position = Vector2( 732, 70 ) +texture = ExtResource( 28 ) + +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 16 ) +tile_set = ExtResource( 3 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 9 +format = 1 +tile_data = PoolIntArray( -65485, 1, 196609, -65484, 1, 196610, -65483, 1, 196610, -65482, 1, 196611, -65480, 1, 196609, -65479, 1, 196611, -65476, 1, 196608, 63, 1, 1, 64, 1, 3, 65599, 1, 65537, 65600, 1, 65539, 131135, 1, 65537, 131136, 1, 65539, 131168, 1, 196608, 196625, 0, 131072, 196626, 0, 131073, 196627, 0, 131073, 196628, 0, 131073, 196629, 0, 131073, 196630, 0, 131073, 196631, 0, 131073, 196642, 0, 131073, 196643, 0, 131073, 196644, 0, 131073, 196645, 0, 131073, 196646, 0, 131073, 196647, 0, 131073, 196648, 0, 131073, 196649, 0, 131073, 196650, 0, 131073, 196651, 0, 131073, 196652, 0, 131073, 196653, 0, 131073, 196654, 0, 131073, 196655, 0, 131073, 196656, 0, 131073, 196657, 0, 131073, 196658, 0, 131073, 196659, 0, 131073, 196662, 0, 131073, 196663, 0, 131073, 196666, 0, 131073, 196667, 0, 131073, 196671, 1, 65537, 196672, 1, 65539, 196673, 0, 131073, 196676, 0, 131073, 196677, 0, 131073, 196678, 0, 131073, 196679, 0, 131073, 196680, 0, 131073, 196681, 0, 131073, 196682, 0, 131073, 196683, 0, 131073, 196684, 0, 131073, 196685, 0, 131073, 196686, 0, 131073, 196687, 0, 131073, 196688, 0, 131073, 196689, 0, 131073, 196690, 0, 131073, 196691, 0, 131073, 196692, 0, 131073, 196698, 0, 131073, 196699, 0, 131073, 196700, 0, 131073, 196701, 0, 131073, 196702, 0, 131073, 196703, 0, 131073, 262162, 1, 1, 262163, 1, 196610, 262164, 1, 196610, 262165, 1, 196610, 262166, 1, 196610, 262167, 1, 196611, 262178, 1, 196609, 262179, 1, 196610, 262180, 1, 196610, 262181, 1, 196610, 262182, 1, 196610, 262183, 1, 196610, 262184, 1, 196610, 262185, 1, 196610, 262186, 1, 196610, 262187, 1, 196610, 262188, 1, 196610, 262189, 1, 196610, 262190, 1, 196610, 262191, 1, 196610, 262192, 1, 196610, 262193, 1, 196610, 262194, 1, 196610, 262195, 1, 196611, 262198, 1, 196609, 262199, 1, 196611, 262202, 1, 196609, 262203, 1, 196611, 262207, 1, 131073, 262208, 1, 131074, 262209, 1, 196611, 262212, 1, 196609, 262213, 1, 196610, 262214, 1, 196610, 262215, 1, 196610, 262216, 1, 196610, 262217, 1, 196610, 262218, 1, 196610, 262219, 1, 196610, 262220, 1, 196610, 262221, 1, 196610, 262222, 1, 196610, 262223, 1, 196610, 262224, 1, 196610, 262225, 1, 196610, 262226, 1, 196610, 262227, 1, 196610, 262228, 1, 196611, 262234, 1, 196609, 262235, 1, 196610, 262236, 1, 196610, 262237, 1, 196610, 262238, 1, 196610, 262239, 1, 3, 327693, 1, 196609, 327694, 1, 196610, 327695, 1, 196611, 327698, 1, 65536, 327767, 1, 0, 327775, 1, 65536, 393234, 1, 65536, 393302, 1, 1, 393303, 1, 131075, 393311, 1, 65536, 458770, 1, 65536, 458813, 1, 196609, 458814, 1, 196610, 458815, 1, 2, 458816, 1, 196610, 458817, 1, 196610, 458818, 1, 196610, 458819, 1, 196610, 458820, 1, 3, 458830, 1, 196609, 458831, 1, 196610, 458832, 1, 196610, 458833, 1, 196610, 458834, 1, 196610, 458835, 1, 196610, 458836, 1, 2, 458837, 1, 196610, 458838, 1, 131075, 458847, 1, 65536, 524306, 1, 65537, 524307, 536870913, 196610, 524308, 536870913, 196610, 524309, 536870913, 196610, 524310, 536870913, 196610, 524311, 536870913, 196610, 524312, 536870913, 196610, 524313, 536870913, 196610, 524314, 536870913, 196610, 524315, 1, 196611, 524324, 1, 196609, 524325, 1, 196610, 524326, 1, 196610, 524327, 1, 196610, 524328, 1, 196610, 524329, 1, 196610, 524330, 1, 196610, 524331, 1, 196610, 524332, 1, 196610, 524333, 1, 196610, 524334, 1, 196610, 524335, 1, 2, 524336, 1, 196610, 524337, 1, 196610, 524338, 1, 196611, 524351, 1, 65536, 524356, 1, 65537, 524357, 1, 3, 524365, 1, 196608, 524372, 1, 131072, 524383, 1, 65536, 589842, 1, 65536, 589871, 1, 65536, 589878, 1, 196609, 589879, 1, 196611, 589881, 1, 196609, 589882, 1, 196611, 589887, 1, 65536, 589892, 1, 65537, 589893, 1, 65538, 589894, 1, 3, 589919, 1, 65536, 655368, 1, 196609, 655369, 1, 196610, 655370, 1, 196610, 655371, 1, 196610, 655372, 1, 196610, 655373, 1, 196611, 655378, 1, 65536, 655391, 1, 196609, 655392, 1, 196610, 655393, 1, 196611, 655407, 1, 65536, 655423, 1, 65536, 655428, 1, 131073, 655429, 1, 131074, 655430, 1, 65538, 655431, 1, 196610, 655432, 1, 196610, 655433, 1, 196610, 655434, 1, 196610, 655435, 1, 196610, 655436, 1, 196611, 655444, 1, 0, 655455, 1, 65536, 720914, 1, 65536, 720943, 1, 65536, 720949, 1, 1, 720950, 1, 196610, 720951, 1, 196610, 720952, 1, 196610, 720953, 1, 196610, 720954, 1, 196610, 720955, 1, 3, 720959, 1, 65536, 720966, 1, 65536, 720978, 1, 196609, 720979, 1, 196610, 720980, 1, 65539, 720991, 1, 65536, 786450, 1, 65536, 786468, 1, 196609, 786469, 1, 196611, 786475, 1, 196609, 786476, 1, 196610, 786477, 1, 196611, 786479, 1, 131072, 786485, 1, 65536, 786491, 1, 65536, 786495, 1, 65536, 786499, 1, 196608, 786502, 1, 65536, 786511, 1, 196608, 786516, 1, 65537, 786517, 1, 196611, 786520, 1, 196609, 786521, 1, 196611, 786527, 1, 65536, 851986, 1, 65537, 851987, 1, 196610, 851988, 1, 196610, 851989, 1, 196611, 852008, 1, 196608, 852017, 1, 196609, 852018, 1, 196611, 852021, 1, 131072, 852027, 1, 65536, 852030, 1, 196609, 852031, 1, 65539, 852038, 1, 131072, 852052, 1, 65536, 852059, 1, 196609, 852060, 1, 196611, 852063, 1, 65536, 917522, 1, 65536, 917563, 1, 65536, 917567, 1, 131072, 917580, 1, 0, 917583, 1, 0, 917588, 1, 65536, 917598, 1, 1, 917599, 1, 65539, 983047, 1, 196609, 983048, 1, 196610, 983049, 536870913, 196610, 983050, 536870913, 196610, 983051, 536870913, 196610, 983052, 536870913, 196610, 983053, 536870913, 196610, 983054, 536870913, 196610, 983055, 536870913, 196610, 983056, 536870913, 196610, 983057, 1, 196610, 983058, 1, 65539, 983063, 1, 196609, 983064, 1, 196610, 983065, 1, 196611, 983099, 1, 65537, 983100, 1, 196611, 983114, 1, 0, 983116, 1, 65536, 983119, 1, 65536, 983124, 1, 65536, 983134, 1, 65537, 983135, 1, 65539, 1048594, 1, 65536, 1048635, 1, 65536, 1048650, 1, 131073, 1048651, 1, 196610, 1048652, 1, 131074, 1048653, 1, 196610, 1048654, 1, 196610, 1048655, 1, 131075, 1048660, 1, 131072, 1048669, 1, 1, 1048670, 1, 65538, 1048671, 1, 65539, 1114117, 1, 196609, 1114118, 1, 196611, 1114130, 1, 131072, 1114142, 1, 1, 1114143, 1, 196610, 1114144, 1, 196610, 1114145, 1, 196610, 1114146, 1, 196610, 1114147, 1, 196610, 1114148, 1, 196610, 1114149, 1, 196610, 1114150, 1, 196610, 1114151, 1, 196610, 1114152, 1, 196610, 1114153, 1, 196611, 1114157, 1, 196609, 1114158, 1, 196610, 1114159, 1, 196610, 1114160, 1, 196610, 1114161, 1, 196610, 1114162, 1, 196611, 1114164, 1, 196609, 1114165, 1, 196610, 1114166, 1, 196610, 1114167, 1, 196610, 1114168, 1, 196610, 1114169, 1, 196610, 1114170, 1, 196610, 1114171, 1, 131074, 1114172, 1, 196610, 1114173, 1, 196610, 1114174, 1, 196610, 1114175, 1, 196610, 1114176, 1, 196610, 1114177, 1, 196610, 1114178, 1, 196610, 1114179, 1, 196610, 1114180, 1, 196610, 1114181, 1, 196610, 1114182, 1, 196611, 1114201, 1, 1, 1114202, 1, 196610, 1114203, 1, 196610, 1114204, 1, 196610, 1114205, 1, 131074, 1114206, 1, 131074, 1114207, 1, 65539, 1179676, 1, 196609, 1179677, 1, 196610, 1179678, 1, 131075, 1179737, 1, 131072, 1179743, 1, 65536, 1245184, 1, 196609, 1245185, 1, 196611, 1245279, 1, 65536, 1310815, 1, 65536, 1376269, 0, 65538, 1376270, 0, 65539, 1376271, 1, 1, 1376272, 1, 2, 1376273, 1, 2, 1376274, 1, 2, 1376275, 1, 2, 1376276, 536870913, 2, 1376277, 536870913, 2, 1376278, 536870913, 2, 1376279, 536870913, 2, 1376280, 1, 2, 1376281, 1, 2, 1376282, 536870913, 2, 1376283, 1, 2, 1376284, 1, 2, 1376285, 1, 2, 1376286, 1, 2, 1376287, 1, 2, 1376288, 1, 2, 1376289, 1, 2, 1376290, 1, 2, 1376291, 1, 2, 1376292, 1, 2, 1376293, 1, 2, 1376294, 1, 2, 1376295, 1, 2, 1376296, 1, 2, 1376297, 1, 2, 1376298, 1, 2, 1376299, 1, 2, 1376300, 1, 2, 1376301, 1, 2, 1376302, 1, 2, 1376303, 1, 2, 1376304, 1, 2, 1376305, 1, 2, 1376306, 1, 2, 1376307, 1, 2, 1376308, 1, 2, 1376309, 1, 2, 1376310, 1, 2, 1376311, 1, 2, 1376312, 1, 2, 1376313, 1, 2, 1376314, 1, 2, 1376315, 1, 2, 1376316, 1, 2, 1376317, 1, 2, 1376318, 1, 2, 1376319, 1, 2, 1376320, 1, 2, 1376321, 1, 2, 1376322, 1, 2, 1376323, 1, 2, 1376324, 1, 2, 1376325, 1, 2, 1376326, 1, 2, 1376327, 1, 2, 1376328, 1, 2, 1376329, 1, 2, 1376330, 1, 2, 1376331, 1, 2, 1376332, 1, 2, 1376333, 1, 2, 1376334, 1, 2, 1376335, 1, 2, 1376336, 1, 2, 1376337, 1, 2, 1376338, 1, 2, 1376339, 1, 2, 1376340, 1, 2, 1376341, 1, 2, 1376342, 1, 2, 1376343, 1, 2, 1376344, 1, 2, 1376345, 1, 2, 1376346, 1, 2, 1376347, 1, 2, 1376348, 1, 2, 1376349, 1, 2, 1376350, 1, 2, 1376351, 1, 65539, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 1, 1, 1441806, 1, 2, 1441807, 1, 65538, 1441808, 1, 65538, 1441809, 1, 65538, 1441810, 1, 65538, 1441811, 1, 65538, 1441812, 536870913, 65538, 1441813, 536870913, 65538, 1441814, 536870913, 65538, 1441815, 536870913, 65538, 1441816, 1, 65538, 1441817, 1, 65538, 1441818, 536870913, 65538, 1441819, 1, 65538, 1441820, 1, 65538, 1441821, 1, 65538, 1441822, 1, 65538, 1441823, 1, 65538, 1441824, 1, 65538, 1441825, 1, 65538, 1441826, 1, 65538, 1441827, 1, 65538, 1441828, 1, 65538, 1441829, 1, 65538, 1441830, 1, 65538, 1441831, 1, 65538, 1441832, 1, 65538, 1441833, 1, 65538, 1441834, 1, 65538, 1441835, 1, 65538, 1441836, 1, 65538, 1441837, 1, 65538, 1441838, 1, 65538, 1441839, 1, 65538, 1441840, 1, 65538, 1441841, 1, 65538, 1441842, 1, 65538, 1441843, 1, 65538, 1441844, 1, 65538, 1441845, 1, 65538, 1441846, 1, 65538, 1441847, 1, 65538, 1441848, 1, 65538, 1441849, 1, 65538, 1441850, 1, 65538, 1441851, 1, 65538, 1441852, 1, 65538, 1441853, 1, 65538, 1441854, 1, 65538, 1441855, 1, 65538, 1441856, 1, 65538, 1441857, 1, 65538, 1441858, 1, 65538, 1441859, 1, 65538, 1441860, 1, 65538, 1441861, 1, 65538, 1441862, 1, 65538, 1441863, 1, 65538, 1441864, 1, 65538, 1441865, 1, 65538, 1441866, 1, 65538, 1441867, 1, 65538, 1441868, 1, 65538, 1441869, 1, 65538, 1441870, 1, 65538, 1441871, 1, 65538, 1441872, 1, 65538, 1441873, 1, 65538, 1441874, 1, 65538, 1441875, 1, 65538, 1441876, 1, 65538, 1441877, 1, 65538, 1441878, 1, 65538, 1441879, 1, 65538, 1441880, 1, 65538, 1441881, 1, 65538, 1441882, 1, 65538, 1441883, 1, 65538, 1441884, 1, 65538, 1441885, 1, 65538, 1441886, 1, 65538, 1441887, 1, 65539, 1507328, 536870913, 196609, 1507329, 536870913, 196610, 1507330, 536870913, 196610, 1507331, 536870913, 196610, 1507332, 536870913, 196610, 1507333, 536870913, 196610, 1507334, 536870913, 196610, 1507335, 536870913, 196610, 1507336, 536870913, 196610, 1507337, 1, 196610, 1507338, 1, 196610, 1507339, 536870913, 196610, 1507340, 536870913, 196610, 1507341, 536870913, 131074, 1507342, 536870913, 131074, 1507343, 1, 131074, 1507344, 1, 131074, 1507345, 1, 131074, 1507346, 1, 131074, 1507347, 536870913, 131074, 1507348, 536870913, 131074, 1507349, 536870913, 131074, 1507350, 536870913, 131074, 1507351, 536870913, 131074, 1507352, 536870913, 131074, 1507353, 536870913, 131074, 1507354, 536870913, 131074, 1507355, 536870913, 131074, 1507356, 1, 131074, 1507357, 1, 131074, 1507358, 1, 131074, 1507359, 1, 131074, 1507360, 1, 131074, 1507361, 1, 131074, 1507362, 1, 131074, 1507363, 1, 131074, 1507364, 1, 131074, 1507365, 1, 131074, 1507366, 1, 131074, 1507367, 1, 131074, 1507368, 1, 131074, 1507369, 1, 131074, 1507370, 1, 131074, 1507371, 1, 131074, 1507372, 1, 131074, 1507373, 1, 131074, 1507374, 1, 131074, 1507375, 1, 131074, 1507376, 1, 131074, 1507377, 1, 131074, 1507378, 1, 131074, 1507379, 1, 131074, 1507380, 1, 131074, 1507381, 1, 131074, 1507382, 1, 131074, 1507383, 1, 131074, 1507384, 1, 131074, 1507385, 1, 131074, 1507386, 1, 131074, 1507387, 1, 131074, 1507388, 1, 131074, 1507389, 1, 131074, 1507390, 1, 131074, 1507391, 1, 131074, 1507392, 1, 131074, 1507393, 1, 131074, 1507394, 1, 131074, 1507395, 1, 131074, 1507396, 1, 131074, 1507397, 1, 131074, 1507398, 1, 131074, 1507399, 1, 131074, 1507400, 1, 131074, 1507401, 1, 131074, 1507402, 1, 131074, 1507403, 1, 131074, 1507404, 1, 131074, 1507405, 1, 131074, 1507406, 1, 131074, 1507407, 1, 131074, 1507408, 1, 131074, 1507409, 1, 131074, 1507410, 1, 131074, 1507411, 1, 131074, 1507412, 1, 131074, 1507413, 1, 131074, 1507414, 1, 131074, 1507415, 1, 131074, 1507416, 1, 131074, 1507417, 1, 131074, 1507418, 1, 131074, 1507419, 1, 131074, 1507420, 1, 131074, 1507421, 1, 131074, 1507422, 1, 131074, 1507423, 1, 131075 ) + +[node name="OccludeMsx" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 16 ) +z_index = 10 +z_as_relative = false +tile_set = ExtResource( 3 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 1441801, 0, 0, 1441802, 0, 0, 1507337, 1, 196610, 1507338, 1, 196610 ) + +[node name="Player" parent="." instance=ExtResource( 2 )] +position = Vector2( 40, 176 ) + +[node name="Ladder" type="TileMap" parent="."] +tile_set = ExtResource( 14 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 393226, 536870912, 196609, 458762, 536870912, 196609, 524298, 536870912, 196609, 589834, 536870912, 196609, 589853, 536870912, 196609, 655376, 0, 196609, 655389, 536870912, 196609, 720912, 0, 196609, 720925, 536870912, 196609, 786448, 0, 196609, 786461, 536870912, 196609, 851984, 0, 196609, 1048648, 0, 196609, 1114155, 0, 196609, 1114184, 0, 196609, 1179651, 536870912, 196609, 1179675, 0, 196609, 1179691, 0, 196609, 1179720, 0, 196609, 1245187, 536870912, 196609 ) + +[node name="Exit" parent="." instance=ExtResource( 5 )] +position = Vector2( 8, 164 ) +cost = 25 + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Cop" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 88, 112 ) +left_boundary = 3.0 +right_boundary = 6.0 +turn_time = 1.0 + +[node name="Cop2" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 136, 160 ) +scale = Vector2( -1, 1 ) +turn_time = inf + +[node name="OfficerRabbitPCoaster" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 200, 112 ) +turn_time = inf + +[node name="Cop9" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 400, 160 ) +left_boundary = 5.0 + +[node name="Cop10" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 680, 160 ) +scale = Vector2( -1, 1 ) +walk_speed = 0.0 + +[node name="Cop6" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 184, 56 ) +left_boundary = 4.0 +right_boundary = 4.0 + +[node name="Cop7" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 352, 19 ) +left_boundary = 10.0 + +[node name="LaserWall" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 336, 40 ) +left_up_boundary = 5.0 +right_down_boundary = 6.0 +speed = 25 +off_time = 2.0 +on_time = 2.0 + +[node name="LaserWall5" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 456, 88 ) +scale = Vector2( 1, -1 ) +left_up_boundary = 4.0 +right_down_boundary = 2.0 +speed = 25 +off_time = 0.0 +on_time = inf + +[node name="LaserWall3" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 336, 72 ) + +[node name="LaserWall10" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 312, 72 ) + +[node name="LaserWall7" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 192, 128 ) +speed = 0 +off_time = 0.5 + +[node name="LaserWall8" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 408, 40 ) +speed = 0 +off_time = 0.7 +on_time = 0.7 + +[node name="LaserWall2" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 760, 88 ) +rotation = 1.5708 +left_up_boundary = 4.0 +move_direction = 1 +on_time = inf + +[node name="LaserWall9" parent="Enemies" groups=["yellow_star_laser"] instance=ExtResource( 15 )] +position = Vector2( 376, 80 ) +rotation = 1.5708 +move_direction = 1 +on_time = inf + +[node name="LaserWall6" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 672, 96 ) +rotation = 1.5708 +right_down_boundary = 4.0 +move_direction = 1 +on_time = inf + +[node name="LaserWall4" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 520, 24 ) +rotation = -1.5708 +move_direction = 1 +off_time = 4.0 + +[node name="LaserWall11" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 512, 96 ) +rotation = -1.5708 +move_direction = 1 +off_time = 4.0 +on_time = 1.5 +delay = 1.0 + +[node name="LaserWall12" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 560, 104 ) +rotation = 1.5708 +move_direction = 1 +off_time = 4.0 +on_time = 1.5 + +[node name="Environment" type="Node2D" parent="."] + +[node name="Ladder" parent="Environment" instance=ExtResource( 7 )] +position = Vector2( 24, 144 ) +scale = Vector2( 1, 2 ) + +[node name="Ladder2" parent="Environment" instance=ExtResource( 7 )] +position = Vector2( 128, 80 ) +scale = Vector2( 1, 4 ) + +[node name="Ladder6" parent="Environment" instance=ExtResource( 7 )] +position = Vector2( 576, 128 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder4" parent="Environment" instance=ExtResource( 7 )] +position = Vector2( 232, 72 ) +scale = Vector2( 1, 4 ) + +[node name="Ladder5" parent="Environment" instance=ExtResource( 7 )] +position = Vector2( 216, 144 ) +can_climb_right = false + +[node name="Ladder7" parent="Environment" instance=ExtResource( 7 )] +position = Vector2( 344, 136 ) +scale = Vector2( 1, 2 ) + +[node name="Ladder3" parent="Environment" instance=ExtResource( 7 )] +position = Vector2( 80, 48 ) +scale = Vector2( 1, 4 ) + +[node name="TurningPlatform" parent="Environment" instance=ExtResource( 17 )] +position = Vector2( 696, 144 ) +time = 20.0 +texture = ExtResource( 34 ) + +[node name="TurningPlatform3" parent="Environment" instance=ExtResource( 17 )] +position = Vector2( 40, 72 ) +time = 20.0 +texture = ExtResource( 34 ) + +[node name="TurningPlatform6" parent="Environment" instance=ExtResource( 17 )] +position = Vector2( 520, 112 ) +time = 40.0 +texture = ExtResource( 34 ) + +[node name="TurningPlatform8" parent="Environment" instance=ExtResource( 17 )] +position = Vector2( 488, 32 ) +time = 50.0 +texture = ExtResource( 34 ) + +[node name="TurningPlatform4" parent="Environment" instance=ExtResource( 17 )] +position = Vector2( 16, 56 ) +time = 20.0 +delay = 1.0 +texture = ExtResource( 34 ) + +[node name="JailBars" parent="Environment" groups=["cell"] instance=ExtResource( 21 )] +position = Vector2( 712, 152 ) +scale = Vector2( 1, 2 ) + +[node name="Button" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 736, 128 ) +target_group = "cell" + +[node name="Button2" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 312, 19 ) +target_group = "yellow_star_laser" + +[node name="MsX" parent="Environment" groups=["cell"] instance=ExtResource( 22 )] +position = Vector2( 744, 158 ) +hatch = NodePath("../Hatch/HatchAnim") + +[node name="Barrier" parent="Environment" instance=ExtResource( 23 )] +position = Vector2( 424, 112 ) +scale = Vector2( 1, 24 ) +cost = 40 + +[node name="Hatch" type="Sprite" parent="Environment"] +position = Vector2( 82, 171 ) +z_index = -2 +texture = ExtResource( 33 ) +hframes = 3 + +[node name="HatchAnim" type="AnimationPlayer" parent="Environment/Hatch"] +anims/open = SubResource( 2 ) + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Star" parent="Collectibles" instance=ExtResource( 11 )] +position = Vector2( 192, 136 ) + +[node name="Star2" parent="Collectibles" instance=ExtResource( 11 )] +position = Vector2( 392, 96 ) +color = 2 + +[node name="Arrow" parent="Collectibles" instance=ExtResource( 13 )] +position = Vector2( 16, 40 ) + +[node name="Arrow2" parent="Collectibles" instance=ExtResource( 13 )] +position = Vector2( 176, 56 ) + +[node name="Arrow4" parent="Collectibles" instance=ExtResource( 13 )] +position = Vector2( 160, 96 ) + +[node name="Arrow5" parent="Collectibles" instance=ExtResource( 13 )] +position = Vector2( 368, 16 ) + +[node name="Arrow6" parent="Collectibles" instance=ExtResource( 13 )] +position = Vector2( 448, 128 ) + +[node name="Arrow8" parent="Collectibles" instance=ExtResource( 13 )] +position = Vector2( 456, 128 ) + +[node name="Arrow7" parent="Collectibles" instance=ExtResource( 13 )] +position = Vector2( 440, 128 ) + +[node name="Shard" parent="Collectibles" instance=ExtResource( 19 )] +position = Vector2( 536, 72 ) +number = 2 + +[node name="Shard2" parent="Collectibles" instance=ExtResource( 19 )] +position = Vector2( 656, 80 ) +number = 3 + +[node name="Gold" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 40, 128 ) + +[node name="Gold2" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 56, 112 ) + +[node name="Gold3" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 104, 112 ) + +[node name="Gold5" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 360, 128 ) + +[node name="Gold38" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 616, 160 ) + +[node name="Gold39" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 400, 128 ) + +[node name="Gold6" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 496, 48 ) + +[node name="Gold9" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 104, 32 ) + +[node name="Gold10" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 120, 32 ) + +[node name="Gold12" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 152, 16 ) + +[node name="Gold13" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 504, 128 ) + +[node name="Gold14" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 184, 16 ) + +[node name="Gold15" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 216, 56 ) + +[node name="Gold16" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 288, 56 ) + +[node name="Gold20" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 224, 128 ) + +[node name="Gold21" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 496, 96 ) + +[node name="Gold22" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 272, 128 ) + +[node name="Gold23" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 568, 160 ) + +[node name="Gold24" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 312, 128 ) + +[node name="Gold25" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 432, 64 ) + +[node name="Gold26" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 472, 16 ) + +[node name="Gold27" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 464, 64 ) + +[node name="Gold28" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 520, 160 ) + +[node name="Gold31" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 560, 64 ) + +[node name="Gold40" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 592, 112 ) + +[node name="Gold41" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 608, 104 ) + +[node name="Gold42" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 632, 88 ) + +[node name="Gold43" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 152, 160 ) + +[node name="Gold44" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 200, 160 ) + +[node name="Gold45" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 248, 160 ) + +[node name="Gold46" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 296, 160 ) + +[node name="Gold47" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 392, 160 ) + +[node name="Gold48" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 472, 160 ) + +[node name="Gold49" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 344, 160 ) + +[node name="Gold50" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 440, 160 ) + +[node name="Gold32" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 576, 72 ) + +[node name="Gold33" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 640, 16 ) + +[node name="Gold34" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 632, 48 ) + +[node name="Gold35" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 672, 48 ) + +[node name="Gold36" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 600, 72 ) + +[node name="Gold37" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 592, 16 ) + +[node name="Gold29" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 528, 48 ) + +[node name="Gold30" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 440, 16 ) + +[node name="Gold17" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 320, 56 ) + +[node name="Gold18" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 368, 56 ) + +[node name="Gold19" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 400, 56 ) + +[node name="Gold11" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 392, 16 ) + +[node name="Gold7" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 96, 72 ) + +[node name="Gold8" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 480, 112 ) + +[node name="Gold4" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 664, 160 ) + +[node name="Star3" parent="Collectibles" instance=ExtResource( 11 )] +position = Vector2( 360, 88 ) +color = 1 + +[node name="Star4" parent="Collectibles" instance=ExtResource( 11 )] +position = Vector2( 560, 16 ) +color = 3 + +[node name="Star5" parent="Collectibles" instance=ExtResource( 11 )] +position = Vector2( 680, 88 ) +color = 4 + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( -4.00429, 96 ) +shape = SubResource( 1 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 772, 96 ) +shape = SubResource( 1 ) + +[node name="ColorRect" type="ColorRect" parent="."] +margin_left = 256.0 +margin_right = 512.0 +margin_bottom = 192.0 +color = Color( 0.756863, 0, 1, 0.129412 ) +script = ExtResource( 8 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect2" type="ColorRect" parent="."] +margin_left = 512.0 +margin_right = 768.0 +margin_bottom = 192.0 +color = Color( 0.219608, 1, 0, 0.129412 ) +script = ExtResource( 8 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="HUD" parent="." instance=ExtResource( 12 )] +song_name = "♫Spine_V2" + +[node name="Label" type="Label" parent="."] +material = ExtResource( 31 ) +margin_left = 636.0 +margin_top = 198.0 +margin_right = 797.0 +margin_bottom = 221.0 +theme = ExtResource( 32 ) +text = "Help me get +outta here!" + +[node name="SpeccyDetection" type="VisibilityNotifier2D" parent="."] +position = Vector2( 384, 136 ) +rect = Rect2( -10, -20, 20, 20 ) + +[node name="Speccy" parent="SpeccyDetection" instance=ExtResource( 35 )] +flip = true +message = "kill_em_all" + +[connection signal="screen_entered" from="SpeccyDetection" to="SpeccyDetection/Speccy" method="appear"] +[connection signal="screen_exited" from="SpeccyDetection" to="SpeccyDetection" method="queue_free"] diff --git a/maps/test_room.tscn b/maps/test_room.tscn index b8cc8ae..48d9571 100644 --- a/maps/test_room.tscn +++ b/maps/test_room.tscn @@ -1,30 +1,63 @@ -[gd_scene load_steps=15 format=2] +[gd_scene load_steps=33 format=2] -[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=1] -[ext_resource path="res://tilesets/t_cave.tres" type="TileSet" id=2] -[ext_resource path="res://tilesets/t_canopy.tres" type="TileSet" id=3] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=1] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=2] +[ext_resource path="res://tilesets/t_mountain.tres" type="TileSet" id=3] [ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=4] -[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=5] -[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=6] +[ext_resource path="res://objects/enemy/roboturret.tscn" type="PackedScene" id=5] +[ext_resource path="res://objects/environment/moving_platform/moving_platform.tscn" type="PackedScene" id=6] [ext_resource path="res://graphics/backgrounds/canopy.png" type="Texture" id=7] -[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=8] -[ext_resource path="res://objects/environment/rock/rock.tscn" type="PackedScene" id=9] +[ext_resource path="res://objects/environment/collapse_block/collapse_block.tscn" type="PackedScene" id=8] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=9] [ext_resource path="res://objects/enemy/slime.tscn" type="PackedScene" id=10] [ext_resource path="res://maps/map.gd" type="Script" id=11] [ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=12] [ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=13] -[ext_resource path="res://objects/environment/falling_block/falling_block.tscn" type="PackedScene" id=14] +[ext_resource path="res://objects/enemy/super_slime.tscn" type="PackedScene" id=14] +[ext_resource path="res://audio/music/BBBBBBBB.ogg" type="AudioStream" id=15] +[ext_resource path="res://objects/respawn_point.tscn" type="PackedScene" id=16] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=17] +[ext_resource path="res://objects/environment/stalactite/stalactite.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/environment/switches/button.tscn" type="PackedScene" id=19] +[ext_resource path="res://objects/enemy/tin.tscn" type="PackedScene" id=20] +[ext_resource path="res://graphics/enemy/sawblade.png" type="Texture" id=21] +[ext_resource path="res://objects/enemy/rolling_fiend.tscn" type="PackedScene" id=22] +[ext_resource path="res://objects/enemy/steam.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/environment/falling_block/falling_block_cave.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/enemy/cop.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/environment/turret/turret_bullet.tscn" type="PackedScene" id=26] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=27] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=28] -[node name="Map" type="Node2D" groups=["map"]] +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 17 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 21 ) +region = Rect2( 0, 0, 12, 12 ) + +[sub_resource type="AtlasTexture" id=7] +atlas = ExtResource( 21 ) +region = Rect2( 12, 0, 12, 12 ) + +[sub_resource type="SpriteFrames" id=5] +animations = [ { +"frames": [ SubResource( 6 ), SubResource( 7 ) ], +"loop": true, +"name": "default", +"speed": 20.0 +} ] + +[node name="Map3" type="Node2D" groups=["map"]] +pause_mode = 1 script = ExtResource( 11 ) -save_location = 420 +music = ExtResource( 15 ) -[node name="Camera2D" parent="." instance=ExtResource( 6 )] -current = false - -[node name="Sprite" type="Sprite" parent="Camera2D"] +[node name="Sprite" type="Sprite" parent="."] position = Vector2( 128, 96 ) -z_index = -2 +z_index = -50 texture = ExtResource( 7 ) __meta__ = { "_edit_lock_": true @@ -32,15 +65,14 @@ __meta__ = { [node name="CanvasLayer" parent="." instance=ExtResource( 4 )] -[node name="Ground" type="TileMap" parent="."] +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 9 ) tile_set = ExtResource( 3 ) cell_size = Vector2( 8, 8 ) collision_layer = 9 format = 1 -tile_data = PoolIntArray( 917526, 0, 65537, 917527, 0, 65537, 983052, 0, 65537, 983053, 0, 65537, 983062, 0, 65537, 1048591, 0, 65537, 1048592, 0, 65537, 1048593, 0, 65537, 1048594, 0, 65537, 1048597, 0, 65537, 1048598, 0, 65537, 1114127, 0, 65537, 1179663, 0, 65537, 1245199, 0, 65537, 1310732, 0, 65537, 1310733, 0, 65537, 1310734, 0, 65537, 1310735, 0, 65537, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1507328, 0, 65537, 1507329, 0, 65537, 1507330, 0, 65537, 1507331, 0, 65537, 1507332, 0, 65537, 1507333, 0, 65537, 1507334, 0, 65537, 1507335, 0, 65537, 1507336, 0, 65537, 1507337, 0, 65537, 1507338, 0, 65537, 1507339, 0, 65537, 1507340, 0, 65537, 1507341, 0, 65537, 1507342, 0, 65537, 1507343, 0, 65537, 1507344, 0, 65537, 1507345, 0, 65537, 1507346, 0, 65537, 1507347, 0, 65537, 1507348, 0, 65537, 1507349, 0, 65537, 1507350, 0, 65537, 1507351, 0, 65537, 1507352, 0, 65537, 1507353, 0, 65537, 1507354, 0, 65537, 1507355, 0, 65537, 1507356, 0, 65537, 1507357, 0, 65537, 1507358, 0, 65537, 1507359, 0, 65537 ) - -[node name="Rock" parent="." instance=ExtResource( 9 )] -position = Vector2( 120, 120 ) +tile_data = PoolIntArray( 196630, 1, 0, 262166, 1, 0, 327702, 1, 0, 393238, 1, 0, 458774, 1, 0, 524310, 1, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 589842, 0, 0, 589843, 0, 0, 589844, 0, 0, 589845, 0, 0, 589846, 1, 0, 655382, 1, 0, 655388, 0, 196609, 983062, 0, 0, 983063, 0, 0, 983064, 0, 0, 983065, 0, 0, 983066, 0, 0, 983067, 0, 0, 983068, 0, 0, 983069, 0, 0, 1048579, 0, 65537, 1048580, 0, 65537, 1048581, 0, 65537, 1048582, 0, 65537, 1048583, 0, 65537, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1507328, 0, 1, 1507329, 0, 1, 1507330, 0, 1, 1507331, 0, 1, 1507332, 0, 1, 1507333, 0, 1, 1507334, 0, 1, 1507337, 0, 1, 1507338, 0, 1, 1507339, 0, 1, 1507340, 0, 1, 1507341, 0, 1, 1507342, 0, 1, 1507343, 0, 1, 1507344, 0, 1, 1507345, 0, 1, 1507346, 0, 1, 1507347, 0, 1, 1507348, 0, 1, 1507349, 0, 1, 1507350, 0, 1, 1507351, 0, 1, 1507354, 0, 1, 1507355, 0, 1, 1507356, 0, 1, 1507357, 0, 1, 1507358, 0, 1, 1507359, 0, 1 ) [node name="Slime" parent="." instance=ExtResource( 10 )] position = Vector2( 264, 168 ) @@ -48,38 +80,16 @@ position = Vector2( 264, 168 ) [node name="Slime2" parent="." instance=ExtResource( 10 )] position = Vector2( 264, 160 ) -[node name="Slime2" parent="." instance=ExtResource( 10 )] -position = Vector2( 216, 168 ) - -[node name="Slime3" parent="." instance=ExtResource( 10 )] -position = Vector2( 216, 168 ) - -[node name="Slime4" parent="." instance=ExtResource( 10 )] -position = Vector2( 216, 168 ) - [node name="Arrow" parent="." instance=ExtResource( 13 )] -position = Vector2( 184, 163 ) - -[node name="Player" parent="." instance=ExtResource( 1 )] -position = Vector2( 104, 96 ) - -[node name="Ladder3" parent="." instance=ExtResource( 8 )] -position = Vector2( 40, 136 ) -scale = Vector2( 1, 5 ) +position = Vector2( 104, 120 ) [node name="Ladder" type="TileMap" parent="."] -tile_set = ExtResource( 2 ) +tile_set = ExtResource( 28 ) cell_size = Vector2( 8, 8 ) collision_layer = 9 format = 1 tile_data = PoolIntArray( 1114117, 0, 196610, 1179653, 0, 196608, 1245189, 0, 196608, 1310725, 0, 196608, 1376261, 0, 196609 ) -[node name="Death" type="TileMap" parent="."] -visible = false -tile_set = ExtResource( 5 ) -cell_size = Vector2( 8, 8 ) -format = 1 - [node name="Turniwood5" parent="." instance=ExtResource( 12 )] position = Vector2( 80, 120 ) @@ -99,5 +109,101 @@ delay = 1.5 position = Vector2( 48, 88 ) delay = 2.0 -[node name="FallingBlock" parent="." instance=ExtResource( 14 )] -position = Vector2( 192, 112 ) +[node name="RespawnPoint" parent="." instance=ExtResource( 16 )] +position = Vector2( 88, 160 ) + +[node name="Tin2" parent="." instance=ExtResource( 20 )] +position = Vector2( 32, 72 ) +up_boundary = 3.0 +down_boundary = 3.0 + +[node name="RollingFiend" parent="." instance=ExtResource( 22 )] +position = Vector2( 48, 120 ) + +[node name="AnimatedSprite" parent="RollingFiend" index="0"] +visible = false + +[node name="SawTest2" type="AnimatedSprite" parent="RollingFiend"] +material = SubResource( 4 ) +position = Vector2( 4, 4 ) +z_index = -3 +frames = SubResource( 5 ) +playing = true + +[node name="Steam" parent="." instance=ExtResource( 23 )] +position = Vector2( 27, 128 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="Button" parent="." instance=ExtResource( 19 )] +position = Vector2( 16, 168 ) +target_group = "speccy" + +[node name="Cop" parent="." instance=ExtResource( 25 )] +position = Vector2( 184, 112 ) +turn_time = inf + +[node name="TurretBullet" parent="." instance=ExtResource( 26 )] +position = Vector2( 152, 72 ) + +[node name="Player2" parent="." instance=ExtResource( 27 )] +position = Vector2( 128, 72 ) + +[node name="MovingPlatform" parent="." instance=ExtResource( 6 )] +position = Vector2( 96, 144 ) +scale = Vector2( 2, 1 ) +left_up_boundary = 4.0 +right_down_boundary = 4.0 +move_direction = 1 + +[node name="CollapseBlock" parent="." instance=ExtResource( 8 )] +position = Vector2( 136, 128 ) + +[node name="CollapseBlock2" parent="." instance=ExtResource( 8 )] +position = Vector2( 144, 128 ) + +[node name="CollapseBlock3" parent="." instance=ExtResource( 8 )] +position = Vector2( 152, 128 ) + +[node name="MovingPlatform2" parent="." instance=ExtResource( 6 )] +position = Vector2( 208, 64 ) +scale = Vector2( 2, 1 ) +left_up_boundary = 6.0 +right_down_boundary = 6.0 +move_direction = 1 + +[node name="Roboturret" parent="MovingPlatform2" instance=ExtResource( 5 )] +position = Vector2( -1.5, 12 ) +scale = Vector2( 0.5, -1 ) + +[node name="Death" type="TileMap" parent="." groups=["death"]] +tile_set = ExtResource( 1 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1441799, 10, 0, 1441800, 10, 0, 1441816, 0, 0, 1441817, 0, 0, 1507335, 11, 0, 1507336, 11, 0, 1507352, 3, 0, 1507353, 3, 0 ) + +[node name="Death2" type="TileMap" parent="." groups=["death"]] +tile_set = ExtResource( 1 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1179655, 12, 0, 1179656, 12, 0, 1179672, 12, 0, 1179673, 12, 0 ) + +[node name="SuperSlime" parent="." instance=ExtResource( 14 )] +position = Vector2( 119, 168 ) +left_boundary = 3.0 +right_boundary = 3.0 +bottom_jumps = [ -2.0 ] +top_jumps = [ 3.0 ] + +[node name="Stalactite" parent="." instance=ExtResource( 18 )] +position = Vector2( 144, 24 ) + +[node name="FallingBlock" parent="." instance=ExtResource( 24 )] +position = Vector2( 124, 96 ) + +[node name="speccy" parent="." groups=["speccy"] instance=ExtResource( 2 )] +position = Vector2( 82, 72 ) + +[editable path="RollingFiend"] diff --git a/menus/Button.gd b/menus/Button.gd new file mode 100644 index 0000000..fd75304 --- /dev/null +++ b/menus/Button.gd @@ -0,0 +1,7 @@ +extends Button + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + diff --git a/menus/DeleteButton.gd b/menus/DeleteButton.gd new file mode 100644 index 0000000..4af4968 --- /dev/null +++ b/menus/DeleteButton.gd @@ -0,0 +1,14 @@ +extends TextureButton + +onready var sprite = $AnimatedSprite + +func _process(delta): + if has_focus(): + sprite.playing = true + else: + sprite.playing = false + sprite.frame = 0 + +func _gui_input(event): + if event.is_action_pressed("ui_accept"): + get_parent().set_kill_mode(!get_parent().kill_mode) diff --git a/menus/back_button.gd b/menus/back_button.gd new file mode 100644 index 0000000..8b4fb33 --- /dev/null +++ b/menus/back_button.gd @@ -0,0 +1,23 @@ +extends TextureButton + +export var next_scene: PackedScene +onready var sprite = $AnimatedSprite + +func _process(delta): + if has_focus(): + sprite.playing = true + else: + sprite.playing = false + sprite.frame = 0 + +func _gui_input(event): + if event.is_action_pressed("ui_accept"): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = next_scene.instance() + +func _input(event): + if event.is_action_pressed("ui_cancel"): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = next_scene.instance() diff --git a/menus/back_button.tscn b/menus/back_button.tscn new file mode 100644 index 0000000..533d19f --- /dev/null +++ b/menus/back_button.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://graphics/hud/back.png" type="Texture" id=1] +[ext_resource path="res://graphics/hud/back_dim.png" type="Texture" id=2] +[ext_resource path="res://menus/back_button.gd" type="Script" id=3] + +[sub_resource type="Theme" id=1] + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 26, 33 ) + +[sub_resource type="SpriteFrames" id=3] +animations = [ { +"frames": [ SubResource( 2 ), ExtResource( 2 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[node name="Back" type="TextureButton"] +margin_right = 52.0 +margin_bottom = 33.0 +theme = SubResource( 1 ) +texture_normal = ExtResource( 1 ) +script = ExtResource( 3 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +position = Vector2( 13, 17 ) +frames = SubResource( 3 ) diff --git a/menus/bug_world.gd b/menus/bug_world.gd new file mode 100644 index 0000000..27f2102 --- /dev/null +++ b/menus/bug_world.gd @@ -0,0 +1,8 @@ +extends Node2D + + +func _ready() -> void: + Fade.fade_in(Options.transition_speed_secs) + +func _input(event): + Game.change_map(load("res://menus/level_select_scholar.tscn")) diff --git a/menus/bug_world.tscn b/menus/bug_world.tscn new file mode 100644 index 0000000..1cc1d6d --- /dev/null +++ b/menus/bug_world.tscn @@ -0,0 +1,227 @@ +[gd_scene load_steps=36 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/hud/3d_text.tscn" type="PackedScene" id=2] +[ext_resource path="res://ui/PressStart2P-Regular.ttf" type="DynamicFontData" id=3] +[ext_resource path="res://graphics/sockbug/walk_strip6.png" type="Texture" id=4] +[ext_resource path="res://menus/sockbug.gd" type="Script" id=5] +[ext_resource path="res://objects/player/player_death_particles.tscn" type="PackedScene" id=6] +[ext_resource path="res://graphics/sockbug/fullturn_strip10.png" type="Texture" id=7] +[ext_resource path="res://graphics/player/wriggle.png" type="Texture" id=8] +[ext_resource path="res://audio/music/BBBBBBBB.ogg" type="AudioStream" id=9] +[ext_resource path="res://objects/enemy/antlion.tscn" type="PackedScene" id=10] +[ext_resource path="res://menus/bug_world.gd" type="Script" id=11] +[ext_resource path="res://ui/theme.tres" type="Theme" id=12] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=13] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 1, 1, 1, 1 ) +shader_param/color_2 = Color( 0.466667, 0.466667, 0.466667, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 32, 32 ) +shader_param/cycle_speed = Vector2( 0, 0 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) + +[sub_resource type="AtlasTexture" id=18] +atlas = ExtResource( 4 ) +region = Rect2( 0, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=19] +atlas = ExtResource( 4 ) +region = Rect2( 32, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=20] +atlas = ExtResource( 4 ) +region = Rect2( 64, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=21] +atlas = ExtResource( 4 ) +region = Rect2( 96, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=22] +atlas = ExtResource( 4 ) +region = Rect2( 128, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=23] +atlas = ExtResource( 4 ) +region = Rect2( 160, 0, 32, 32 ) + +[sub_resource type="SpriteFrames" id=24] +animations = [ { +"frames": [ SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 23 ) ], +"loop": true, +"name": "default", +"speed": 15.0 +} ] + +[sub_resource type="AtlasTexture" id=25] +atlas = ExtResource( 7 ) +region = Rect2( 0, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=26] +atlas = ExtResource( 7 ) +region = Rect2( 31, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=27] +atlas = ExtResource( 7 ) +region = Rect2( 62, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=28] +atlas = ExtResource( 7 ) +region = Rect2( 93, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=29] +atlas = ExtResource( 7 ) +region = Rect2( 124, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=30] +atlas = ExtResource( 7 ) +region = Rect2( 155, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=31] +atlas = ExtResource( 7 ) +region = Rect2( 186, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=32] +atlas = ExtResource( 7 ) +region = Rect2( 217, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=33] +atlas = ExtResource( 7 ) +region = Rect2( 248, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=34] +atlas = ExtResource( 7 ) +region = Rect2( 279, 0, 31, 29 ) + +[sub_resource type="SpriteFrames" id=35] +animations = [ { +"frames": [ SubResource( 25 ), SubResource( 26 ), SubResource( 27 ), SubResource( 28 ), SubResource( 29 ), SubResource( 30 ), SubResource( 31 ), SubResource( 32 ), SubResource( 33 ), SubResource( 34 ) ], +"loop": true, +"name": "default", +"speed": 15.0 +} ] + +[sub_resource type="SpatialMaterial" id=16] +albedo_color = Color( 0.105882, 0.34902, 0.509804, 1 ) +metallic = 0.46 + +[sub_resource type="DynamicFont" id=8] +font_data = ExtResource( 3 ) + +[sub_resource type="TextMesh" id=17] +resource_local_to_scene = true +material = SubResource( 16 ) +text = "TEXT" +font = SubResource( 8 ) +pixel_size = 0.05 +depth = 0.1 + +[node name="BugWorld" type="Node2D"] +script = ExtResource( 11 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="Wriggle" type="Sprite" parent="."] +position = Vector2( 135, 143 ) +scale = Vector2( 3, 3 ) +texture = ExtResource( 8 ) + +[node name="Sockbug" type="AnimatedSprite" parent="."] +position = Vector2( 89, 149 ) +rotation = 0.785398 +frames = SubResource( 24 ) +frame = 3 +playing = true +script = ExtResource( 5 ) +speed = Vector2( 100, 100 ) + +[node name="Sockbug2" type="AnimatedSprite" parent="."] +position = Vector2( 78, 67 ) +rotation = 0.785398 +scale = Vector2( -1, 1 ) +frames = SubResource( 24 ) +frame = 3 +playing = true +script = ExtResource( 5 ) +speed = Vector2( -100, -100 ) + +[node name="Sockbug3" type="AnimatedSprite" parent="."] +position = Vector2( 181, 130 ) +rotation = -0.785398 +frames = SubResource( 24 ) +frame = 2 +playing = true +script = ExtResource( 5 ) +speed = Vector2( 100, -100 ) + +[node name="Sockbug4" type="AnimatedSprite" parent="."] +position = Vector2( 175, 22 ) +rotation = 0.785398 +scale = Vector2( -1, 1 ) +frames = SubResource( 24 ) +frame = 2 +playing = true +script = ExtResource( 5 ) +speed = Vector2( -100, -100 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +position = Vector2( 192, 92 ) +frames = SubResource( 35 ) +frame = 1 +playing = true + +[node name="AnimatedSprite2" type="AnimatedSprite" parent="."] +position = Vector2( 37, 107 ) +frames = SubResource( 35 ) +frame = 1 +playing = true + +[node name="AnimatedSprite3" type="AnimatedSprite" parent="."] +position = Vector2( 222, 166 ) +frames = SubResource( 35 ) +playing = true + +[node name="DeathSplatter" parent="." instance=ExtResource( 6 )] +position = Vector2( 126, 63 ) +emitting = true +lifetime = 2.0 +one_shot = false +speed_scale = 3.42 +explosiveness = 1.0 +texture = ExtResource( 8 ) +scale_amount = 1.0 + +[node name="3DText" parent="." instance=ExtResource( 2 )] +margin_top = -26.0 +margin_right = 256.0 +margin_bottom = 166.0 +text_material = SubResource( 16 ) +anim = "bug world" + +[node name="TextMesh" parent="3DText/Viewport" index="0"] +mesh = SubResource( 17 ) + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 9 ) +volume_db = -8.0 +autoplay = true + +[node name="Antlion" parent="." instance=ExtResource( 10 )] +position = Vector2( 38, 176 ) + +[node name="Label" type="Label" parent="."] +material = ExtResource( 13 ) +margin_left = 200.0 +margin_top = 56.0 +margin_right = 249.0 +margin_bottom = 70.0 +theme = ExtResource( 12 ) +text = "415LBUG" + +[editable path="3DText"] diff --git a/menus/cool.tscn b/menus/cool.tscn new file mode 100644 index 0000000..2ac0bd1 --- /dev/null +++ b/menus/cool.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.145098, 0.0823529, 0.0823529, 1 ) +shader_param/color_2 = Color( 1, 0, 0, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 8 ) +shader_param/cycle_speed = Vector2( -8, 0 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 4, 0, 0 ) + +[node name="Node2D" type="Node2D"] + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 diff --git a/menus/credits.gd b/menus/credits.gd new file mode 100644 index 0000000..0afae6e --- /dev/null +++ b/menus/credits.gd @@ -0,0 +1,16 @@ +extends Node + + +func _notification(what: int) -> void: + match what: + NOTIFICATION_WM_FOCUS_OUT: + $AnimationPlayer.playback_active = false + Audio.ac_music.stream_paused = true + NOTIFICATION_WM_FOCUS_IN: + $AnimationPlayer.playback_active = true + Audio.ac_music.stream_paused = false + +func _ready(): + Fade.fade_in(Options.transition_speed_secs) + Audio.play_music(load("res://audio/music/rev83-wondering-now-short.ogg")) + $Control/Playername.text = str(Save.current_file.name) diff --git a/menus/credits.tscn b/menus/credits.tscn new file mode 100644 index 0000000..19d725c --- /dev/null +++ b/menus/credits.tscn @@ -0,0 +1,1514 @@ +[gd_scene load_steps=142 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/hud/logo.png" type="Texture" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=5] +[ext_resource path="res://ui/theme.tres" type="Theme" id=6] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=7] +[ext_resource path="res://graphics/enemy/bat.png" type="Texture" id=8] +[ext_resource path="res://graphics/npc/msx_walk.png" type="Texture" id=9] +[ext_resource path="res://graphics/npc/fami_human_laugh.png" type="Texture" id=10] +[ext_resource path="res://graphics/npc/speccy_cool.png" type="Texture" id=11] +[ext_resource path="res://graphics/npc/intelli_idle.png" type="Texture" id=12] +[ext_resource path="res://ui/PressStart2P-Regular.ttf" type="DynamicFontData" id=13] +[ext_resource path="res://menus/credits.gd" type="Script" id=14] +[ext_resource path="res://graphics/enemy/snake.png" type="Texture" id=15] +[ext_resource path="res://scripts/sg_palette.gd" type="Script" id=16] +[ext_resource path="res://graphics/player/sg_stim.png" type="Texture" id=17] +[ext_resource path="res://graphics/enemy/pal_slime_purple.png" type="Texture" id=19] +[ext_resource path="res://graphics/enemy/slime.png" type="Texture" id=20] +[ext_resource path="res://graphics/enemy/spider.png" type="Texture" id=21] +[ext_resource path="res://graphics/enemy/skelarcher_shoot.png" type="Texture" id=22] +[ext_resource path="res://graphics/enemy/jumping_spider.png" type="Texture" id=23] +[ext_resource path="res://graphics/enemy/rolling_fiend.png" type="Texture" id=24] +[ext_resource path="res://graphics/enemy/boss/the_scrump.png" type="Texture" id=25] +[ext_resource path="res://shaders/wibble_border.gdshader" type="Shader" id=26] +[ext_resource path="res://graphics/enemy/snail.png" type="Texture" id=27] +[ext_resource path="res://graphics/enemy/tentacle.png" type="Texture" id=28] +[ext_resource path="res://graphics/enemy/eel_tail.png" type="Texture" id=29] +[ext_resource path="res://objects/enemy/fish.tscn" type="PackedScene" id=30] +[ext_resource path="res://graphics/enemy/eel_head.png" type="Texture" id=31] +[ext_resource path="res://graphics/enemy/eel_body.png" type="Texture" id=32] +[ext_resource path="res://graphics/enemy/squig.png" type="Texture" id=33] +[ext_resource path="res://graphics/enemy/turtle.png" type="Texture" id=34] +[ext_resource path="res://objects/enemy/artificial_soul.tscn" type="PackedScene" id=35] +[ext_resource path="res://graphics/enemy/hellarcher_shoot.png" type="Texture" id=36] +[ext_resource path="res://objects/enemy/boss/2600.tscn" type="PackedScene" id=37] +[ext_resource path="res://shaders/fade.gdshader" type="Shader" id=38] +[ext_resource path="res://objects/enemy/tin.tscn" type="PackedScene" id=39] +[ext_resource path="res://objects/enemy/roboturret.tscn" type="PackedScene" id=40] +[ext_resource path="res://graphics/enemy/cop/cop_walk.png" type="Texture" id=41] +[ext_resource path="res://graphics/npc/ivy.png" type="Texture" id=42] +[ext_resource path="res://graphics/npc/kiki_dog.png" type="Texture" id=43] +[ext_resource path="res://graphics/npc/penny.png" type="Texture" id=44] +[ext_resource path="res://graphics/npc/haze.png" type="Texture" id=45] +[ext_resource path="res://graphics/hud/speech_bubble.png" type="Texture" id=46] +[ext_resource path="res://objects/enemy/boss/famira.tscn" type="PackedScene" id=47] +[ext_resource path="res://graphics/hud/team_sg_logo.png" type="Texture" id=48] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/color_1 = Color( 1, 0.423529, 0.4, 1 ) +shader_param/color_2 = Color( 0.4, 0.52549, 1, 1 ) +shader_param/checker_size = Vector2( 32, 32 ) +shader_param/pan_speed = Vector2( 20, 21 ) +shader_param/cycle_speed = Vector2( 6, 3 ) +shader_param/cycle_alternation = Vector2( 6, 3 ) +shader_param/uv_transform = Transform2D( 1, -1, 1, 1, 0, 0 ) + +[sub_resource type="Animation" id=3] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Background:material:shader_param/color_1") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 0.423529, 0.4, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Background:material:shader_param/color_2") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.4, 0.52549, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Background:material:shader_param/uv_transform") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Transform2D( 1, -1, 1, 1, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("CanvasLayer/Background:material:shader_param/color_1") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 0.423529, 0.4, 1 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("CanvasLayer/Background:material:shader_param/color_2") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.4, 0.52549, 1, 1 ) ] +} + +[sub_resource type="Animation" id=91] +resource_name = "rainbow" +length = 5.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("CanvasLayer/Background:material:shader_param/color_1") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1, 2, 3, 4, 5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 0.423529, 0.4, 1 ), Color( 1, 0.894118, 0.4, 1 ), Color( 0.4, 1, 0.443137, 1 ), Color( 0.4, 0.52549, 1, 1 ), Color( 0.992157, 0.4, 1, 1 ), Color( 1, 0.423529, 0.4, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CanvasLayer/Background:material:shader_param/color_2") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1, 2, 3, 4, 5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.4, 1, 0.443137, 1 ), Color( 0.4, 0.52549, 1, 1 ), Color( 0.992157, 0.4, 1, 1 ), Color( 1, 0.423529, 0.4, 1 ), Color( 1, 0.894118, 0.4, 1 ), Color( 0.4, 1, 0.443137, 1 ) ] +} + +[sub_resource type="DynamicFont" id=92] +font_data = ExtResource( 13 ) + +[sub_resource type="Theme" id=93] +default_font = SubResource( 92 ) + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 5 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 7 ) + +[sub_resource type="AtlasTexture" id=10] +atlas = ExtResource( 17 ) +region = Rect2( 0, 0, 20, 20 ) + +[sub_resource type="AtlasTexture" id=11] +atlas = ExtResource( 17 ) +region = Rect2( 20, 0, 20, 20 ) + +[sub_resource type="SpriteFrames" id=12] +animations = [ { +"frames": [ SubResource( 10 ), SubResource( 11 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="AtlasTexture" id=94] +atlas = ExtResource( 11 ) +region = Rect2( 0, 0, 24, 24 ) + +[sub_resource type="AtlasTexture" id=95] +atlas = ExtResource( 11 ) +region = Rect2( 24, 0, 24, 24 ) + +[sub_resource type="AtlasTexture" id=96] +atlas = ExtResource( 11 ) +region = Rect2( 72, 0, 24, 24 ) + +[sub_resource type="SpriteFrames" id=97] +animations = [ { +"frames": [ SubResource( 94 ), SubResource( 95 ), SubResource( 96 ), SubResource( 96 ), SubResource( 96 ), SubResource( 95 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="ShaderMaterial" id=8] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=14] +atlas = ExtResource( 9 ) +region = Rect2( 0, 0, 20, 20 ) + +[sub_resource type="AtlasTexture" id=15] +atlas = ExtResource( 9 ) +region = Rect2( 20, 0, 20, 20 ) + +[sub_resource type="AtlasTexture" id=16] +atlas = ExtResource( 9 ) +region = Rect2( 40, 0, 20, 20 ) + +[sub_resource type="AtlasTexture" id=17] +atlas = ExtResource( 9 ) +region = Rect2( 60, 0, 20, 20 ) + +[sub_resource type="SpriteFrames" id=18] +animations = [ { +"frames": [ SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] + +[sub_resource type="AtlasTexture" id=98] +atlas = ExtResource( 10 ) +region = Rect2( 0, 0, 30, 30 ) + +[sub_resource type="AtlasTexture" id=99] +atlas = ExtResource( 10 ) +region = Rect2( 30, 0, 30, 30 ) + +[sub_resource type="SpriteFrames" id=100] +animations = [ { +"frames": [ SubResource( 98 ), SubResource( 99 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="ShaderMaterial" id=51] +shader = ExtResource( 26 ) +shader_param/speed = Vector2( 3, 1 ) +shader_param/ammount = Vector2( 3, 3 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true + +[sub_resource type="ShaderMaterial" id=13] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=19] +atlas = ExtResource( 15 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=20] +atlas = ExtResource( 15 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=21] +animations = [ { +"frames": [ SubResource( 19 ), SubResource( 20 ) ], +"loop": true, +"name": "default", +"speed": 7.0 +} ] + +[sub_resource type="AtlasTexture" id=22] +atlas = ExtResource( 8 ) +region = Rect2( 0, 0, 18, 10 ) + +[sub_resource type="AtlasTexture" id=23] +atlas = ExtResource( 8 ) +region = Rect2( 18, 0, 18, 10 ) + +[sub_resource type="SpriteFrames" id=24] +animations = [ { +"frames": [ SubResource( 22 ), SubResource( 23 ) ], +"loop": true, +"name": "default", +"speed": 8.0 +} ] + +[sub_resource type="AtlasTexture" id=25] +atlas = ExtResource( 25 ) +region = Rect2( 0, 0, 55, 64 ) + +[sub_resource type="AtlasTexture" id=26] +atlas = ExtResource( 25 ) +region = Rect2( 55, 0, 55, 64 ) + +[sub_resource type="SpriteFrames" id=27] +animations = [ { +"frames": [ SubResource( 25 ), SubResource( 26 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] + +[sub_resource type="AtlasTexture" id=28] +atlas = ExtResource( 24 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=29] +atlas = ExtResource( 24 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=30] +animations = [ { +"frames": [ SubResource( 28 ), SubResource( 29 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="AtlasTexture" id=31] +atlas = ExtResource( 23 ) +region = Rect2( 0, 0, 13, 12 ) + +[sub_resource type="AtlasTexture" id=32] +atlas = ExtResource( 23 ) +region = Rect2( 13, 0, 13, 12 ) + +[sub_resource type="SpriteFrames" id=33] +animations = [ { +"frames": [ SubResource( 31 ), SubResource( 32 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="ShaderMaterial" id=34] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=35] +atlas = ExtResource( 22 ) +region = Rect2( 0, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=36] +atlas = ExtResource( 22 ) +region = Rect2( 19, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=37] +atlas = ExtResource( 22 ) +region = Rect2( 38, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=38] +atlas = ExtResource( 22 ) +region = Rect2( 57, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=39] +atlas = ExtResource( 22 ) +region = Rect2( 76, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=40] +atlas = ExtResource( 22 ) +region = Rect2( 95, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=41] +atlas = ExtResource( 22 ) +region = Rect2( 114, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=42] +atlas = ExtResource( 22 ) +region = Rect2( 133, 0, 19, 20 ) + +[sub_resource type="SpriteFrames" id=43] +animations = [ { +"frames": [ SubResource( 35 ), SubResource( 36 ), SubResource( 37 ), SubResource( 38 ), SubResource( 39 ), SubResource( 40 ), SubResource( 41 ), SubResource( 42 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] + +[sub_resource type="AtlasTexture" id=44] +atlas = ExtResource( 21 ) +region = Rect2( 0, 0, 15, 14 ) + +[sub_resource type="AtlasTexture" id=45] +atlas = ExtResource( 21 ) +region = Rect2( 15, 0, 15, 14 ) + +[sub_resource type="SpriteFrames" id=46] +animations = [ { +"frames": [ SubResource( 44 ), SubResource( 45 ) ], +"loop": true, +"name": "default", +"speed": 7.0 +} ] + +[sub_resource type="ShaderMaterial" id=47] +shader = ExtResource( 5 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false +shader_param/palette = ExtResource( 19 ) + +[sub_resource type="AtlasTexture" id=48] +atlas = ExtResource( 20 ) +region = Rect2( 0, 0, 13, 13 ) + +[sub_resource type="AtlasTexture" id=49] +atlas = ExtResource( 20 ) +region = Rect2( 13, 0, 13, 13 ) + +[sub_resource type="SpriteFrames" id=50] +animations = [ { +"frames": [ SubResource( 48 ), SubResource( 49 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="AtlasTexture" id=52] +atlas = ExtResource( 27 ) +region = Rect2( 0, 0, 12, 11 ) + +[sub_resource type="AtlasTexture" id=53] +atlas = ExtResource( 27 ) +region = Rect2( 12, 0, 12, 11 ) + +[sub_resource type="SpriteFrames" id=54] +animations = [ { +"frames": [ SubResource( 52 ), SubResource( 53 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="AtlasTexture" id=55] +atlas = ExtResource( 28 ) +region = Rect2( 0, 0, 8, 24 ) + +[sub_resource type="AtlasTexture" id=56] +atlas = ExtResource( 28 ) +region = Rect2( 8, 0, 8, 24 ) + +[sub_resource type="SpriteFrames" id=57] +animations = [ { +"frames": [ SubResource( 55 ), SubResource( 56 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="AtlasTexture" id=63] +atlas = ExtResource( 33 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=64] +atlas = ExtResource( 33 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=65] +animations = [ { +"frames": [ SubResource( 63 ), SubResource( 64 ) ], +"loop": true, +"name": "default", +"speed": 7.0 +} ] + +[sub_resource type="ShaderMaterial" id=71] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=72] +atlas = ExtResource( 36 ) +region = Rect2( 0, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=73] +atlas = ExtResource( 36 ) +region = Rect2( 19, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=74] +atlas = ExtResource( 36 ) +region = Rect2( 38, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=75] +atlas = ExtResource( 36 ) +region = Rect2( 57, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=76] +atlas = ExtResource( 36 ) +region = Rect2( 76, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=77] +atlas = ExtResource( 36 ) +region = Rect2( 95, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=78] +atlas = ExtResource( 36 ) +region = Rect2( 114, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=79] +atlas = ExtResource( 36 ) +region = Rect2( 133, 0, 19, 20 ) + +[sub_resource type="SpriteFrames" id=80] +animations = [ { +"frames": [ SubResource( 72 ), SubResource( 73 ), SubResource( 74 ), SubResource( 75 ), SubResource( 76 ), SubResource( 77 ), SubResource( 78 ), SubResource( 79 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] + +[sub_resource type="ShaderMaterial" id=66] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=67] +atlas = ExtResource( 34 ) +region = Rect2( 0, 32, 24, 16 ) + +[sub_resource type="AtlasTexture" id=68] +atlas = ExtResource( 34 ) +region = Rect2( 24, 32, 24, 16 ) + +[sub_resource type="AtlasTexture" id=69] +atlas = ExtResource( 34 ) +region = Rect2( 48, 32, 24, 16 ) + +[sub_resource type="SpriteFrames" id=70] +animations = [ { +"frames": [ SubResource( 67 ), SubResource( 68 ), SubResource( 69 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="Curve2D" id=58] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 33.7028, 0.317383, 0, 0, 0, 0, 40, 0 ) +} + +[sub_resource type="AtlasTexture" id=59] +atlas = ExtResource( 31 ) +region = Rect2( 0, 0, 14, 12 ) + +[sub_resource type="AtlasTexture" id=60] +atlas = ExtResource( 31 ) +region = Rect2( 14, 0, 14, 12 ) + +[sub_resource type="SpriteFrames" id=61] +animations = [ { +"frames": [ SubResource( 59 ), SubResource( 60 ) ], +"loop": true, +"name": "chomp", +"speed": 8.0 +} ] + +[sub_resource type="ShaderMaterial" id=62] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="ShaderMaterial" id=81] +resource_local_to_scene = true +shader = ExtResource( 38 ) +shader_param/color = Color( 1, 1, 1, 1 ) +shader_param/smooth_mode = true +shader_param/reverse = true +shader_param/opacity = 0.0 + +[sub_resource type="ShaderMaterial" id=82] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=83] +atlas = ExtResource( 41 ) +region = Rect2( 0, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=84] +atlas = ExtResource( 41 ) +region = Rect2( 20, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=85] +atlas = ExtResource( 41 ) +region = Rect2( 40, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=86] +atlas = ExtResource( 41 ) +region = Rect2( 60, 0, 20, 21 ) + +[sub_resource type="SpriteFrames" id=87] +animations = [ { +"frames": [ SubResource( 83 ), SubResource( 84 ), SubResource( 85 ), SubResource( 86 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="Animation" id=89] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Control:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} + +[sub_resource type="Animation" id=90] +resource_name = "credits" +length = 98.0 +step = 1.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Control:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 2, 3, 5, 6, 10, 11, 15, 16, 20, 21, 25, 26, 30, 31, 35, 36, 40, 41, 45, 46, 50, 51, 55, 56, 60, 61, 65, 66, 70, 71, 75, 76, 80, 81, 85, 86, 90 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( -256, 0 ), Vector2( -256, 0 ), Vector2( -512, 0 ), Vector2( -512, 0 ), Vector2( -768, 0 ), Vector2( -768, 0 ), Vector2( -1024, 0 ), Vector2( -1024, 0 ), Vector2( -1280, 0 ), Vector2( -1280, 0 ), Vector2( -1536, 0 ), Vector2( -1536, 0 ), Vector2( -1792, 0 ), Vector2( -1792, 0 ), Vector2( -2048, 0 ), Vector2( -2048, 0 ), Vector2( -2304, 0 ), Vector2( -2304, 0 ), Vector2( -2560, 0 ), Vector2( -2560, 0 ), Vector2( -2816, 0 ), Vector2( -2816, 0 ), Vector2( -3072, 0 ), Vector2( -3072, 0 ), Vector2( -3328, 0 ), Vector2( -3328, 0 ), Vector2( -3584, 0 ), Vector2( -3584, 0 ), Vector2( -3840, 0 ), Vector2( -3840, 0 ), Vector2( -4096, 0 ), Vector2( -4096, 0 ), Vector2( -4352, 0 ), Vector2( -4352, 0 ), Vector2( -4608, 0 ), Vector2( -4608, 0 ) ] +} + +[node name="Credits" type="Node" groups=["map"]] +script = ExtResource( 14 ) + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = -64 + +[node name="ColorRect2" type="ColorRect" parent="CanvasLayer"] +margin_left = 4864.0 +margin_right = 5120.0 +margin_bottom = 192.0 +color = Color( 0.0666667, 0.164706, 0.454902, 0.329412 ) + +[node name="Background" type="ColorRect" parent="CanvasLayer"] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="CanvasLayer/Background"] +root_node = NodePath("../../..") +autoplay = "rainbow" +anims/RESET = SubResource( 3 ) +anims/rainbow = SubResource( 91 ) + +[node name="Control" type="Control" parent="."] +margin_right = 40.0 +margin_bottom = 40.0 + +[node name="Title" type="Sprite" parent="Control"] +position = Vector2( 128, 96 ) +texture = ExtResource( 3 ) + +[node name="TeamSG" type="Node2D" parent="Control"] +position = Vector2( 640, 96 ) + +[node name="GameStaffBack" type="Label" parent="Control/TeamSG"] +modulate = Color( 0.172549, 0, 0.552941, 1 ) +margin_left = -330.0 +margin_top = -14.0 +margin_right = -170.0 +margin_bottom = 2.0 +theme = SubResource( 93 ) +text = "Game Staff" + +[node name="GameStaff" type="Label" parent="Control/TeamSG"] +margin_left = -330.0 +margin_top = -16.0 +margin_right = -170.0 +theme = SubResource( 93 ) +text = "Game Staff" + +[node name="RollCall" type="Label" parent="Control/TeamSG"] +modulate = Color( 0.426872, 0.218491, 0.433594, 1 ) +margin_left = 2479.0 +margin_top = -15.0 +margin_right = 2671.0 +margin_bottom = 1.0 +theme = SubResource( 93 ) +text = "Roll Call!!!" + +[node name="RollCall2" type="Label" parent="Control/TeamSG"] +margin_left = 2479.0 +margin_top = -17.0 +margin_right = 2671.0 +margin_bottom = -1.0 +theme = SubResource( 93 ) +text = "Roll Call!!!" + +[node name="TeamSgSplash" type="Sprite" parent="Control/TeamSG"] +position = Vector2( 0, -23 ) +texture = ExtResource( 48 ) + +[node name="TeamSG2" type="Label" parent="Control/TeamSG"] +material = ExtResource( 4 ) +margin_left = -128.0 +margin_top = 56.0 +margin_right = 128.0 +margin_bottom = 105.0 +theme = ExtResource( 6 ) +text = "Team SG is: Penny rigate, +Haze Weathers, Scarlett Sylvistrix + and Dog Jelly. + " +align = 1 +valign = 1 + +[node name="TeamSG5" type="Label" parent="Control/TeamSG"] +material = ExtResource( 4 ) +margin_left = -112.0 +margin_top = -85.0 +margin_right = -56.0 +margin_bottom = -49.0 +theme = ExtResource( 6 ) +text = "Similar +people +create" +align = 1 +valign = 1 + +[node name="TeamSG6" type="Label" parent="Control/TeamSG"] +material = ExtResource( 4 ) +margin_left = 72.0 +margin_top = -85.0 +margin_right = 107.0 +margin_bottom = -49.0 +theme = ExtResource( 6 ) +text = "Games +for +fun" +align = 1 +valign = 1 + +[node name="Penny" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 768.0 +margin_right = 1024.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Penny \"SG\" Rigate- +Director +Game design +Level design +Code +graphics +sound effects +Scenario" +align = 1 +valign = 1 + +[node name="Haze" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 1024.0 +margin_right = 1280.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Haze \"Rolling fiend\" Weathers- +Lead Programmer +graphics +sound effects +voice of \"narrator\" +Story +Additional Enemy design" +align = 1 +valign = 1 + +[node name="Ivy" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 1280.0 +margin_right = 1536.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Scarlett \"Shedge\" Sylvistrix- +Lead Composer +Sound effects +mixing" +align = 1 +valign = 1 + +[node name="Dog" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 1536.0 +margin_right = 1792.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Dog \"the scrump\" jelly- +designer of \"the scrump\" +Story Help +Concept artist +Character design help" +align = 1 +valign = 1 + +[node name="Wolfboy" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 1792.0 +margin_right = 2048.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-WolfBoy \"SG-2083\"- +\"infiltration\" border" +align = 1 +valign = 1 + +[node name="Bodhi" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 2048.0 +margin_right = 2304.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Bodhi \"eviscerator\" darner- +\"Got Shards\" border" +align = 1 +valign = 1 + +[node name="Playtesters" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 2304.0 +margin_right = 2560.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Our playtesters- +Penny rigate +Haze Weathers +Scarlett Sylvistrix +DogJelly +Wolfboy +Rhidianruckus +Wily Beast +Maddy" +align = 1 +valign = 1 + +[node name="WonderingNow" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 2560.0 +margin_right = 2816.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-You're wondering now- +Original composition by: +Clement \"Coxsone\" Dodd +Originally performed by: +Andy & Joey +later performed by: +The specials +Cover version by: +haze weathers" +align = 1 +valign = 1 + +[node name="SpecialThanks" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 2816.0 +margin_right = 3072.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Special thanks- +Wolfboy +Cirquet +wily beast +RhidianRuckus +" +align = 1 +valign = 1 + +[node name="Playername" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 2816.0 +margin_top = 123.0 +margin_right = 3072.0 +margin_bottom = 133.0 +theme = ExtResource( 6 ) +text = "Ty Tiramisu" +align = 1 +autowrap = true + +[node name="RollCall1" type="Node2D" parent="Control"] +position = Vector2( 3328, 0 ) + +[node name="SG" type="AnimatedSprite" parent="Control/RollCall1"] +material = SubResource( 7 ) +position = Vector2( 74, 69 ) +frames = SubResource( 12 ) +playing = true +script = ExtResource( 16 ) + +[node name="Label" type="Label" parent="Control/RollCall1/SG"] +material = ExtResource( 4 ) +margin_left = -7.0 +margin_top = 11.0 +margin_right = 33.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "SG" + +[node name="Speccy" type="AnimatedSprite" parent="Control/RollCall1"] +position = Vector2( 155, 68 ) +frames = SubResource( 97 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall1/Speccy"] +material = ExtResource( 4 ) +margin_left = -33.0 +margin_top = 12.0 +margin_right = 31.0 +margin_bottom = 26.0 +theme = ExtResource( 6 ) +text = "Speccy" +align = 1 + +[node name="MsX" type="AnimatedSprite" parent="Control/RollCall1"] +material = SubResource( 8 ) +position = Vector2( 106, 69 ) +frames = SubResource( 18 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall1/MsX"] +material = ExtResource( 4 ) +margin_left = -16.0 +margin_top = 11.0 +margin_right = 16.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Ms.x" +align = 1 + +[node name="DrIntelli" type="Sprite" parent="Control/RollCall1"] +position = Vector2( 90, 140 ) +texture = ExtResource( 12 ) + +[node name="Label" type="Label" parent="Control/RollCall1/DrIntelli"] +material = ExtResource( 4 ) +margin_left = -32.0 +margin_top = 11.0 +margin_right = 38.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "DR.Intelli" +align = 1 + +[node name="Fami" type="AnimatedSprite" parent="Control/RollCall1"] +position = Vector2( 152, 135 ) +frames = SubResource( 100 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall1/Fami"] +material = ExtResource( 4 ) +margin_left = -33.0 +margin_top = 16.0 +margin_right = 37.0 +margin_bottom = 30.0 +theme = ExtResource( 6 ) +text = "Fami" +align = 1 + +[node name="FreedomFighters" type="Label" parent="Control/RollCall1"] +modulate = Color( 0.223529, 0.843137, 0.435294, 1 ) +material = SubResource( 51 ) +margin_left = 64.0 +margin_top = 32.0 +margin_right = 176.0 +margin_bottom = 55.0 +theme = ExtResource( 6 ) +text = "Freedom Fighters" +align = 1 + +[node name="VileVillians" type="Label" parent="Control/RollCall1"] +modulate = Color( 0.866667, 0.368627, 0.435294, 1 ) +material = SubResource( 51 ) +margin_left = 64.0 +margin_top = 104.0 +margin_right = 176.0 +margin_bottom = 127.0 +theme = ExtResource( 6 ) +text = "Vile Villians" +align = 1 + +[node name="RollCall2" type="Node2D" parent="Control"] +position = Vector2( 768, 0 ) + +[node name="Eviscerator" type="AnimatedSprite" parent="Control/RollCall2"] +material = SubResource( 13 ) +position = Vector2( 2880, 24 ) +frames = SubResource( 21 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/Eviscerator"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "eviscerator" +align = 1 + +[node name="Catbat" type="AnimatedSprite" parent="Control/RollCall2"] +material = SubResource( 13 ) +position = Vector2( 2952, 24 ) +frames = SubResource( 24 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/Catbat"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Catbat" +align = 1 + +[node name="TheScrump" type="AnimatedSprite" parent="Control/RollCall2"] +position = Vector2( 2992, 128 ) +frames = SubResource( 27 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/TheScrump"] +material = ExtResource( 4 ) +margin_left = -40.0 +margin_top = 32.0 +margin_right = 53.0 +margin_bottom = 46.0 +theme = ExtResource( 6 ) +text = "The Scrump" +align = 1 + +[node name="RollingFiend" type="AnimatedSprite" parent="Control/RollCall2"] +material = SubResource( 13 ) +position = Vector2( 2880, 102 ) +frames = SubResource( 30 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/RollingFiend"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Rolling fiend" +align = 1 + +[node name="ChipIt" type="AnimatedSprite" parent="Control/RollCall2"] +position = Vector2( 2960, 62 ) +frames = SubResource( 33 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/ChipIt"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Chipit" +align = 1 + +[node name="Skelarcher" type="AnimatedSprite" parent="Control/RollCall2"] +material = SubResource( 34 ) +position = Vector2( 3024, 62 ) +frames = SubResource( 43 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/Skelarcher"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Skelarcher" +align = 1 + +[node name="SabreSpighter" type="AnimatedSprite" parent="Control/RollCall2"] +position = Vector2( 2880, 62 ) +frames = SubResource( 46 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/SabreSpighter"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "SabreSpighter" +align = 1 + +[node name="BioSlime" type="AnimatedSprite" parent="Control/RollCall2"] +material = SubResource( 47 ) +position = Vector2( 3016, 24 ) +frames = SubResource( 50 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/BioSlime"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Bioslime" +align = 1 + +[node name="ParadisePoachers" type="Label" parent="Control/RollCall2"] +modulate = Color( 0.223529, 0.843137, 0.435294, 1 ) +material = SubResource( 51 ) +margin_left = 2840.0 +margin_top = 144.0 +margin_right = 2928.0 +margin_bottom = 167.0 +theme = ExtResource( 6 ) +text = "Paradise +Poachers" +align = 1 + +[node name="RollCall3" type="Node2D" parent="Control"] +position = Vector2( 3840, 0 ) + +[node name="Shedge" type="AnimatedSprite" parent="Control/RollCall3"] +position = Vector2( 60, 25 ) +frames = SubResource( 54 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall3/Shedge"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Shedge" +align = 1 + +[node name="TheScrumpsTongue" type="AnimatedSprite" parent="Control/RollCall3"] +position = Vector2( 156, 20 ) +frames = SubResource( 57 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall3/TheScrumpsTongue"] +material = ExtResource( 4 ) +margin_left = -64.0 +margin_top = 16.0 +margin_right = 69.0 +margin_bottom = 30.0 +theme = ExtResource( 6 ) +text = "The scrump's tongue" +align = 1 + +[node name="Fish" parent="Control/RollCall3" instance=ExtResource( 30 )] +position = Vector2( 88, 62 ) +speed = 0 + +[node name="Label2" type="Label" parent="Control/RollCall3/Fish"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 15.0 +margin_right = 45.0 +margin_bottom = 29.0 +theme = ExtResource( 6 ) +text = "Bullet fish" +align = 1 + +[node name="Squig" type="AnimatedSprite" parent="Control/RollCall3"] +position = Vector2( 200, 64 ) +frames = SubResource( 65 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall3/Squig"] +material = ExtResource( 4 ) +margin_left = -69.0 +margin_top = 13.0 +margin_right = 64.0 +margin_bottom = 27.0 +theme = ExtResource( 6 ) +text = "Squig" +align = 1 + +[node name="Hellarcher" type="AnimatedSprite" parent="Control/RollCall3"] +material = SubResource( 71 ) +position = Vector2( 72, 152 ) +frames = SubResource( 80 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall3/Hellarcher"] +material = ExtResource( 4 ) +margin_left = -69.0 +margin_top = 13.0 +margin_right = 64.0 +margin_bottom = 27.0 +theme = ExtResource( 6 ) +text = "Hellarcher" +align = 1 + +[node name="Turchin" type="AnimatedSprite" parent="Control/RollCall3"] +material = SubResource( 66 ) +position = Vector2( 68, 104 ) +frames = SubResource( 70 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall3/Turchin"] +material = ExtResource( 4 ) +margin_left = -69.0 +margin_top = 13.0 +margin_right = 64.0 +margin_bottom = 27.0 +theme = ExtResource( 6 ) +text = "Turchin +" +align = 1 + +[node name="Beel" type="Path2D" parent="Control/RollCall3" groups=["enemy"]] +position = Vector2( 128, 69 ) +curve = SubResource( 58 ) + +[node name="Head" type="PathFollow2D" parent="Control/RollCall3/Beel" groups=["eel_segment"]] +position = Vector2( 29.7698, 0.268818 ) +rotation = 0.0123443 +offset = 21.77 +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="AnimatedSprite" parent="Control/RollCall3/Beel/Head"] +position = Vector2( 4, 0 ) +z_index = 1 +frames = SubResource( 61 ) +animation = "chomp" +playing = true + +[node name="Border" type="AnimatedSprite" parent="Control/RollCall3/Beel/Head/Sprite"] +material = SubResource( 62 ) +z_index = -1 +frames = SubResource( 61 ) +animation = "chomp" +playing = true + +[node name="ShapeTransform" type="RemoteTransform2D" parent="Control/RollCall3/Beel/Head"] +position = Vector2( 2.5, 0 ) + +[node name="Tail" type="PathFollow2D" parent="Control/RollCall3/Beel"] +position = Vector2( 18.0018, 0.123504 ) +rotation = 0.0123431 +offset = 10.0 +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="Sprite" parent="Control/RollCall3/Beel/Tail"] +position = Vector2( -2, 0 ) +z_index = 1 +texture = ExtResource( 29 ) + +[node name="Border" type="Sprite" parent="Control/RollCall3/Beel/Tail/Sprite"] +material = SubResource( 62 ) +z_index = -1 +texture = ExtResource( 29 ) + +[node name="Segment" type="PathFollow2D" parent="Control/RollCall3/Beel"] +position = Vector2( 26.0015, 0.222285 ) +rotation = 0.0123294 +offset = 18.0 +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="Sprite" parent="Control/RollCall3/Beel/Segment"] +z_index = 1 +texture = ExtResource( 32 ) + +[node name="Border" type="Sprite" parent="Control/RollCall3/Beel/Segment/Sprite"] +material = SubResource( 62 ) +z_index = -1 +texture = ExtResource( 32 ) + +[node name="Segment2" type="PathFollow2D" parent="Control/RollCall3/Beel"] +position = Vector2( 22.0031, 0.172913 ) +rotation = 0.0123357 +offset = 14.0 +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="Sprite" parent="Control/RollCall3/Beel/Segment2"] +z_index = 1 +texture = ExtResource( 32 ) + +[node name="Border" type="Sprite" parent="Control/RollCall3/Beel/Segment2/Sprite"] +material = SubResource( 62 ) +z_index = -1 +texture = ExtResource( 32 ) + +[node name="Label3" type="Label" parent="Control/RollCall3/Beel"] +material = ExtResource( 4 ) +margin_left = -24.0 +margin_top = 8.0 +margin_right = 69.0 +margin_bottom = 22.0 +theme = ExtResource( 6 ) +text = "Beel" +align = 1 + +[node name="ArtificialSoul" parent="Control/RollCall3" instance=ExtResource( 35 )] +position = Vector2( 156, 105 ) +radius = 0.0 +speed = 0.0 + +[node name="Label2" type="Label" parent="Control/RollCall3/ArtificialSoul"] +material = ExtResource( 4 ) +margin_left = -64.0 +margin_top = 12.0 +margin_right = 69.0 +margin_bottom = 35.0 +theme = ExtResource( 6 ) +text = "Artificial soul" +align = 1 + +[node name="EnervatingExperiments" type="Label" parent="Control/RollCall3"] +modulate = Color( 0.223529, 0.364706, 0.843137, 1 ) +material = SubResource( 51 ) +margin_left = 144.0 +margin_top = 152.0 +margin_right = 232.0 +margin_bottom = 175.0 +theme = ExtResource( 6 ) +text = "Eldritch +experiments" +align = 1 + +[node name="RollCall4" type="Node2D" parent="Control"] +position = Vector2( 768, 0 ) + +[node name="2600" parent="Control/RollCall4" instance=ExtResource( 37 )] +position = Vector2( 3464, -8 ) +make_explosions = true + +[node name="ShootTimer" parent="Control/RollCall4/2600" index="2"] +autostart = false + +[node name="FootShapeFront" parent="Control/RollCall4/2600/Hitbox" index="1"] +position = Vector2( 63.7334, 154.923 ) +scale = Vector2( 1, 1 ) + +[node name="FootShapeBack" parent="Control/RollCall4/2600/Hitbox" index="2"] +position = Vector2( 42.7334, 154.923 ) +scale = Vector2( 1, 1 ) + +[node name="ExplosionRect" parent="Control/RollCall4/2600/BigExplosion" index="0"] +material = SubResource( 81 ) + +[node name="Label2" type="Label" parent="Control/RollCall4/2600"] +material = ExtResource( 4 ) +margin_left = -16.0 +margin_top = 176.0 +margin_right = 117.0 +margin_bottom = 190.0 +theme = ExtResource( 6 ) +text = "Stg-2600 / Sg-2083" +align = 1 + +[node name="MonsterousMechaMadeMoral" type="Label" parent="Control/RollCall4"] +modulate = Color( 0.564706, 0.576471, 0.607843, 1 ) +material = SubResource( 51 ) +margin_left = 3344.0 +margin_top = 16.0 +margin_right = 3456.0 +margin_bottom = 39.0 +theme = ExtResource( 6 ) +text = "Monsterous mecha +made moral" +align = 1 + +[node name="MonsterousMechaMadeMoral2" type="Label" parent="Control/RollCall4"] +modulate = Color( 0.105882, 0.682353, 0.615686, 1 ) +material = SubResource( 51 ) +margin_left = 3344.0 +margin_top = 72.0 +margin_right = 3456.0 +margin_bottom = 108.0 +theme = ExtResource( 6 ) +text = "Bastards +'n' +bots" +align = 1 + +[node name="Famicop" type="AnimatedSprite" parent="Control/RollCall4"] +material = SubResource( 82 ) +position = Vector2( 3362, 122.5 ) +frames = SubResource( 87 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall4/Famicop"] +material = ExtResource( 4 ) +margin_left = -64.0 +margin_top = 12.0 +margin_right = 69.0 +margin_bottom = 26.0 +theme = ExtResource( 6 ) +text = "Famicop" +align = 1 + +[node name="Roboturret" parent="Control/RollCall4" instance=ExtResource( 40 )] +position = Vector2( 3434, 122.5 ) +shoot_time = inf + +[node name="Label2" type="Label" parent="Control/RollCall4/Roboturret"] +material = ExtResource( 4 ) +margin_left = -64.0 +margin_top = 12.0 +margin_right = 69.0 +margin_bottom = 26.0 +theme = ExtResource( 6 ) +text = "roboturret" +align = 1 + +[node name="Tin" parent="Control/RollCall4" instance=ExtResource( 39 )] +position = Vector2( 3400, 160 ) +speed = 0 + +[node name="Label2" type="Label" parent="Control/RollCall4/Tin"] +material = ExtResource( 4 ) +margin_left = -67.0 +margin_top = 8.0 +margin_right = 66.0 +margin_bottom = 22.0 +theme = ExtResource( 6 ) +text = "Tin" +align = 1 + +[node name="RollCall6" type="Node2D" parent="Control"] + +[node name="Famira" parent="Control/RollCall6" instance=ExtResource( 47 )] +position = Vector2( 4502, 184 ) +credits = true + +[node name="MonsterousMechaMadeMoral" type="Label" parent="Control/RollCall6"] +modulate = Color( 0.980392, 0.878431, 0.0392157, 1 ) +material = SubResource( 51 ) +margin_left = 4361.0 +margin_top = 112.0 +margin_right = 4473.0 +margin_bottom = 135.0 +theme = ExtResource( 6 ) +text = "Totalitarian +terror" +align = 1 + +[node name="Label2" type="Label" parent="Control/RollCall6"] +material = ExtResource( 4 ) +margin_left = 4352.0 +margin_top = 148.0 +margin_right = 4485.0 +margin_bottom = 162.0 +theme = ExtResource( 6 ) +text = "Super Famira" +align = 1 + +[node name="RollCall5" type="Node2D" parent="Control"] +position = Vector2( 4608, 0 ) + +[node name="Haze" type="Sprite" parent="Control/RollCall5"] +position = Vector2( 80, 136 ) +scale = Vector2( 2, 2 ) +texture = ExtResource( 45 ) + +[node name="Penny" type="Sprite" parent="Control/RollCall5"] +position = Vector2( 104, 134 ) +scale = Vector2( 2, 2 ) +texture = ExtResource( 44 ) + +[node name="KikiDog" type="Sprite" parent="Control/RollCall5"] +position = Vector2( 24, 138 ) +scale = Vector2( -2, 2 ) +texture = ExtResource( 43 ) + +[node name="Ivy" type="Sprite" parent="Control/RollCall5"] +position = Vector2( 54, 136 ) +scale = Vector2( 2, 2 ) +texture = ExtResource( 42 ) + +[node name="Sprite" type="Sprite" parent="Control/RollCall5"] +position = Vector2( 176, 88 ) +texture = ExtResource( 46 ) + +[node name="Label" type="Label" parent="Control/RollCall5"] +material = ExtResource( 4 ) +margin_left = 136.0 +margin_top = 64.0 +margin_right = 220.0 +margin_bottom = 100.0 +theme = ExtResource( 6 ) +text = "Thank you +for playing +our game!" +align = 1 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "credits" +playback_speed = 0.85 +anims/RESET = SubResource( 89 ) +anims/credits = SubResource( 90 ) + +[editable path="Control/RollCall4/2600"] diff --git a/menus/file_create.gd b/menus/file_create.gd new file mode 100644 index 0000000..3f2fe6f --- /dev/null +++ b/menus/file_create.gd @@ -0,0 +1,115 @@ +extends Node + + +const DESCRIPTIONS := [ + # sweet mode + { + "enemies": "*slower enemies", + "lives": "*unlimited lives", + "description": "*Difficulty for\n beginners", + }, + # salty mode + { + "enemies": "*normal enemies", + "lives": "*unlimited lives", + "description": "*Difficulty for\n skilled players", + }, + # spicy mode + { + "enemies": "*normal enemies", + "lives": "*limited lives", + "description": "*Difficulty for\n retro players", + }, + # pungent mode + { + "enemies": "*faster enemies", + "lives": "*limited lives", + "description": "*Difficulty for\n insane players", + }, +] + +var file: Save.SaveFile = null +var difficulty: int = Game.Difficulty.SPICY + +onready var face: Sprite = $"%Face" +onready var chosen_name: Label = $"%ChosenName" +onready var enemies: Label = $"%Enemies" +onready var lives: Label = $"%Lives" +onready var description: Label = $"%Description" +onready var exit_sprite: Sprite = $"%ExitSprite" +onready var closed_collision: CollisionShape2D = $"%ClosedCollision" + + +func _ready() -> void: + # escape to file select if no file is assigned + if not file: + yield(get_tree(), "idle_frame") + SceneManager.current_scene = load("res://menus/file_select.tscn").instance() + return + + # pause so that player can not move around until difficulty chosen + get_tree().paused = true + # initialize name + chosen_name.text = "" + file.name = "" + # fade in + Fade.fade_in(Options.transition_speed_secs) + # focus the difficulty + $"%Spicy".call_deferred("grab_focus") + + +func _set_difficulty(value: int) -> void: + difficulty = posmod(value, 4) + file.difficulty = difficulty + face.frame = difficulty + enemies.text = DESCRIPTIONS[difficulty].enemies + lives.text = DESCRIPTIONS[difficulty].lives + description.text = DESCRIPTIONS[difficulty].description + + + +func _difficulty_selected() -> void: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + $"%DifficultySelect".queue_free() + $"%NameEntry".visible = true + get_tree().paused = false + Game.use_lives = false + Fade.fade_in(Options.transition_speed_secs) + +func _on_letter_chosen(letter: String) -> void: + if file.name.length() < 8: + file.name += letter + chosen_name.text = file.name + if file.name.length() > 0: + var tween = create_tween() + tween.tween_property(exit_sprite, "frame", 3, 0.25) + tween.tween_property(closed_collision, "disabled", true, 0.0) + +func _on_backspace(): +# file.name.erase(file.name.length() - 1,1) + file.name = file.name.left(file.name.length() - 1) + chosen_name.text = file.name + +func _on_Exit_area_entered(area: Area2D) -> void: + if area.is_in_group("player_hitbox"): + var player = area.get_parent() + player.state_chart.send_event("start_teleport") + player.connect("teleport_finished", self, "_on_player_teleport_finished") + +func _on_player_teleport_finished() -> void: + if file.name.length() > 0: + get_tree().paused = true + if Options.scoreboard_name.empty(): + Options.scoreboard_name = file.name + Options.save_options() + file.save_to_file() + Save.current_file = file + Game.difficulty = file.difficulty + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + get_tree().paused = false + if Options.speedrun_timer: + SpeedrunTimer.timer_running = true + SpeedrunTimer.visible = true + SceneManager.current_scene = load("res://cutscenes/intro_story.tscn").instance() diff --git a/menus/file_create.tscn b/menus/file_create.tscn new file mode 100644 index 0000000..1b622fa --- /dev/null +++ b/menus/file_create.tscn @@ -0,0 +1,497 @@ +[gd_scene load_steps=32 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/hud/sg_menu.png" type="Texture" id=4] +[ext_resource path="res://graphics/hud/sg_tasting.png" type="Texture" id=5] +[ext_resource path="res://graphics/hud/scores/salty.png" type="Texture" id=6] +[ext_resource path="res://menus/file_create.gd" type="Script" id=7] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=8] +[ext_resource path="res://tilesets/t_abstract.tres" type="TileSet" id=9] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=10] +[ext_resource path="res://objects/hud/letter_block.tscn" type="PackedScene" id=11] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=12] +[ext_resource path="res://graphics/hud/scores/sweet.png" type="Texture" id=13] +[ext_resource path="res://graphics/exit/exit.png" type="Texture" id=14] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=15] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=16] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=17] +[ext_resource path="res://shaders/beam_of_sin.gdshader" type="Shader" id=18] +[ext_resource path="res://graphics/exit/exit_back.png" type="Texture" id=19] +[ext_resource path="res://graphics/hud/scores/pungent.png" type="Texture" id=20] +[ext_resource path="res://graphics/hud/scores/spicy.png" type="Texture" id=21] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.458824, 0.282353, 0.690196, 1 ) +shader_param/color_2 = Color( 0.160784, 0.0352941, 0.282353, 1 ) +shader_param/checker_size = Vector2( 32, 16 ) +shader_param/pan_speed = Vector2( 16, -8 ) +shader_param/cycle_speed = Vector2( 0, 4 ) +shader_param/cycle_alternation = Vector2( 0, 1 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 1 ) +shader_param/offset = Vector2( 0, 1 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 1, 0.47451, 0.266667, 1 ) +shader_param/color_2 = Color( 0.980392, 0.890196, 0.576471, 1 ) +shader_param/checker_size = Vector2( 16, 8 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 0, 12 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform2D( 1, 0, 2, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=9] +shader = ExtResource( 18 ) +shader_param/speed = 1.0 +shader_param/cycle_offset = 0.0 +shader_param/wave_length = 8.0 +shader_param/thickness = 0.1 + +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 18 ) +shader_param/speed = -2.0 +shader_param/cycle_offset = 3.0 +shader_param/wave_length = 5.0 +shader_param/thickness = 0.1 + +[sub_resource type="Gradient" id=11] +interpolation_mode = 1 +offsets = PoolRealArray( 0, 0.5 ) +colors = PoolColorArray( 0.345098, 0.74902, 0.878431, 1, 0.396078, 1, 1, 1 ) + +[sub_resource type="RectangleShape2D" id=12] +extents = Vector2( 1, 1 ) + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 7, 7.5 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 8, 4.5 ) + +[node name="FileCreate" type="Node" groups=["gets_letters"]] +pause_mode = 2 +script = ExtResource( 7 ) +__meta__ = { +"_edit_horizontal_guides_": [ ] +} + +[node name="BackgroundLayer" type="CanvasLayer" parent="."] +layer = -10 + +[node name="Background" type="ColorRect" parent="BackgroundLayer"] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="DifficultySelect" type="Control" parent="."] +unique_name_in_owner = true +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Label" type="Label" parent="DifficultySelect"] +material = ExtResource( 8 ) +margin_left = 8.0 +margin_top = 8.0 +margin_right = 253.0 +margin_bottom = 44.0 +text = "Select the difficulty of the +future, sg loves hot peppers but +that doesn't mean you have to!" + +[node name="Label2" type="Label" parent="DifficultySelect"] +material = ExtResource( 8 ) +margin_left = 92.0 +margin_top = 56.0 +margin_right = 176.0 +margin_bottom = 105.0 +text = "Feel free +to start +anew if you +have trouble" + +[node name="ButtonsPanel" type="Panel" parent="DifficultySelect"] +material = SubResource( 2 ) +margin_left = 16.0 +margin_top = 48.0 +margin_right = 88.0 +margin_bottom = 112.0 +theme = ExtResource( 2 ) + +[node name="Sweet" type="TextureButton" parent="DifficultySelect/ButtonsPanel"] +material = SubResource( 3 ) +margin_left = 5.0 +margin_top = 8.0 +margin_right = 17.0 +margin_bottom = 20.0 +focus_neighbour_top = NodePath("../Pungent") +focus_neighbour_bottom = NodePath("../Salty") +texture_focused = ExtResource( 13 ) + +[node name="Salty" type="TextureButton" parent="DifficultySelect/ButtonsPanel"] +material = SubResource( 3 ) +margin_left = 5.0 +margin_top = 21.0 +margin_right = 17.0 +margin_bottom = 33.0 +focus_neighbour_top = NodePath("../Sweet") +focus_neighbour_bottom = NodePath("../Spicy") +texture_focused = ExtResource( 6 ) + +[node name="Spicy" type="TextureButton" parent="DifficultySelect/ButtonsPanel"] +unique_name_in_owner = true +material = SubResource( 3 ) +margin_left = 5.0 +margin_top = 34.0 +margin_right = 17.0 +margin_bottom = 46.0 +focus_neighbour_top = NodePath("../Salty") +focus_neighbour_bottom = NodePath("../Pungent") +texture_focused = ExtResource( 21 ) + +[node name="Pungent" type="TextureButton" parent="DifficultySelect/ButtonsPanel"] +material = SubResource( 3 ) +margin_left = 5.0 +margin_top = 47.0 +margin_right = 17.0 +margin_bottom = 59.0 +focus_neighbour_top = NodePath("../Spicy") +focus_neighbour_bottom = NodePath("../Sweet") +texture_focused = ExtResource( 20 ) + +[node name="Body" type="Label" parent="DifficultySelect/ButtonsPanel"] +material = SubResource( 2 ) +margin_left = 18.0 +margin_top = 8.0 +margin_right = 67.0 +margin_bottom = 57.0 +text = "sweet +salty +spicy +pungent" + +[node name="DescriptionPanel" type="Panel" parent="DifficultySelect"] +material = SubResource( 2 ) +margin_left = 16.0 +margin_top = 120.0 +margin_right = 144.0 +margin_bottom = 184.0 +theme = ExtResource( 2 ) + +[node name="Enemies" type="Label" parent="DifficultySelect/DescriptionPanel"] +unique_name_in_owner = true +material = SubResource( 2 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 8.0 +margin_top = 8.0 +margin_right = -8.0 +margin_bottom = -22.0 +text = "*normal enemies" +autowrap = true + +[node name="Lives" type="Label" parent="DifficultySelect/DescriptionPanel"] +unique_name_in_owner = true +material = SubResource( 2 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 8.0 +margin_top = 22.0 +margin_bottom = -8.0 +text = "*limited lives" +autowrap = true + +[node name="Description" type="Label" parent="DifficultySelect/DescriptionPanel"] +unique_name_in_owner = true +material = SubResource( 2 ) +margin_left = 8.0 +margin_top = 37.0 +margin_right = 113.0 +margin_bottom = 69.0 +text = "*Difficulty for + retro players" + +[node name="SG" type="TextureRect" parent="DifficultySelect"] +margin_left = 176.0 +margin_top = 40.0 +margin_right = 242.0 +margin_bottom = 187.0 +texture = ExtResource( 4 ) + +[node name="Face" type="Sprite" parent="DifficultySelect/SG"] +unique_name_in_owner = true +position = Vector2( 33, 42 ) +texture = ExtResource( 5 ) +hframes = 4 +frame = 2 + +[node name="MenuSounds" parent="DifficultySelect" instance=ExtResource( 16 )] + +[node name="NameEntry" type="Node2D" parent="."] +pause_mode = 1 +unique_name_in_owner = true +visible = false + +[node name="ChosenName" type="Label" parent="NameEntry"] +unique_name_in_owner = true +material = ExtResource( 8 ) +anchor_right = 1.0 +margin_right = 256.0 +margin_bottom = 16.0 +theme = ExtResource( 2 ) +text = "SG" +align = 1 +valign = 1 + +[node name="TileBG" type="ColorRect" parent="NameEntry"] +material = SubResource( 4 ) +margin_left = 1.0 +margin_top = 161.0 +margin_right = 255.0 +margin_bottom = 191.0 + +[node name="TileBG2" type="ColorRect" parent="NameEntry/TileBG"] +material = SubResource( 4 ) +margin_left = 24.0 +margin_top = -56.0 +margin_right = 238.0 +margin_bottom = -42.0 + +[node name="TileBG3" type="ColorRect" parent="NameEntry/TileBG"] +material = SubResource( 4 ) +margin_left = 24.0 +margin_top = -112.0 +margin_right = 238.0 +margin_bottom = -98.0 + +[node name="Ground" type="TileMap" parent="NameEntry"] +tile_set = ExtResource( 9 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( -1, 0, 1, -65536, 0, 196610, -65535, 0, 196610, -65534, 0, 196610, -65533, 0, 196610, -65532, 0, 196610, -65531, 0, 196610, -65530, 0, 196610, -65529, 0, 196610, -65528, 0, 196610, -65527, 0, 196610, -65526, 0, 196610, -65525, 0, 196610, -65524, 0, 196610, -65523, 0, 196610, -65522, 0, 196610, -65521, 0, 196610, -65520, 0, 196610, -65519, 0, 196610, -65518, 0, 196610, -65517, 0, 196610, -65516, 0, 196610, -65515, 0, 196610, -65514, 0, 196610, -65513, 0, 196610, -65512, 0, 196610, -65511, 0, 196610, -65510, 0, 196610, -65509, 0, 196610, -65508, 0, 196610, -65507, 0, 196610, -65506, 0, 196610, -65505, 0, 196610, -65504, 0, 3, 65535, 0, 65536, 32, 0, 65536, 131071, 0, 65539, 65568, 0, 65537, 196607, 0, 65539, 131104, 0, 65537, 262143, 0, 65539, 196640, 0, 65537, 327679, 0, 65539, 262176, 0, 65537, 393215, 0, 65539, 327712, 0, 65537, 458751, 0, 65539, 393219, 0, 1, 393220, 0, 2, 393221, 0, 2, 393222, 0, 2, 393223, 0, 2, 393224, 0, 2, 393225, 0, 2, 393226, 0, 2, 393227, 0, 2, 393228, 0, 2, 393229, 0, 2, 393230, 0, 2, 393231, 0, 2, 393232, 0, 2, 393233, 0, 2, 393234, 0, 2, 393235, 0, 2, 393236, 0, 2, 393237, 0, 2, 393238, 0, 2, 393239, 0, 2, 393240, 0, 2, 393241, 0, 2, 393242, 0, 2, 393243, 0, 2, 393244, 0, 2, 393245, 0, 3, 393248, 0, 65537, 524287, 0, 65539, 458755, 0, 131073, 458756, 0, 131074, 458757, 0, 131074, 458758, 0, 131074, 458759, 0, 131074, 458760, 0, 131074, 458761, 0, 131074, 458762, 0, 131074, 458763, 0, 131074, 458764, 0, 131074, 458765, 0, 131074, 458766, 0, 131074, 458767, 0, 131074, 458768, 0, 131074, 458769, 0, 131074, 458770, 0, 131074, 458771, 0, 131074, 458772, 0, 131074, 458773, 0, 131074, 458774, 0, 131074, 458775, 0, 131074, 458776, 0, 131074, 458777, 0, 131074, 458778, 0, 131074, 458779, 0, 131074, 458780, 0, 131074, 458781, 0, 131075, 458784, 0, 65537, 589823, 0, 65539, 524320, 0, 65537, 655359, 0, 65539, 589856, 0, 65537, 720895, 0, 65539, 655392, 0, 65537, 786431, 0, 65539, 720928, 0, 65537, 851967, 0, 65539, 786464, 0, 65537, 917503, 0, 65539, 851971, 0, 1, 851972, 0, 2, 851973, 0, 2, 851974, 0, 2, 851975, 0, 2, 851976, 0, 2, 851977, 0, 2, 851978, 0, 2, 851979, 0, 2, 851980, 0, 2, 851981, 0, 2, 851982, 0, 2, 851983, 0, 2, 851984, 0, 2, 851985, 0, 2, 851986, 0, 2, 851987, 0, 2, 851988, 0, 2, 851989, 0, 2, 851990, 0, 2, 851991, 0, 2, 851992, 0, 2, 851993, 0, 2, 851994, 0, 2, 851995, 0, 2, 851996, 0, 2, 851997, 0, 3, 852000, 0, 65537, 983039, 0, 65539, 917507, 0, 131073, 917508, 0, 131074, 917509, 0, 131074, 917510, 0, 131074, 917511, 0, 131074, 917512, 0, 131074, 917513, 0, 131074, 917514, 0, 131074, 917515, 0, 131074, 917516, 0, 131074, 917517, 0, 131074, 917518, 0, 131074, 917519, 0, 131074, 917520, 0, 131074, 917521, 0, 131074, 917522, 0, 131074, 917523, 0, 131074, 917524, 0, 131074, 917525, 0, 131074, 917526, 0, 131074, 917527, 0, 131074, 917528, 0, 131074, 917529, 0, 131074, 917530, 0, 131074, 917531, 0, 131074, 917532, 0, 131074, 917533, 0, 131075, 917536, 0, 65537, 1048575, 0, 65539, 983072, 0, 65537, 1114111, 0, 65539, 1048608, 0, 65537, 1179647, 0, 65539, 1114144, 0, 65537, 1245183, 0, 65539, 1179680, 0, 65537, 1310719, 0, 65539, 1245216, 0, 65537, 1376255, 0, 65539, 1310720, 0, 1, 1310721, 0, 2, 1310722, 0, 2, 1310723, 0, 2, 1310724, 0, 2, 1310725, 0, 2, 1310726, 0, 2, 1310727, 0, 2, 1310728, 0, 2, 1310729, 0, 2, 1310730, 0, 2, 1310731, 0, 2, 1310732, 0, 2, 1310733, 0, 2, 1310734, 0, 2, 1310735, 0, 2, 1310736, 0, 2, 1310737, 0, 2, 1310738, 0, 2, 1310739, 0, 2, 1310740, 0, 2, 1310741, 0, 2, 1310742, 0, 2, 1310743, 0, 2, 1310744, 0, 2, 1310745, 0, 2, 1310746, 0, 2, 1310747, 0, 2, 1310748, 0, 2, 1310749, 0, 2, 1310750, 0, 2, 1310751, 0, 3, 1310752, 0, 65537, 1441791, 0, 65539, 1376256, 0, 65537, 1376257, 0, 65538, 1376258, 0, 65538, 1376259, 0, 65538, 1376260, 0, 65538, 1376261, 0, 65538, 1376262, 0, 65538, 1376263, 0, 65538, 1376264, 0, 65538, 1376265, 0, 65538, 1376266, 0, 65538, 1376267, 0, 65538, 1376268, 0, 65538, 1376269, 0, 65538, 1376270, 0, 65538, 1376271, 0, 65538, 1376272, 0, 65538, 1376273, 0, 65538, 1376274, 0, 65538, 1376275, 0, 65538, 1376276, 0, 65538, 1376277, 0, 65538, 1376278, 0, 65538, 1376279, 0, 65538, 1376280, 0, 65538, 1376281, 0, 65538, 1376282, 0, 65538, 1376283, 0, 65538, 1376284, 0, 65538, 1376285, 0, 65538, 1376286, 0, 65538, 1376287, 0, 65539, 1376288, 0, 65537, 1507327, 0, 65539, 1441792, 0, 65537, 1441793, 0, 65538, 1441794, 0, 65538, 1441795, 0, 65538, 1441796, 0, 65538, 1441797, 0, 65538, 1441798, 0, 65538, 1441799, 0, 65538, 1441800, 0, 65538, 1441801, 0, 65538, 1441802, 0, 65538, 1441803, 0, 65538, 1441804, 0, 65538, 1441805, 0, 65538, 1441806, 0, 65538, 1441807, 0, 65538, 1441808, 0, 65538, 1441809, 0, 65538, 1441810, 0, 65538, 1441811, 0, 65538, 1441812, 0, 65538, 1441813, 0, 65538, 1441814, 0, 65538, 1441815, 0, 65538, 1441816, 0, 65538, 1441817, 0, 65538, 1441818, 0, 65538, 1441819, 0, 65538, 1441820, 0, 65538, 1441821, 0, 65538, 1441822, 0, 65538, 1441823, 0, 65539, 1441824, 0, 65537, 1572863, 0, 65539, 1507328, 0, 131073, 1507329, 0, 131074, 1507330, 0, 131074, 1507331, 0, 131074, 1507332, 0, 131074, 1507333, 0, 131074, 1507334, 0, 131074, 1507335, 0, 131074, 1507336, 0, 131074, 1507337, 0, 131074, 1507338, 0, 131074, 1507339, 0, 131074, 1507340, 0, 131074, 1507341, 0, 131074, 1507342, 0, 131074, 1507343, 0, 131074, 1507344, 0, 131074, 1507345, 0, 131074, 1507346, 0, 131074, 1507347, 0, 131074, 1507348, 0, 131074, 1507349, 0, 131074, 1507350, 0, 131074, 1507351, 0, 131074, 1507352, 0, 131074, 1507353, 0, 131074, 1507354, 0, 131074, 1507355, 0, 131074, 1507356, 0, 131074, 1507357, 0, 131074, 1507358, 0, 131074, 1507359, 0, 131075, 1507360, 0, 65537 ) + +[node name="Player" parent="NameEntry" instance=ExtResource( 10 )] +unique_name_in_owner = true +position = Vector2( 16, 160 ) +walk_speed = 100.0 +climb_speed = 78.0 + +[node name="Ladders" type="TileMap" parent="NameEntry"] +tile_set = ExtResource( 12 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 0, 0, 196609, 65536, 0, 196609, 131072, 0, 196609, 196608, 0, 196609, 262144, 0, 196609, 327680, 0, 196609, 393216, 0, 196609, 458752, 0, 196609, 524288, 0, 196609, 589824, 0, 196609, 655360, 0, 196609, 720896, 0, 196609, 786432, 0, 196609, 851968, 0, 196609, 917504, 0, 196609, 983040, 0, 196609, 1048576, 0, 196609, 1114112, 0, 196609, 1179648, 0, 196609, 1245184, 0, 196609 ) + +[node name="Letters" type="Node2D" parent="NameEntry"] + +[node name="LetterBlock1" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 32, 128 ) + +[node name="LetterBlock2" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 56, 128 ) +glyph = 1 + +[node name="LetterBlock3" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 80, 128 ) +glyph = 2 + +[node name="LetterBlock4" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 104, 128 ) +glyph = 3 + +[node name="LetterBlock5" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 128, 128 ) +glyph = 4 + +[node name="LetterBlock6" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 152, 128 ) +glyph = 5 + +[node name="LetterBlock7" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 176, 128 ) +glyph = 6 + +[node name="LetterBlock8" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 200, 128 ) +glyph = 7 + +[node name="LetterBlock27" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 224, 128 ) +glyph = 36 + +[node name="LetterBlock9" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 40, 72 ) +glyph = 8 + +[node name="LetterBlock10" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 64, 72 ) +glyph = 9 + +[node name="LetterBlock11" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 88, 72 ) +glyph = 10 + +[node name="LetterBlock12" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 112, 72 ) +glyph = 11 + +[node name="LetterBlock13" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 136, 72 ) +glyph = 12 + +[node name="LetterBlock14" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 160, 72 ) +glyph = 13 + +[node name="LetterBlock15" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 184, 72 ) +glyph = 14 + +[node name="LetterBlock16" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 208, 72 ) +glyph = 15 + +[node name="LetterBlock17" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 232, 72 ) +glyph = 16 + +[node name="LetterBlock18" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 40, 16 ) +glyph = 17 + +[node name="LetterBlock19" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 64, 16 ) +glyph = 18 + +[node name="LetterBlock20" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 88, 16 ) +glyph = 19 + +[node name="LetterBlock21" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 112, 16 ) +glyph = 20 + +[node name="LetterBlock22" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 136, 16 ) +glyph = 21 + +[node name="LetterBlock23" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 160, 16 ) +glyph = 22 + +[node name="LetterBlock24" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 184, 16 ) +glyph = 23 + +[node name="LetterBlock25" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 208, 16 ) +glyph = 24 + +[node name="LetterBlock26" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 232, 16 ) +glyph = 25 + +[node name="Ladder" parent="NameEntry" instance=ExtResource( 15 )] +scale = Vector2( 1, 20 ) +can_climb_left = false + +[node name="Exit" type="Node2D" parent="NameEntry"] +position = Vector2( 248, 148 ) + +[node name="Background" type="Sprite" parent="NameEntry/Exit"] +position = Vector2( 0, 5 ) +z_index = -1 +texture = ExtResource( 19 ) + +[node name="ExitSprite" type="Sprite" parent="NameEntry/Exit"] +unique_name_in_owner = true +material = ExtResource( 17 ) +texture = ExtResource( 14 ) +hframes = 4 + +[node name="Energy" type="Node2D" parent="NameEntry/Exit/ExitSprite"] +show_behind_parent = true + +[node name="Wave1" type="ColorRect" parent="NameEntry/Exit/ExitSprite/Energy"] +material = SubResource( 9 ) +margin_left = -7.0 +margin_top = -3.0 +margin_right = 7.0 +margin_bottom = 12.0 +color = Color( 0.396078, 1, 1, 1 ) + +[node name="Wave2" type="ColorRect" parent="NameEntry/Exit/ExitSprite/Energy"] +material = SubResource( 10 ) +margin_left = -7.0 +margin_top = -3.0 +margin_right = 7.0 +margin_bottom = 12.0 +color = Color( 0.345098, 0.74902, 0.878431, 1 ) + +[node name="Sparkles" type="CPUParticles2D" parent="NameEntry/Exit/ExitSprite/Energy"] +position = Vector2( 0, 12 ) +amount = 16 +lifetime = 2.0 +emission_shape = 2 +emission_rect_extents = Vector2( 6, 0 ) +direction = Vector2( 0, -1 ) +spread = 0.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 12.0 +damping = 4.0 +color_initial_ramp = SubResource( 11 ) + +[node name="DetectPlayer" type="Area2D" parent="NameEntry/Exit"] +z_index = -3 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="NameEntry/Exit/DetectPlayer"] +position = Vector2( 0, 11 ) +shape = SubResource( 12 ) + +[node name="Collision" type="StaticBody2D" parent="NameEntry/Exit" groups=["can_stain"]] + +[node name="ClosedCollision" type="CollisionShape2D" parent="NameEntry/Exit/Collision"] +unique_name_in_owner = true +position = Vector2( 0, 4.5 ) +shape = SubResource( 7 ) + +[node name="TopShape" type="CollisionShape2D" parent="NameEntry/Exit/Collision"] +position = Vector2( 0, -7.5 ) +shape = SubResource( 8 ) + +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Sweet" to="." method="_difficulty_selected"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Sweet" to="DifficultySelect/MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Sweet" to="." method="_set_difficulty" binds= [ 0 ]] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Sweet" to="DifficultySelect/MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Salty" to="." method="_difficulty_selected"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Salty" to="DifficultySelect/MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Salty" to="." method="_set_difficulty" binds= [ 1 ]] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Salty" to="DifficultySelect/MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Spicy" to="." method="_difficulty_selected"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Spicy" to="DifficultySelect/MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Spicy" to="." method="_set_difficulty" binds= [ 2 ]] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Spicy" to="DifficultySelect/MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Pungent" to="." method="_difficulty_selected"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Pungent" to="DifficultySelect/MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Pungent" to="." method="_set_difficulty" binds= [ 3 ]] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Pungent" to="DifficultySelect/MenuSounds" method="play_select_sound"] +[connection signal="area_entered" from="NameEntry/Exit/DetectPlayer" to="." method="_on_Exit_area_entered"] diff --git a/menus/file_select.gd b/menus/file_select.gd new file mode 100644 index 0000000..3eed580 --- /dev/null +++ b/menus/file_select.gd @@ -0,0 +1,34 @@ +extends Node + + +export var next_scene: PackedScene +var kill_mode = false +onready var description = $Description +onready var flavor_text = $FlavorText +onready var delete_background = $DeleteBackground + +func _ready() -> void: + Fade.fade_in(Options.transition_speed_secs) + $SelectFile1.call_deferred("grab_focus") + Game.current_palette = "default" + + +func _on_file_loaded() -> void: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = next_scene.instance() + +func set_kill_mode(value): + delete_background.visible = value + kill_mode = value + if value == true: + description.text = "KILL MODE" + flavor_text.text = "Eviscerate an old friend" + else: + description.text = "Select your destiny" + flavor_text.text = "Adventure awaits" + + + +func play_confirm_sound(): + pass # Replace with function body. diff --git a/menus/file_select.tscn b/menus/file_select.tscn new file mode 100644 index 0000000..e47036a --- /dev/null +++ b/menus/file_select.tscn @@ -0,0 +1,187 @@ +[gd_scene load_steps=18 format=2] + +[ext_resource path="res://menus/file_select_panel.tscn" type="PackedScene" id=1] +[ext_resource path="res://menus/level_select_scholar.tscn" type="PackedScene" id=2] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=3] +[ext_resource path="res://ui/theme.tres" type="Theme" id=4] +[ext_resource path="res://menus/back_button.tscn" type="PackedScene" id=5] +[ext_resource path="res://graphics/hud/delete_dim.png" type="Texture" id=6] +[ext_resource path="res://graphics/hud/delete.png" type="Texture" id=7] +[ext_resource path="res://graphics/borders/skaborder.png" type="Texture" id=8] +[ext_resource path="res://graphics/hud/file_select_arrow.png" type="Texture" id=9] +[ext_resource path="res://menus/file_select.gd" type="Script" id=10] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=11] +[ext_resource path="res://menus/DeleteButton.gd" type="Script" id=12] +[ext_resource path="res://menus/main_menu.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=14] + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 11 ) +shader_param/color_1 = Color( 0.2, 0.294118, 1, 1 ) +shader_param/color_2 = Color( 0, 0.0352941, 0.329412, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 0, 16 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform2D( 1, 1, 2, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 11 ) +shader_param/color_1 = Color( 0.960784, 0.2, 0.258824, 1 ) +shader_param/color_2 = Color( 0.286275, 0.0745098, 0.12549, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 32, 1 ) +shader_param/cycle_speed = Vector2( -8, 32 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform2D( 1, 1.582, 1, 2, 0, 0 ) + +[sub_resource type="SpriteFrames" id=4] +animations = [ { +"frames": [ ExtResource( 7 ), ExtResource( 6 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[node name="FileSelect" type="Node"] +script = ExtResource( 10 ) +next_scene = ExtResource( 2 ) + +[node name="TextureRect2" type="TextureRect" parent="."] +modulate = Color( 0, 0.109804, 1, 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 8 ) +expand = true +stretch_mode = 2 + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 2 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="DeleteBackground" type="ColorRect" parent="."] +visible = false +material = SubResource( 3 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="Panel" parent="." instance=ExtResource( 1 )] +margin_left = 12.0 +margin_top = 48.0 +margin_right = 84.0 +margin_bottom = 136.0 + +[node name="Panel2" parent="." instance=ExtResource( 1 )] +margin_left = 92.0 +margin_top = 48.0 +margin_right = 164.0 +margin_bottom = 136.0 +number = 2 + +[node name="Panel3" parent="." instance=ExtResource( 1 )] +margin_left = 172.0 +margin_top = 48.0 +margin_right = 244.0 +margin_bottom = 136.0 +number = 3 + +[node name="SelectFile1" type="TextureButton" parent="."] +material = ExtResource( 3 ) +margin_left = 12.0 +margin_top = 138.0 +margin_right = 84.0 +margin_bottom = 146.0 +focus_neighbour_left = NodePath("../SelectFile3") +focus_neighbour_right = NodePath("../SelectFile2") +focus_neighbour_bottom = NodePath("../Back") +texture_focused = ExtResource( 9 ) +expand = true +stretch_mode = 3 + +[node name="SelectFile2" type="TextureButton" parent="."] +material = ExtResource( 3 ) +margin_left = 92.0 +margin_top = 138.0 +margin_right = 164.0 +margin_bottom = 146.0 +focus_neighbour_left = NodePath("../SelectFile1") +focus_neighbour_right = NodePath("../SelectFile3") +focus_neighbour_bottom = NodePath("../Back") +texture_focused = ExtResource( 9 ) +expand = true +stretch_mode = 3 + +[node name="SelectFile3" type="TextureButton" parent="."] +material = ExtResource( 3 ) +margin_left = 172.0 +margin_top = 138.0 +margin_right = 244.0 +margin_bottom = 146.0 +focus_neighbour_left = NodePath("../SelectFile2") +focus_neighbour_right = NodePath("../SelectFile1") +focus_neighbour_bottom = NodePath("../Back") +texture_focused = ExtResource( 9 ) +expand = true +stretch_mode = 3 + +[node name="Back" parent="." instance=ExtResource( 5 )] +margin_left = 8.0 +margin_top = 144.0 +margin_right = 60.0 +margin_bottom = 177.0 +focus_neighbour_top = NodePath("../SelectFile1") +focus_neighbour_right = NodePath("../DeleteButton") +next_scene = ExtResource( 13 ) + +[node name="Description" type="Label" parent="."] +material = ExtResource( 3 ) +margin_top = 8.0 +margin_right = 256.0 +margin_bottom = 22.0 +theme = ExtResource( 4 ) +text = "Select your destiny" +align = 1 + +[node name="DeleteButton" type="TextureButton" parent="."] +margin_left = 212.0 +margin_top = 144.0 +margin_right = 237.0 +margin_bottom = 178.0 +focus_neighbour_left = NodePath("../Back") +focus_neighbour_top = NodePath("../SelectFile1") +texture_normal = ExtResource( 7 ) +script = ExtResource( 12 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="DeleteButton"] +position = Vector2( 13, 17 ) +frames = SubResource( 4 ) + +[node name="FlavorText" type="Label" parent="."] +material = ExtResource( 3 ) +margin_left = 40.0 +margin_top = 152.0 +margin_right = 208.0 +margin_bottom = 168.0 +theme = ExtResource( 4 ) +text = "Adventure awaits" +align = 1 + +[node name="MenuSounds" parent="." instance=ExtResource( 14 )] + +[connection signal="file_loaded" from="Panel" to="." method="_on_file_loaded"] +[connection signal="file_loaded" from="Panel2" to="." method="_on_file_loaded"] +[connection signal="file_loaded" from="Panel3" to="." method="_on_file_loaded"] +[connection signal="button_down" from="SelectFile1" to="Panel" method="select"] +[connection signal="button_down" from="SelectFile1" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="SelectFile1" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="SelectFile2" to="Panel2" method="select"] +[connection signal="button_down" from="SelectFile2" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="SelectFile2" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="SelectFile3" to="Panel3" method="select"] +[connection signal="button_down" from="SelectFile3" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="SelectFile3" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Back" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Back" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="DeleteButton" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="DeleteButton" to="MenuSounds" method="play_select_sound"] diff --git a/menus/file_select_panel.gd b/menus/file_select_panel.gd new file mode 100644 index 0000000..49e29ea --- /dev/null +++ b/menus/file_select_panel.gd @@ -0,0 +1,83 @@ +extends Panel + + +signal file_loaded() + +const FileCreate = preload("res://menus/file_create.tscn") + +export var number = 1 + +var file: Save.SaveFile = null + +onready var splatter = $DeathSplatter + +func _ready(): + $FileNumber.text = "FILE%d" % number + refresh() + + +func select() -> void: + if get_parent().kill_mode == false: + # if a file exists, load and play it! + if file: + # set current file and difficulty + Save.current_file = file + Game.difficulty = file.difficulty + Game.current_palette = file.palette + # update last-played file for continue button + Options.last_file = number + Options.save_options() + # let file select scene know a file has been loaded + emit_signal("file_loaded") + # empty file, so go to file creation screen + else: + # wait for fade + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + # create new file and give it to the file create screen + var file_create = FileCreate.instance() + file_create.file = Save.SaveFile.new("user://file%d.pr" % number) + SceneManager.current_scene = file_create + else: + #Delete file + if file: + var dir = Directory.new() + dir.remove(file.file_path) + splatter.emitting = true + Audio.play_sound(Audio.a_die,Audio.ac_die) + file = null + refresh() + + +func refresh(): + # check if the file exists + if File.new().file_exists("user://file%d.pr" % number): + # load file and fill in information + file = Save.load_file("user://file%d.pr" % number) + $"%Name".text = file.name + $"%ShardCounter".text = "%02d" % file.get_total_shards() + $"%KeyCounter".text = "%03d" % file.get_total_keys() + $"%DeathCounter".text = "%04d" % file.get_total_deaths() + $"%TimeCounter".text = "%02d:%02d" % [file.play_time / 3600.0, fmod(file.play_time / 60.0, 60.0)] + $"%Difficulty".text = Game.DIFFICULTY_NAMES[file.difficulty] + var palette = load("res://graphics/player/palettes/%s.tex" % file.palette) + $"%Palette".material.set_shader_param("palette", palette) + if file.palette == "super_player": + $"%Sparkles".visible = true + else: + $"%Sparkles".visible = false + + $"%MoriMarkGameComplete".visible = false + $"%MoriMark100Complete".visible = false + $"%MoriMarkNoDeath".visible = false + if file.levels["boss3"].completed: + $"%MoriMarkGameComplete".visible = true + if file.get_total_shards() >= 72: + $"%MoriMark100Complete".visible = true + if file.get_total_deaths() <= 0: + $"%MoriMarkNoDeath".visible = true + + else: + file = null + $FileExists.visible = false + $FileDoesNotExist.visible = true diff --git a/menus/file_select_panel.tscn b/menus/file_select_panel.tscn new file mode 100644 index 0000000..181d656 --- /dev/null +++ b/menus/file_select_panel.tscn @@ -0,0 +1,186 @@ +[gd_scene load_steps=20 format=2] + +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=2] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=3] +[ext_resource path="res://ui/theme.tres" type="Theme" id=4] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=5] +[ext_resource path="res://menus/file_select_panel.gd" type="Script" id=6] +[ext_resource path="res://graphics/hud/deaths_head.png" type="Texture" id=7] +[ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=8] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=9] +[ext_resource path="res://objects/enemy/death_particles.tscn" type="PackedScene" id=10] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=11] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=12] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=13] +[ext_resource path="res://graphics/hud/mori_mark_100_complete.png" type="Texture" id=14] +[ext_resource path="res://graphics/hud/mori_mark_game_complete.png" type="Texture" id=15] +[ext_resource path="res://graphics/hud/mori_mark_no_death.png" type="Texture" id=16] + +[sub_resource type="ShaderMaterial" id=1] +resource_local_to_scene = true +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 9 ) + +[sub_resource type="Curve" id=2] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 13 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Panel" type="Panel"] +margin_right = 72.0 +margin_bottom = 88.0 +theme = ExtResource( 4 ) +script = ExtResource( 6 ) + +[node name="FileNumber" type="Label" parent="."] +material = ExtResource( 2 ) +margin_top = -10.0 +margin_right = 72.0 +theme = ExtResource( 4 ) +text = "file1" +align = 1 + +[node name="FileExists" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Name" type="Label" parent="FileExists"] +unique_name_in_owner = true +margin_left = 8.0 +margin_top = 4.0 +margin_right = 64.0 +margin_bottom = 14.0 +text = "SG" +align = 1 + +[node name="TimeCounter" type="Label" parent="FileExists"] +unique_name_in_owner = true +margin_left = 3.0 +margin_top = 58.0 +margin_right = 69.0 +margin_bottom = 68.0 +text = "00:00" +align = 1 + +[node name="DeathCounter" type="Label" parent="FileExists"] +unique_name_in_owner = true +margin_left = 25.0 +margin_top = 47.0 +margin_right = 56.0 +margin_bottom = 57.0 +text = "0000" + +[node name="Palette" type="TextureRect" parent="FileExists"] +unique_name_in_owner = true +material = SubResource( 1 ) +margin_left = 8.0 +margin_top = 16.0 +margin_right = 28.0 +margin_bottom = 48.0 +texture = ExtResource( 8 ) +stretch_mode = 4 + +[node name="Sparkles" type="CPUParticles2D" parent="FileExists/Palette"] +unique_name_in_owner = true +visible = false +light_mask = 0 +position = Vector2( 10, 16 ) +amount = 2 +lifetime = 2.0 +texture = ExtResource( 12 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 10 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.972549, 0.52549, 1 ) +script = ExtResource( 11 ) + +[node name="ShardCounter" type="Label" parent="FileExists"] +unique_name_in_owner = true +margin_left = 43.0 +margin_top = 27.0 +margin_right = 67.0 +margin_bottom = 37.0 +text = "00" + +[node name="KeyCounter" type="Label" parent="FileExists"] +unique_name_in_owner = true +visible = false +margin_left = 43.0 +margin_top = 33.0 +margin_right = 64.0 +margin_bottom = 43.0 +text = "000" + +[node name="Shard" parent="FileExists" instance=ExtResource( 5 )] +position = Vector2( 32, 29 ) + +[node name="Key" parent="FileExists" instance=ExtResource( 3 )] +visible = false +position = Vector2( 32, 34 ) + +[node name="DeathsHead" type="Sprite" parent="FileExists"] +position = Vector2( 21, 52 ) +texture = ExtResource( 7 ) + +[node name="Difficulty" type="Label" parent="FileExists"] +unique_name_in_owner = true +margin_left = 8.0 +margin_top = 72.0 +margin_right = 65.0 +margin_bottom = 82.0 +text = "Spicy" +align = 1 + +[node name="FileDoesNotExist" type="Control" parent="."] +visible = false + +[node name="Label" type="Label" parent="FileDoesNotExist"] +margin_left = 3.0 +margin_top = 26.0 +margin_right = 69.0 +margin_bottom = 36.0 +text = "Empty!!!" +align = 1 + +[node name="DeathSplatter" parent="." instance=ExtResource( 10 )] +position = Vector2( 36, 47 ) +amount = 64 +lifetime = 1.0 +speed_scale = 3.0 +explosiveness = 1.0 +randomness = 0.34 +initial_velocity = 100.0 +scale_amount = 2.0 +spray_ammount = 0 + +[node name="MoriMarkGameComplete" type="Sprite" parent="."] +unique_name_in_owner = true +visible = false +material = SubResource( 3 ) +position = Vector2( 61, 57 ) +texture = ExtResource( 15 ) + +[node name="MoriMark100Complete" type="Sprite" parent="."] +unique_name_in_owner = true +visible = false +material = SubResource( 3 ) +position = Vector2( 61, 57 ) +texture = ExtResource( 14 ) + +[node name="MoriMarkNoDeath" type="Sprite" parent="."] +unique_name_in_owner = true +visible = false +material = SubResource( 3 ) +position = Vector2( 61, 57 ) +texture = ExtResource( 16 ) diff --git a/menus/game_over.gd b/menus/game_over.gd new file mode 100644 index 0000000..24c85f4 --- /dev/null +++ b/menus/game_over.gd @@ -0,0 +1,26 @@ +extends CanvasLayer + +onready var retry_button = $Panel/Retry +onready var exit_button = $Panel/Exit + +# Called when the node enters the scene tree for the first time. +func _ready(): + Fade.fade_in(Options.transition_speed_secs) + get_tree().paused = true + retry_button.grab_focus() + Audio.ac_music.stream_paused = false + Audio.play_music(load("res://audio/music/74(game_over).ogg")) + +func _on_Exit_button_down(): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + get_tree().paused = false + SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() + + +func _on_Retry_button_down(): + get_tree().paused = true + if Game.current_level == 11: + Game.change_map(load("res://maps/boss/boss3_arena.tscn")) + else: + Game.restart_level() diff --git a/menus/game_over.tscn b/menus/game_over.tscn new file mode 100644 index 0000000..5339600 --- /dev/null +++ b/menus/game_over.tscn @@ -0,0 +1,146 @@ +[gd_scene load_steps=16 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/hud/3d_text.tscn" type="PackedScene" id=2] +[ext_resource path="res://ui/theme.tres" type="Theme" id=3] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=5] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=6] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=7] +[ext_resource path="res://menus/game_over.gd" type="Script" id=8] +[ext_resource path="res://shaders/wibble_border.gdshader" type="Shader" id=9] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.305882, 0.305882, 0.305882, 1 ) +shader_param/color_2 = Color( 0.223529, 0.223529, 0.223529, 1 ) +shader_param/checker_size = Vector2( 16, 8 ) +shader_param/pan_speed = Vector2( 16, 0 ) +shader_param/cycle_speed = Vector2( 1, 0 ) +shader_param/cycle_alternation = Vector2( 16, 0 ) +shader_param/uv_transform = Transform2D( 1, 1, 0, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=11] +shader = ExtResource( 6 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 1 ) +shader_param/offset = Vector2( 0, 1 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=14] +shader = ExtResource( 9 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 1 ) +shader_param/offset = Vector2( 0, 1 ) +shader_param/delay = Vector2( 0, 0 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true + +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 6 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=12] +shader = ExtResource( 9 ) +shader_param/speed = Vector2( 2, 0 ) +shader_param/ammount = Vector2( 4, 0 ) +shader_param/offset = Vector2( 2, 0 ) +shader_param/delay = Vector2( 0, 0 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true + +[sub_resource type="ShaderMaterial" id=13] +shader = ExtResource( 9 ) +shader_param/speed = Vector2( 0, 0 ) +shader_param/ammount = Vector2( 0, 0 ) +shader_param/offset = Vector2( 0, 1 ) +shader_param/delay = Vector2( 0, 0 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true + +[sub_resource type="SpatialMaterial" id=9] +albedo_color = Color( 0.901961, 0.133333, 0.133333, 1 ) +metallic = 0.35 + +[node name="GameOver" type="CanvasLayer"] +pause_mode = 2 +layer = 110 +script = ExtResource( 8 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="Panel" type="Panel" parent="."] +material = SubResource( 11 ) +margin_left = 72.0 +margin_top = 96.0 +margin_right = 184.0 +margin_bottom = 136.0 +theme = ExtResource( 3 ) +__meta__ = { +"_edit_group_": true +} + +[node name="Label" type="Label" parent="Panel"] +material = SubResource( 14 ) +margin_left = 16.0 +margin_top = 8.0 +margin_right = 93.0 +margin_bottom = 44.0 +text = "RETRY LEVEL +EXIT TO MAP +" + +[node name="Retry" type="TextureButton" parent="Panel"] +material = SubResource( 10 ) +margin_left = 8.0 +margin_top = 8.0 +margin_right = 16.0 +margin_bottom = 16.0 +texture_focused = ExtResource( 5 ) + +[node name="Exit" type="TextureButton" parent="Panel"] +material = SubResource( 10 ) +margin_left = 8.0 +margin_top = 21.0 +margin_right = 16.0 +margin_bottom = 29.0 +texture_focused = ExtResource( 5 ) + +[node name="MenuSounds" parent="." instance=ExtResource( 7 )] + +[node name="Label" type="Label" parent="."] +material = SubResource( 12 ) +margin_top = 51.0 +margin_right = 256.0 +margin_bottom = 87.0 +theme = ExtResource( 3 ) +text = "In reality, the game is +only over when +it ceases to be played." +align = 1 + +[node name="Label2" type="Label" parent="."] +material = SubResource( 13 ) +margin_top = 152.0 +margin_right = 256.0 +margin_bottom = 175.0 +theme = ExtResource( 3 ) +text = "The only way to improve is to learn +from mistakes" +align = 1 + +[node name="3DText" parent="." instance=ExtResource( 2 )] +text_material = SubResource( 9 ) +anim = "game over" + +[connection signal="button_down" from="Panel/Retry" to="." method="_on_Retry_button_down"] +[connection signal="button_down" from="Panel/Retry" to="3DText" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/Retry" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/Exit" to="." method="_on_Exit_button_down"] +[connection signal="button_down" from="Panel/Exit" to="3DText" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/Exit" to="MenuSounds" method="play_select_sound"] diff --git a/menus/level_select_scholar.gd b/menus/level_select_scholar.gd new file mode 100644 index 0000000..6c1c13f --- /dev/null +++ b/menus/level_select_scholar.gd @@ -0,0 +1,289 @@ +extends Control + +export var travel_time: float = 1.0 +export var can_menu: bool = true + +var selected_level: int = 0 +var made_selection: bool = false +var selected_shard: int = 0 +var tween: SceneTreeTween = null +var hop_tween: SceneTreeTween = null +var boss_shown: bool = false +var starting_level = false + +onready var level_path: Path2D = $LevelPath +onready var player_position: PathFollow2D = $"%PlayerPosition" +onready var player_sprite: Sprite = $"%PlayerSprite" +onready var back_arrow: TextureRect = $"%BackArrow" +onready var level_title: Label = $"%LevelTitle" +onready var forward_arrow: TextureRect = $"%ForwardArrow" +onready var in_cave: PathFollow2D = $"%InCave" +onready var out_cave: PathFollow2D = $"%OutCave" +onready var score_any: Label = $"%ScoreAny" +onready var time_any: Label = $"%TimeAny" +onready var score_100: Label = $"%Score100" +onready var time_100: Label = $"%Time100" +onready var boss_time: Label = $"%BossTime" +onready var filled_shards: Node2D = $"%FilledShards" +onready var shard_title: Label = $"%ShardTitle" +onready var shard_arrow: Sprite = $"%ShardArrow" +onready var animation_player: AnimationPlayer = $AnimationPlayer +onready var boss_block: TextureRect = $"%BossBlock" +onready var shards_block: HBoxContainer = $"%ShardsBlock" +onready var shards_needed: Label = $"%ShardsNeeded" +onready var world_title: Label = $"%WorldTitle" +onready var options_screen = $OptionsScreen + +const music = preload("res://audio/music/vitreous_squares.ogg") + +func _ready() -> void: + if Audio.ac_music.get_stream() != music: + Audio.play_music(music) + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + player_sprite.material.set_shader_param("palette", palette) + if Game.current_palette == "super_player": + $"%Sparkles".visible = true + $ShardCount.text = "%02d" % Save.current_file.get_total_shards() + + var save := Save.current_file + + if save.levels["boss3"].completed: + $"%Whirlpool".visible = true + $"%Whirlpool".play("default") + else: + $"%Whirlpool".visible = false + + Fade.fade_in(Options.transition_speed_secs) + # set initial offset + selected_level = Game.current_level + var target_level = level_path.get_node(LevelData.levels[selected_level].save_id) + if target_level != null: + player_position.offset = target_level.offset + _select_level(selected_level) + call_deferred("grab_focus") + +#func _input(event: InputEvent) -> void: +# # load selected map +# if Input.is_action_just_pressed("ui_accept"): +# Game.current_level = selected_level +# Game.change_map(LevelData.levels[selected_level].scene) +# elif Input.is_action_just_pressed("ui_right"): +# _select_level(int(clamp(selected_level + 1, 0, LevelData.levels.size() - 1))) +# elif Input.is_action_just_pressed("ui_left"): +# _select_level(int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1))) + +#func _process(delta: float) -> void: +# # load selected map +# if Input.is_action_just_pressed("ui_accept"): +# Game.current_level = selected_level +# Game.change_map(LevelData.levels[selected_level].scene) +# elif Input.is_action_just_pressed("ui_right"): +# _select_level(int(clamp(selected_level + 1, 0, LevelData.levels.size() - 1))) +# elif Input.is_action_just_pressed("ui_left"): +# _select_level(int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1))) + +func _process(delta: float) -> void: + forward_arrow.visible = true + boss_block.visible = false + shards_block.visible = false + if selected_level + 1 < LevelData.levels.size(): + var save := Save.current_file + var level: LevelEntry = LevelData.levels[selected_level + 1] + if save.get_total_shards() < level.shards_required: + forward_arrow.visible = false + boss_block.visible = false + shards_block.visible = true + shards_needed.text = str(level.shards_required) + if level.boss_required != "" and not save.levels[level.boss_required].completed: + forward_arrow.visible = false + shards_block.visible = false + boss_block.visible = true + # make SG disappear inside of cave + if player_position.offset >= in_cave.offset and player_position.offset <= out_cave.offset: + player_sprite.visible = false + else: + player_sprite.visible = true + + +func _input(event: InputEvent) -> void: +# if event.is_action_pressed("ui_cancel") and $"%MenuPopup".rect_scale.y >= 1.0: +# animation_player.play("hide_menu") + pass + +func _gui_input(event: InputEvent) -> void: + if event.is_action_pressed("ui_cancel") or event.is_action_pressed("pause") && $"%MenuPopup".visible == false: + if can_menu: + animation_player.play("show_menu") + if not made_selection: # player is walking around + if event.is_action_pressed("ui_accept"): + _update_stats() + made_selection = true + elif event.is_action_pressed("ui_right"): + var level = int(clamp(selected_level + 1, 0, LevelData.levels.size() - 1)) + if _can_travel(level): + _select_level(level) + elif event.is_action_pressed("ui_left"): + var level = int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1)) + if _can_travel(level): + _select_level(level) + else: # player has selected level + if event.is_action_pressed("ui_start") or event.is_action_pressed("ui_accept"): + starting_level = true + $"%MenuPopup".rect_position.y = 9001 + Game.current_level = selected_level + Game.change_map(LevelData.levels[selected_level].scene) + elif event.is_action_pressed("ui_cancel"): + if boss_shown: + animation_player.play("hide_boss") + boss_shown = false + else: + animation_player.play("hide_stats") + made_selection = false + elif event.is_action_pressed("ui_right"): + selected_shard = posmod(selected_shard + 1, 8) + shard_title.text = LevelData.levels[selected_level].shard_titles[selected_shard] + shard_arrow.position.x = filled_shards.get_child(selected_shard).position.x + elif event.is_action_pressed("ui_left"): + selected_shard = posmod(selected_shard - 1, 8) + shard_title.text = LevelData.levels[selected_level].shard_titles[selected_shard] + shard_arrow.position.x = filled_shards.get_child(selected_shard).position.x + elif event.is_action_pressed("ui_down"): + var level = int(clamp(selected_level + 1, 0, LevelData.levels.size() - 1)) + if _can_travel(level): + _select_level(level) + _update_stats(false) + elif event.is_action_pressed("ui_up"): + var level = int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1)) + if _can_travel(level): + _select_level(level) + _update_stats(false) + +func _select_level(level_id: int) -> void: + var level = LevelData.levels[level_id] + selected_level = level_id + Game.current_level = selected_level + # hide arrows at edges of leve set + if level_id == 0: + back_arrow.modulate.a = 0.0 + else: + back_arrow.modulate.a = 1.0 + if level_id == LevelData.levels.size() - 1: + forward_arrow.modulate.a = 0.0 + else: + forward_arrow.modulate.a = 1.0 + # set text + level_title.text = level.title + #set world name + if selected_level < 3: world_title.text = "Garden of love:\nremnants of nature's beauty" + if selected_level == 3: world_title.text = "Artificial life:\namalgam, stranger to the gods" + if selected_level > 3 && selected_level < 7: world_title.text = "Harsh Reality:\nHappiness through Hardship" + if selected_level == 7: world_title.text = "Dr.Intelli the Vengeful monster:\nfriend to no one, cold metal prison" + if selected_level > 7 && selected_level < 11: world_title.text = "Artificial world:\nend man-made suffering" + if selected_level == 11: world_title.text = "This is it SG...\nchange the future, we believe in you" + if selected_level > 11: world_title.text = "Great Job!\nwelcome to bonus land!" + # initiate animation + _travel_to_level(level.save_id) + +func _can_travel(index: int) -> bool: + var save := Save.current_file + var level: LevelEntry = LevelData.levels[index] + if save.get_total_shards() < level.shards_required: + return false + if level.boss_required != "": + return save.levels[level.boss_required].completed + return true + +func _travel_to_level(level_name: String) -> void: + # get path offset of target level + var target_level = level_path.get_node(level_name) + if target_level != null: + if target_level.offset < player_position.offset: + player_sprite.flip_h = true + else: + player_sprite.flip_h = false + # kill existing tweens if exist + if tween != null: + tween.kill() + if hop_tween != null: + hop_tween.kill() + player_sprite.position.y = -2.0 + + # hopping animation + hop_tween = create_tween().set_loops() + hop_tween.tween_property(player_sprite, "position:y", -4.0, 0.0) + hop_tween.tween_interval(0.1) + hop_tween.tween_property(player_sprite, "position:y", -2.0, 0.0) + hop_tween.tween_interval(0.1) + + # travel animation + tween = create_tween() + # go to target offset + tween.tween_property(player_position, "offset", target_level.offset, travel_time) + # kill other animation + tween.tween_callback(hop_tween, "kill") + tween.tween_property(player_sprite, "position:y", -2.0, 0.0) + +func _update_stats(popup: bool = true) -> void: + # fill in level panel information + var save_id = LevelData.levels[selected_level].save_id + var save_data: Save.LevelSaveData = Save.current_file.levels[save_id] + if LevelData.levels[selected_level].boss: + boss_time.text = Game.format_time(save_data.time_any) + match selected_level: + 3: + $"%PressStartBoss".text = "Press Start To Fight!" + $"%BossFlavorText".text = "Swiftest Slay" + 7: + $"%PressStartBoss".text = "Press Start To Fight!" + $"%BossFlavorText".text = "Speediest Smashing" + 11: + $"%PressStartBoss".text = "Press Start To Change The Future!" + $"%BossFlavorText".text = "Fastest Future" + if popup: + animation_player.play("show_boss") + elif not boss_shown: + $AuxPlayer.play("hide_stats") + animation_player.play("show_boss") + boss_shown = true + else: + score_any.text = "%05d" % save_data.score_any + time_any.text = Game.format_time(save_data.time_any) + score_100.text = "%05d" % save_data.score_100 + time_100.text = Game.format_time(save_data.time_100) + var shards = filled_shards.get_children() + for i in 8: + shards[i].visible = save_data.shards_collected[i] + selected_shard = 0 + shard_title.text = LevelData.levels[selected_level].shard_titles[selected_shard] + shard_arrow.position.x = filled_shards.get_child(selected_shard).position.x + if popup: + animation_player.play("show_stats") + elif boss_shown: + $AuxPlayer.play("hide_boss") + animation_player.play("show_stats") + boss_shown = false + + +func _on_StayHere_pressed() -> void: + animation_player.play("hide_exit") + + +func _on_ExitMenu_pressed() -> void: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/main_menu.tscn").instance() + + +func _on_PalettesButton_button_down() -> void: + SceneManager.current_scene = load("res://menus/palette_select.tscn").instance() + +func _on_OptionsScreen_exit(): + options_screen.visible = false + $"%OptionsButton".grab_focus() + +func _on_OptionsButton_button_down(): + options_screen.visible = true + options_screen.focus() + +func _on_ResumeButton_button_down(): + $MenuSounds.can_play = false diff --git a/menus/level_select_scholar.tscn b/menus/level_select_scholar.tscn new file mode 100644 index 0000000..d7c178b --- /dev/null +++ b/menus/level_select_scholar.tscn @@ -0,0 +1,1728 @@ +[gd_scene load_steps=56 format=2] + +[ext_resource path="res://menus/level_select_scholar.gd" type="Script" id=1] +[ext_resource path="res://graphics/level_select/world_map.png" type="Texture" id=2] +[ext_resource path="res://graphics/level_select/small_sg.png" type="Texture" id=3] +[ext_resource path="res://ui/theme.tres" type="Theme" id=4] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=5] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=7] +[ext_resource path="res://graphics/hud/deaths_head.png" type="Texture" id=8] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=9] +[ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=10] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=11] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=12] +[ext_resource path="res://graphics/level_select/wave_particle.png" type="Texture" id=13] +[ext_resource path="res://graphics/hud/levelselect_arrow.png" type="Texture" id=14] +[ext_resource path="res://graphics/level_select/whirlpool.png" type="Texture" id=15] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=16] +[ext_resource path="res://shaders/recolor.tres" type="Shader" id=17] +[ext_resource path="res://objects/hud/options_screen_scholar.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=19] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=20] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=21] +[ext_resource path="res://graphics/hud/gamepad_buttons.png" type="Texture" id=22] +[ext_resource path="res://scripts/show_button.gd" type="Script" id=23] + +[sub_resource type="AtlasTexture" id=33] +atlas = ExtResource( 15 ) +region = Rect2( 0, 0, 48, 48 ) + +[sub_resource type="AtlasTexture" id=34] +atlas = ExtResource( 15 ) +region = Rect2( 48, 0, 48, 48 ) + +[sub_resource type="AtlasTexture" id=35] +atlas = ExtResource( 15 ) +region = Rect2( 96, 0, 48, 48 ) + +[sub_resource type="AtlasTexture" id=36] +atlas = ExtResource( 15 ) +region = Rect2( 144, 0, 48, 48 ) + +[sub_resource type="SpriteFrames" id=32] +animations = [ { +"frames": [ SubResource( 33 ), SubResource( 34 ), SubResource( 35 ), SubResource( 36 ) ], +"loop": true, +"name": "default", +"speed": 8.0 +} ] + +[sub_resource type="CanvasItemMaterial" id=9] +particles_animation = true +particles_anim_h_frames = 9 +particles_anim_v_frames = 1 +particles_anim_loop = false + +[sub_resource type="Curve2D" id=1] +_data = { +"points": PoolVector2Array( -2.9375, -8.1875, 2.9375, 8.1875, 61, 140, -4.4375, -0.0625, 4.4375, 0.0625, 78, 149, -4.15425, 1.32583, 4.15425, -1.32583, 96, 148, -1.65424, 3.52941, 1.65424, -3.52941, 112, 142, -1.88775, 1.4748, 1.88775, -1.4748, 113, 134, 0, 0, 0, 0, 119, 134, -1.08543, 0.828444, 1.08543, -0.828444, 125, 134, 2.83044, 1.16526, -2.83044, -1.16526, 125, 128, -0.794597, 4.50272, 0.794597, -4.50272, 123, 106, -4.30959, 1.47157, 4.30959, -1.47157, 130, 93, -11.05, -1.311, 11.05, 1.311, 141, 96, -1.31102, 2.24746, 1.31102, -2.24746, 155, 99, -2.22725, 4.12041, 2.22725, -4.12041, 155, 86, -4.89994, 0, 4.89994, 0, 163, 77, 0, -4.73004, 0, 4.73004, 185, 92, 0, -4.51982, 0, 4.51982, 177, 100, -3.88915, 0.630672, 3.88915, -0.630672, 185, 107, -0.630672, -4.62493, 0.630672, 4.62493, 192, 118, 1.05112, -1.99713, -1.05112, 1.99713, 190, 128, 2.6278, -0.420448, -2.6278, 0.420448, 184, 132, 1.78381, -1.78381, -1.78381, 1.78381, 175, 132, -6.30672, -0.210224, 6.30672, 0.210224, 181, 137, -0.225119, 1.75324, 0.225119, -1.75324, 204, 130, -8.92331, -2.0232, 5.373, 1.21823, 212, 119, 4.62446, -6.34857, -4.62446, 6.34857, 202, 143, 4.51982, -0.420448, -4.51982, 0.420448, 174, 154, 4.83515, 0.315336, -4.83515, -0.315336, 152, 154, 4.60818, 2.75004, -4.60818, -2.75004, 136, 149, 3.67496, 4.00905, -3.67496, -4.00905, 127, 142, 3.95539, -2.40938, -3.95539, 2.40938, 123, 128, 4.56378, -0.496063, -4.56378, 0.496063, 109, 124, 1.78583, -5.5559, -1.78583, 5.5559, 102, 131, 6.15118, -3.86929, -6.15118, 3.86929, 96, 140, 5.5559, 0.694488, -5.5559, -0.694488, 75, 142, 0, 0, 0, 0, 62, 130 ) +} + +[sub_resource type="ShaderMaterial" id=15] +shader = ExtResource( 17 ) +shader_param/palette = ExtResource( 16 ) + +[sub_resource type="Curve" id=27] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 7 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 7 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 9 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 9 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Animation" id=6] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("LevelStats:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("LevelStats:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ExitPopup:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ExitPopup:rect_scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 0.011 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("MenuPopup:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("MenuPopup:rect_scale") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/6/type = "value" +tracks/6/path = NodePath(".:can_menu") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("BossCenter:rect_scale") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 0.04 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("BossCenter:visible") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=16] +resource_name = "hide_boss" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("BossCenter:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("BossCenter:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.04 ), Vector2( 0, 0.04 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:can_menu") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=11] +resource_name = "hide_exit" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("ExitPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExitPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.07 ), Vector2( 0, 0.07 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("MenuPopup/PanelContainer/VBoxContainer/Menu/MenuButton") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} +tracks/3/type = "method" +tracks/3/path = NodePath("ExitPopup") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( ), +"transitions": PoolRealArray( ), +"values": [ ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:can_menu") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=13] +resource_name = "hide_menu" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("MenuPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("MenuPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.035 ), Vector2( 1e-05, 0.035 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:can_menu") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=8] +resource_name = "hide_stats" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("LevelStats:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("LevelStats:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.02 ), Vector2( 0, 0.02 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:can_menu") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=17] +resource_name = "show_boss" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("BossCenter:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("BossCenter:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0.04 ), Vector2( 1, 0.04 ), Vector2( 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:can_menu") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=12] +resource_name = "show_exit" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("ExitPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExitPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0.07 ), Vector2( 1, 0.07 ), Vector2( 1, 1 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/StayHere") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:can_menu") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=14] +resource_name = "show_menu" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("MenuPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("MenuPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 0.035 ), Vector2( 1, 0.035 ), Vector2( 1, 1 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("MenuPopup/PanelContainer/VBoxContainer/Resume/ResumeButton") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:can_menu") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=7] +resource_name = "show_stats" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("LevelStats:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("LevelStats:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0.02 ), Vector2( 1, 0.02 ), Vector2( 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:can_menu") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=18] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("LevelStats:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("LevelStats:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ExitPopup:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ExitPopup:rect_scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 0.011 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("MenuPopup:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("MenuPopup:rect_scale") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} + +[sub_resource type="Animation" id=19] +resource_name = "hide_boss" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("BossCenter:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("BossCenter:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.04 ), Vector2( 0, 0.04 ) ] +} + +[sub_resource type="Animation" id=20] +resource_name = "hide_exit" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("ExitPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExitPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.07 ), Vector2( 0, 0.07 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("MenuPopup/PanelContainer/VBoxContainer/Menu/MenuButton") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} +tracks/3/type = "method" +tracks/3/path = NodePath("ExitPopup") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( ), +"transitions": PoolRealArray( ), +"values": [ ] +} + +[sub_resource type="Animation" id=21] +resource_name = "hide_menu" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("MenuPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("MenuPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.035 ), Vector2( 1e-05, 0.035 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} + +[sub_resource type="Animation" id=22] +resource_name = "hide_stats" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("LevelStats:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("LevelStats:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.02 ), Vector2( 0, 0.02 ) ] +} + +[sub_resource type="Animation" id=23] +resource_name = "show_boss" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("BossCenter:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("BossCenter:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0.04 ), Vector2( 1, 0.04 ), Vector2( 1, 1 ) ] +} + +[sub_resource type="Animation" id=24] +resource_name = "show_exit" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("ExitPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExitPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0.07 ), Vector2( 1, 0.07 ), Vector2( 1, 1 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/StayHere") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} + +[sub_resource type="Animation" id=25] +resource_name = "show_menu" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("MenuPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("MenuPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 0.035 ), Vector2( 1, 0.035 ), Vector2( 1, 1 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("MenuPopup/PanelContainer/VBoxContainer/Resume/ResumeButton") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} + +[sub_resource type="Animation" id=26] +resource_name = "show_stats" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("LevelStats:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("LevelStats:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0.02 ), Vector2( 1, 0.02 ), Vector2( 1, 1 ) ] +} + +[sub_resource type="AtlasTexture" id=37] +resource_local_to_scene = true +atlas = ExtResource( 22 ) +region = Rect2( 0, 0, 12, 10 ) + +[node name="LevelSelect" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +focus_mode = 2 +script = ExtResource( 1 ) + +[node name="WorldMap" type="TextureRect" parent="."] +margin_right = 256.0 +margin_bottom = 192.0 +texture = ExtResource( 2 ) + +[node name="Whirlpool" type="AnimatedSprite" parent="."] +unique_name_in_owner = true +position = Vector2( 83, 65 ) +frames = SubResource( 32 ) + +[node name="WaveParticles" type="CPUParticles2D" parent="."] +material = SubResource( 9 ) +amount = 12 +lifetime = 1.5 +texture = ExtResource( 13 ) +emission_shape = 3 +emission_points = PoolVector2Array( 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 3, 8, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, 15, 3, 16, 3, 17, 3, 18, 3, 19, 3, 20, 3, 21, 3, 22, 3, 23, 3, 24, 3, 25, 3, 26, 3, 27, 3, 28, 3, 29, 3, 30, 3, 31, 3, 32, 3, 33, 3, 34, 3, 35, 3, 36, 3, 37, 3, 38, 3, 39, 3, 40, 3, 41, 3, 42, 3, 43, 3, 44, 3, 45, 3, 46, 3, 47, 3, 48, 3, 49, 3, 50, 3, 51, 3, 52, 3, 53, 3, 54, 3, 55, 3, 56, 3, 57, 3, 58, 3, 59, 3, 60, 3, 61, 3, 62, 3, 63, 3, 64, 3, 65, 3, 66, 3, 67, 3, 68, 3, 69, 3, 70, 3, 71, 3, 72, 3, 73, 3, 74, 3, 75, 3, 76, 3, 77, 3, 78, 3, 79, 3, 80, 3, 81, 3, 82, 3, 83, 3, 84, 3, 85, 3, 86, 3, 87, 3, 88, 3, 89, 3, 90, 3, 91, 3, 92, 3, 93, 3, 94, 3, 95, 3, 96, 3, 97, 3, 98, 3, 99, 3, 100, 3, 101, 3, 102, 3, 103, 3, 104, 3, 105, 3, 106, 3, 107, 3, 108, 3, 109, 3, 110, 3, 111, 3, 112, 3, 113, 3, 114, 3, 115, 3, 116, 3, 117, 3, 118, 3, 119, 3, 120, 3, 121, 3, 122, 3, 123, 3, 124, 3, 125, 3, 126, 3, 127, 3, 128, 3, 129, 3, 130, 3, 131, 3, 132, 3, 133, 3, 134, 3, 135, 3, 136, 3, 137, 3, 138, 3, 139, 3, 140, 3, 141, 3, 142, 3, 143, 3, 144, 3, 145, 3, 146, 3, 147, 3, 148, 3, 149, 3, 150, 3, 151, 3, 152, 3, 153, 3, 154, 3, 155, 3, 156, 3, 157, 3, 158, 3, 159, 3, 160, 3, 161, 3, 162, 3, 163, 3, 164, 3, 165, 3, 166, 3, 167, 3, 168, 3, 169, 3, 170, 3, 171, 3, 172, 3, 173, 3, 174, 3, 175, 3, 176, 3, 177, 3, 178, 3, 179, 3, 180, 3, 181, 3, 182, 3, 183, 3, 184, 3, 185, 3, 186, 3, 187, 3, 188, 4, 3, 4, 4, 4, 5, 4, 6, 4, 7, 4, 8, 4, 9, 4, 10, 4, 11, 4, 12, 4, 13, 4, 14, 4, 15, 4, 16, 4, 17, 4, 18, 4, 19, 4, 20, 4, 21, 4, 22, 4, 23, 4, 24, 4, 25, 4, 26, 4, 27, 4, 28, 4, 29, 4, 30, 4, 31, 4, 32, 4, 33, 4, 34, 4, 35, 4, 36, 4, 37, 4, 38, 4, 39, 4, 40, 4, 41, 4, 42, 4, 43, 4, 44, 4, 45, 4, 46, 4, 47, 4, 48, 4, 49, 4, 50, 4, 51, 4, 52, 4, 53, 4, 54, 4, 55, 4, 56, 4, 57, 4, 58, 4, 59, 4, 60, 4, 61, 4, 62, 4, 63, 4, 64, 4, 65, 4, 66, 4, 67, 4, 68, 4, 69, 4, 70, 4, 71, 4, 72, 4, 73, 4, 74, 4, 75, 4, 76, 4, 77, 4, 78, 4, 79, 4, 80, 4, 81, 4, 82, 4, 83, 4, 84, 4, 85, 4, 86, 4, 87, 4, 88, 4, 89, 4, 90, 4, 91, 4, 92, 4, 93, 4, 94, 4, 95, 4, 96, 4, 97, 4, 98, 4, 99, 4, 100, 4, 101, 4, 102, 4, 103, 4, 104, 4, 105, 4, 106, 4, 107, 4, 108, 4, 109, 4, 110, 4, 111, 4, 112, 4, 113, 4, 114, 4, 115, 4, 116, 4, 117, 4, 118, 4, 119, 4, 120, 4, 121, 4, 122, 4, 123, 4, 124, 4, 125, 4, 126, 4, 127, 4, 128, 4, 129, 4, 130, 4, 131, 4, 132, 4, 133, 4, 134, 4, 135, 4, 136, 4, 137, 4, 138, 4, 139, 4, 140, 4, 141, 4, 142, 4, 143, 4, 144, 4, 145, 4, 146, 4, 147, 4, 148, 4, 149, 4, 150, 4, 151, 4, 152, 4, 153, 4, 154, 4, 155, 4, 156, 4, 157, 4, 158, 4, 159, 4, 160, 4, 161, 4, 162, 4, 163, 4, 164, 4, 165, 4, 166, 4, 167, 4, 168, 4, 169, 4, 170, 4, 171, 4, 172, 4, 173, 4, 174, 4, 175, 4, 176, 4, 177, 4, 178, 4, 179, 4, 180, 4, 181, 4, 182, 4, 183, 4, 184, 4, 185, 4, 186, 4, 187, 4, 188, 5, 3, 5, 4, 5, 5, 5, 6, 5, 7, 5, 8, 5, 9, 5, 10, 5, 11, 5, 12, 5, 13, 5, 14, 5, 15, 5, 16, 5, 17, 5, 18, 5, 19, 5, 20, 5, 21, 5, 22, 5, 23, 5, 24, 5, 25, 5, 26, 5, 27, 5, 28, 5, 29, 5, 30, 5, 31, 5, 32, 5, 33, 5, 34, 5, 35, 5, 36, 5, 37, 5, 38, 5, 39, 5, 40, 5, 41, 5, 42, 5, 43, 5, 44, 5, 45, 5, 46, 5, 47, 5, 48, 5, 49, 5, 50, 5, 51, 5, 52, 5, 53, 5, 54, 5, 55, 5, 56, 5, 57, 5, 58, 5, 59, 5, 60, 5, 61, 5, 62, 5, 63, 5, 64, 5, 65, 5, 66, 5, 67, 5, 68, 5, 69, 5, 70, 5, 71, 5, 72, 5, 73, 5, 74, 5, 75, 5, 76, 5, 77, 5, 78, 5, 79, 5, 80, 5, 81, 5, 82, 5, 83, 5, 84, 5, 85, 5, 86, 5, 87, 5, 88, 5, 89, 5, 90, 5, 91, 5, 92, 5, 93, 5, 94, 5, 95, 5, 96, 5, 97, 5, 98, 5, 99, 5, 100, 5, 101, 5, 102, 5, 103, 5, 104, 5, 105, 5, 106, 5, 107, 5, 108, 5, 109, 5, 110, 5, 111, 5, 112, 5, 113, 5, 114, 5, 115, 5, 116, 5, 117, 5, 118, 5, 119, 5, 120, 5, 121, 5, 122, 5, 123, 5, 124, 5, 125, 5, 126, 5, 127, 5, 128, 5, 129, 5, 130, 5, 131, 5, 132, 5, 133, 5, 134, 5, 135, 5, 136, 5, 137, 5, 138, 5, 139, 5, 140, 5, 141, 5, 142, 5, 143, 5, 144, 5, 145, 5, 146, 5, 147, 5, 148, 5, 149, 5, 150, 5, 151, 5, 152, 5, 153, 5, 154, 5, 155, 5, 156, 5, 157, 5, 158, 5, 159, 5, 160, 5, 161, 5, 162, 5, 163, 5, 164, 5, 165, 5, 166, 5, 167, 5, 168, 5, 169, 5, 170, 5, 171, 5, 172, 5, 173, 5, 174, 5, 175, 5, 176, 5, 177, 5, 178, 5, 179, 5, 180, 5, 181, 5, 182, 5, 183, 5, 184, 5, 185, 5, 186, 5, 187, 5, 188, 6, 3, 6, 4, 6, 5, 6, 6, 6, 7, 6, 8, 6, 9, 6, 10, 6, 11, 6, 12, 6, 13, 6, 14, 6, 15, 6, 16, 6, 17, 6, 18, 6, 19, 6, 20, 6, 21, 6, 22, 6, 23, 6, 24, 6, 25, 6, 26, 6, 27, 6, 28, 6, 29, 6, 30, 6, 31, 6, 32, 6, 33, 6, 34, 6, 35, 6, 36, 6, 37, 6, 38, 6, 39, 6, 40, 6, 41, 6, 42, 6, 43, 6, 44, 6, 45, 6, 46, 6, 47, 6, 48, 6, 49, 6, 50, 6, 51, 6, 52, 6, 53, 6, 54, 6, 55, 6, 56, 6, 57, 6, 58, 6, 59, 6, 60, 6, 61, 6, 62, 6, 63, 6, 64, 6, 65, 6, 66, 6, 67, 6, 68, 6, 69, 6, 70, 6, 71, 6, 72, 6, 73, 6, 74, 6, 75, 6, 76, 6, 77, 6, 78, 6, 79, 6, 80, 6, 81, 6, 82, 6, 83, 6, 84, 6, 85, 6, 86, 6, 87, 6, 88, 6, 89, 6, 90, 6, 91, 6, 92, 6, 93, 6, 94, 6, 95, 6, 96, 6, 97, 6, 98, 6, 99, 6, 100, 6, 101, 6, 102, 6, 103, 6, 104, 6, 105, 6, 106, 6, 107, 6, 108, 6, 109, 6, 110, 6, 111, 6, 112, 6, 113, 6, 114, 6, 115, 6, 116, 6, 117, 6, 118, 6, 119, 6, 120, 6, 121, 6, 122, 6, 123, 6, 124, 6, 125, 6, 126, 6, 127, 6, 128, 6, 129, 6, 130, 6, 131, 6, 132, 6, 133, 6, 134, 6, 135, 6, 136, 6, 137, 6, 138, 6, 139, 6, 140, 6, 141, 6, 142, 6, 143, 6, 144, 6, 145, 6, 146, 6, 147, 6, 148, 6, 149, 6, 150, 6, 151, 6, 152, 6, 153, 6, 154, 6, 155, 6, 156, 6, 157, 6, 158, 6, 159, 6, 160, 6, 161, 6, 162, 6, 163, 6, 164, 6, 165, 6, 166, 6, 167, 6, 168, 6, 169, 6, 170, 6, 171, 6, 172, 6, 173, 6, 174, 6, 175, 6, 176, 6, 177, 6, 178, 6, 179, 6, 180, 6, 181, 6, 182, 6, 183, 6, 184, 6, 185, 6, 186, 6, 187, 6, 188, 7, 3, 7, 4, 7, 5, 7, 6, 7, 7, 7, 8, 7, 9, 7, 10, 7, 11, 7, 12, 7, 13, 7, 14, 7, 15, 7, 16, 7, 17, 7, 18, 7, 19, 7, 20, 7, 21, 7, 22, 7, 23, 7, 24, 7, 25, 7, 26, 7, 27, 7, 28, 7, 29, 7, 30, 7, 31, 7, 32, 7, 33, 7, 34, 7, 35, 7, 36, 7, 37, 7, 38, 7, 39, 7, 40, 7, 41, 7, 42, 7, 43, 7, 44, 7, 45, 7, 46, 7, 47, 7, 48, 7, 49, 7, 50, 7, 51, 7, 52, 7, 53, 7, 54, 7, 55, 7, 56, 7, 57, 7, 58, 7, 59, 7, 60, 7, 61, 7, 62, 7, 63, 7, 64, 7, 65, 7, 66, 7, 67, 7, 68, 7, 69, 7, 70, 7, 71, 7, 72, 7, 73, 7, 74, 7, 75, 7, 76, 7, 77, 7, 78, 7, 79, 7, 80, 7, 81, 7, 82, 7, 83, 7, 84, 7, 85, 7, 86, 7, 87, 7, 88, 7, 89, 7, 90, 7, 91, 7, 92, 7, 93, 7, 94, 7, 95, 7, 96, 7, 97, 7, 98, 7, 99, 7, 100, 7, 101, 7, 102, 7, 103, 7, 104, 7, 105, 7, 106, 7, 107, 7, 108, 7, 109, 7, 110, 7, 111, 7, 112, 7, 113, 7, 114, 7, 115, 7, 116, 7, 117, 7, 118, 7, 119, 7, 120, 7, 121, 7, 122, 7, 123, 7, 124, 7, 125, 7, 126, 7, 127, 7, 128, 7, 129, 7, 130, 7, 131, 7, 132, 7, 133, 7, 134, 7, 135, 7, 136, 7, 137, 7, 138, 7, 139, 7, 140, 7, 141, 7, 142, 7, 143, 7, 144, 7, 145, 7, 146, 7, 147, 7, 148, 7, 149, 7, 150, 7, 151, 7, 152, 7, 153, 7, 154, 7, 155, 7, 156, 7, 157, 7, 158, 7, 159, 7, 160, 7, 161, 7, 162, 7, 163, 7, 164, 7, 165, 7, 166, 7, 167, 7, 168, 7, 169, 7, 170, 7, 171, 7, 172, 7, 173, 7, 174, 7, 175, 7, 176, 7, 177, 7, 178, 7, 179, 7, 180, 7, 181, 7, 182, 7, 183, 7, 184, 7, 185, 7, 186, 7, 187, 7, 188, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7, 8, 8, 8, 9, 8, 10, 8, 11, 8, 12, 8, 13, 8, 14, 8, 15, 8, 16, 8, 17, 8, 18, 8, 19, 8, 20, 8, 21, 8, 22, 8, 23, 8, 24, 8, 25, 8, 26, 8, 27, 8, 28, 8, 29, 8, 30, 8, 31, 8, 32, 8, 33, 8, 34, 8, 35, 8, 36, 8, 37, 8, 38, 8, 39, 8, 40, 8, 41, 8, 42, 8, 43, 8, 44, 8, 45, 8, 46, 8, 47, 8, 48, 8, 49, 8, 50, 8, 51, 8, 52, 8, 53, 8, 54, 8, 55, 8, 56, 8, 57, 8, 58, 8, 59, 8, 60, 8, 61, 8, 62, 8, 63, 8, 64, 8, 65, 8, 66, 8, 67, 8, 68, 8, 69, 8, 70, 8, 71, 8, 72, 8, 73, 8, 74, 8, 75, 8, 76, 8, 77, 8, 78, 8, 79, 8, 80, 8, 81, 8, 82, 8, 83, 8, 84, 8, 85, 8, 86, 8, 87, 8, 88, 8, 89, 8, 90, 8, 91, 8, 92, 8, 93, 8, 94, 8, 95, 8, 96, 8, 97, 8, 98, 8, 99, 8, 100, 8, 101, 8, 102, 8, 103, 8, 104, 8, 105, 8, 106, 8, 107, 8, 108, 8, 109, 8, 110, 8, 111, 8, 112, 8, 113, 8, 114, 8, 115, 8, 116, 8, 117, 8, 118, 8, 119, 8, 120, 8, 121, 8, 122, 8, 123, 8, 124, 8, 125, 8, 126, 8, 127, 8, 128, 8, 129, 8, 130, 8, 131, 8, 132, 8, 133, 8, 134, 8, 135, 8, 136, 8, 137, 8, 138, 8, 139, 8, 140, 8, 141, 8, 142, 8, 143, 8, 144, 8, 145, 8, 146, 8, 147, 8, 148, 8, 154, 8, 155, 8, 156, 8, 157, 8, 158, 8, 159, 8, 160, 8, 161, 8, 162, 8, 163, 8, 164, 8, 165, 8, 166, 8, 167, 8, 168, 8, 169, 8, 170, 8, 171, 8, 172, 8, 173, 8, 174, 8, 175, 8, 176, 8, 177, 8, 178, 8, 179, 8, 180, 8, 181, 8, 182, 8, 183, 8, 184, 8, 185, 8, 186, 8, 187, 8, 188, 9, 3, 9, 4, 9, 5, 9, 6, 9, 7, 9, 8, 9, 9, 9, 10, 9, 11, 9, 12, 9, 13, 9, 14, 9, 15, 9, 16, 9, 17, 9, 18, 9, 19, 9, 20, 9, 21, 9, 22, 9, 23, 9, 24, 9, 25, 9, 26, 9, 27, 9, 28, 9, 29, 9, 30, 9, 31, 9, 32, 9, 33, 9, 34, 9, 35, 9, 36, 9, 37, 9, 38, 9, 39, 9, 40, 9, 41, 9, 42, 9, 43, 9, 44, 9, 45, 9, 46, 9, 47, 9, 48, 9, 49, 9, 50, 9, 51, 9, 52, 9, 53, 9, 54, 9, 55, 9, 56, 9, 57, 9, 58, 9, 59, 9, 60, 9, 61, 9, 62, 9, 63, 9, 64, 9, 65, 9, 66, 9, 67, 9, 68, 9, 69, 9, 70, 9, 71, 9, 72, 9, 73, 9, 74, 9, 75, 9, 76, 9, 77, 9, 78, 9, 79, 9, 80, 9, 81, 9, 82, 9, 83, 9, 84, 9, 85, 9, 86, 9, 87, 9, 88, 9, 89, 9, 90, 9, 91, 9, 92, 9, 93, 9, 94, 9, 95, 9, 96, 9, 97, 9, 98, 9, 99, 9, 100, 9, 101, 9, 102, 9, 103, 9, 104, 9, 105, 9, 106, 9, 107, 9, 108, 9, 109, 9, 110, 9, 111, 9, 112, 9, 113, 9, 114, 9, 115, 9, 116, 9, 117, 9, 118, 9, 119, 9, 120, 9, 121, 9, 122, 9, 123, 9, 124, 9, 125, 9, 126, 9, 127, 9, 128, 9, 129, 9, 130, 9, 131, 9, 132, 9, 133, 9, 134, 9, 135, 9, 136, 9, 137, 9, 138, 9, 139, 9, 140, 9, 141, 9, 142, 9, 143, 9, 144, 9, 145, 9, 146, 9, 147, 9, 162, 9, 163, 9, 164, 9, 165, 9, 166, 9, 167, 9, 168, 9, 169, 9, 170, 9, 171, 9, 172, 9, 173, 9, 174, 9, 175, 9, 176, 9, 177, 9, 178, 9, 179, 9, 180, 9, 181, 9, 182, 9, 183, 9, 184, 9, 185, 9, 186, 9, 187, 9, 188, 10, 3, 10, 4, 10, 5, 10, 6, 10, 7, 10, 8, 10, 9, 10, 10, 10, 11, 10, 12, 10, 13, 10, 14, 10, 15, 10, 16, 10, 17, 10, 18, 10, 19, 10, 20, 10, 21, 10, 22, 10, 23, 10, 24, 10, 25, 10, 26, 10, 27, 10, 28, 10, 29, 10, 30, 10, 31, 10, 32, 10, 33, 10, 34, 10, 35, 10, 36, 10, 37, 10, 38, 10, 39, 10, 40, 10, 41, 10, 42, 10, 43, 10, 44, 10, 45, 10, 46, 10, 47, 10, 48, 10, 49, 10, 50, 10, 51, 10, 52, 10, 53, 10, 54, 10, 55, 10, 56, 10, 57, 10, 58, 10, 59, 10, 60, 10, 61, 10, 62, 10, 63, 10, 64, 10, 65, 10, 66, 10, 67, 10, 68, 10, 69, 10, 70, 10, 71, 10, 72, 10, 73, 10, 74, 10, 75, 10, 76, 10, 77, 10, 78, 10, 79, 10, 80, 10, 81, 10, 82, 10, 83, 10, 84, 10, 85, 10, 86, 10, 87, 10, 88, 10, 89, 10, 90, 10, 91, 10, 92, 10, 93, 10, 94, 10, 95, 10, 96, 10, 97, 10, 98, 10, 99, 10, 100, 10, 101, 10, 102, 10, 103, 10, 104, 10, 105, 10, 106, 10, 107, 10, 108, 10, 109, 10, 110, 10, 111, 10, 112, 10, 113, 10, 114, 10, 115, 10, 116, 10, 117, 10, 118, 10, 119, 10, 120, 10, 121, 10, 122, 10, 123, 10, 124, 10, 125, 10, 126, 10, 127, 10, 128, 10, 129, 10, 130, 10, 131, 10, 132, 10, 133, 10, 134, 10, 135, 10, 136, 10, 137, 10, 138, 10, 139, 10, 140, 10, 141, 10, 142, 10, 143, 10, 144, 10, 145, 10, 146, 10, 147, 10, 162, 10, 163, 10, 164, 10, 165, 10, 166, 10, 167, 10, 168, 10, 169, 10, 170, 10, 171, 10, 172, 10, 173, 10, 174, 10, 175, 10, 176, 10, 177, 10, 178, 10, 179, 10, 180, 10, 181, 10, 182, 10, 183, 10, 184, 10, 185, 10, 186, 10, 187, 10, 188, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 11, 11, 11, 12, 11, 13, 11, 14, 11, 15, 11, 16, 11, 17, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 11, 24, 11, 25, 11, 26, 11, 27, 11, 28, 11, 29, 11, 30, 11, 31, 11, 32, 11, 33, 11, 34, 11, 35, 11, 36, 11, 37, 11, 38, 11, 39, 11, 40, 11, 41, 11, 42, 11, 43, 11, 44, 11, 45, 11, 46, 11, 47, 11, 48, 11, 49, 11, 50, 11, 51, 11, 52, 11, 53, 11, 54, 11, 55, 11, 56, 11, 57, 11, 58, 11, 59, 11, 60, 11, 61, 11, 62, 11, 63, 11, 64, 11, 65, 11, 66, 11, 67, 11, 68, 11, 69, 11, 70, 11, 71, 11, 72, 11, 73, 11, 74, 11, 75, 11, 76, 11, 77, 11, 78, 11, 79, 11, 80, 11, 81, 11, 82, 11, 83, 11, 84, 11, 85, 11, 86, 11, 87, 11, 88, 11, 89, 11, 90, 11, 91, 11, 92, 11, 93, 11, 94, 11, 95, 11, 96, 11, 97, 11, 98, 11, 99, 11, 100, 11, 101, 11, 102, 11, 103, 11, 104, 11, 105, 11, 106, 11, 107, 11, 108, 11, 109, 11, 110, 11, 111, 11, 112, 11, 113, 11, 114, 11, 115, 11, 116, 11, 117, 11, 118, 11, 119, 11, 120, 11, 121, 11, 122, 11, 123, 11, 124, 11, 125, 11, 126, 11, 127, 11, 128, 11, 129, 11, 130, 11, 131, 11, 132, 11, 133, 11, 134, 11, 135, 11, 136, 11, 137, 11, 138, 11, 139, 11, 140, 11, 141, 11, 142, 11, 143, 11, 144, 11, 145, 11, 146, 11, 163, 11, 164, 11, 165, 11, 166, 11, 167, 11, 168, 11, 169, 11, 170, 11, 171, 11, 172, 11, 173, 11, 174, 11, 175, 11, 176, 11, 177, 11, 178, 11, 179, 11, 180, 11, 181, 11, 182, 11, 183, 11, 184, 11, 185, 11, 186, 11, 187, 11, 188, 12, 3, 12, 4, 12, 5, 12, 6, 12, 7, 12, 8, 12, 9, 12, 10, 12, 11, 12, 12, 12, 13, 12, 14, 12, 15, 12, 16, 12, 17, 12, 18, 12, 19, 12, 20, 12, 21, 12, 22, 12, 23, 12, 24, 12, 25, 12, 26, 12, 27, 12, 28, 12, 29, 12, 30, 12, 31, 12, 32, 12, 33, 12, 34, 12, 35, 12, 36, 12, 37, 12, 38, 12, 39, 12, 40, 12, 41, 12, 42, 12, 43, 12, 44, 12, 45, 12, 46, 12, 47, 12, 48, 12, 49, 12, 50, 12, 51, 12, 52, 12, 53, 12, 54, 12, 55, 12, 56, 12, 57, 12, 58, 12, 59, 12, 60, 12, 61, 12, 62, 12, 63, 12, 64, 12, 65, 12, 66, 12, 67, 12, 68, 12, 69, 12, 70, 12, 71, 12, 72, 12, 73, 12, 74, 12, 75, 12, 76, 12, 77, 12, 78, 12, 79, 12, 80, 12, 81, 12, 82, 12, 83, 12, 84, 12, 85, 12, 86, 12, 87, 12, 88, 12, 89, 12, 90, 12, 91, 12, 92, 12, 93, 12, 94, 12, 95, 12, 96, 12, 97, 12, 98, 12, 99, 12, 100, 12, 101, 12, 102, 12, 103, 12, 104, 12, 105, 12, 106, 12, 107, 12, 108, 12, 109, 12, 110, 12, 111, 12, 112, 12, 113, 12, 114, 12, 115, 12, 116, 12, 117, 12, 118, 12, 119, 12, 120, 12, 121, 12, 122, 12, 123, 12, 124, 12, 125, 12, 126, 12, 127, 12, 128, 12, 129, 12, 130, 12, 131, 12, 132, 12, 133, 12, 134, 12, 135, 12, 136, 12, 137, 12, 138, 12, 139, 12, 140, 12, 141, 12, 142, 12, 143, 12, 144, 12, 145, 12, 164, 12, 165, 12, 166, 12, 167, 12, 168, 12, 169, 12, 170, 12, 171, 12, 172, 12, 173, 12, 174, 12, 175, 12, 176, 12, 177, 12, 178, 12, 179, 12, 180, 12, 181, 12, 182, 12, 183, 12, 184, 12, 185, 12, 186, 12, 187, 12, 188, 13, 3, 13, 4, 13, 5, 13, 6, 13, 7, 13, 8, 13, 9, 13, 10, 13, 11, 13, 12, 13, 13, 13, 14, 13, 15, 13, 16, 13, 17, 13, 18, 13, 19, 13, 20, 13, 21, 13, 22, 13, 23, 13, 24, 13, 25, 13, 26, 13, 27, 13, 28, 13, 29, 13, 30, 13, 31, 13, 32, 13, 33, 13, 34, 13, 35, 13, 36, 13, 37, 13, 38, 13, 39, 13, 40, 13, 41, 13, 42, 13, 43, 13, 44, 13, 45, 13, 46, 13, 47, 13, 48, 13, 49, 13, 50, 13, 51, 13, 52, 13, 53, 13, 54, 13, 55, 13, 56, 13, 57, 13, 58, 13, 59, 13, 60, 13, 61, 13, 62, 13, 63, 13, 64, 13, 65, 13, 66, 13, 67, 13, 68, 13, 69, 13, 70, 13, 71, 13, 72, 13, 73, 13, 74, 13, 75, 13, 76, 13, 77, 13, 78, 13, 79, 13, 80, 13, 81, 13, 82, 13, 83, 13, 84, 13, 85, 13, 86, 13, 87, 13, 88, 13, 89, 13, 90, 13, 91, 13, 92, 13, 93, 13, 94, 13, 95, 13, 96, 13, 97, 13, 98, 13, 99, 13, 100, 13, 101, 13, 102, 13, 103, 13, 104, 13, 105, 13, 106, 13, 107, 13, 108, 13, 109, 13, 110, 13, 111, 13, 112, 13, 113, 13, 114, 13, 115, 13, 116, 13, 117, 13, 118, 13, 119, 13, 120, 13, 121, 13, 122, 13, 123, 13, 124, 13, 125, 13, 126, 13, 127, 13, 128, 13, 129, 13, 130, 13, 131, 13, 132, 13, 133, 13, 134, 13, 135, 13, 136, 13, 137, 13, 138, 13, 139, 13, 140, 13, 141, 13, 142, 13, 143, 13, 144, 13, 165, 13, 166, 13, 167, 13, 168, 13, 169, 13, 170, 13, 171, 13, 172, 13, 173, 13, 174, 13, 175, 13, 176, 13, 177, 13, 178, 13, 179, 13, 180, 13, 181, 13, 182, 13, 183, 13, 184, 13, 185, 13, 186, 13, 187, 13, 188, 14, 3, 14, 4, 14, 5, 14, 6, 14, 7, 14, 8, 14, 9, 14, 10, 14, 11, 14, 12, 14, 13, 14, 14, 14, 15, 14, 16, 14, 17, 14, 18, 14, 19, 14, 20, 14, 21, 14, 22, 14, 23, 14, 24, 14, 25, 14, 26, 14, 27, 14, 28, 14, 29, 14, 30, 14, 31, 14, 32, 14, 33, 14, 34, 14, 35, 14, 36, 14, 37, 14, 38, 14, 39, 14, 40, 14, 41, 14, 42, 14, 43, 14, 44, 14, 45, 14, 46, 14, 47, 14, 48, 14, 49, 14, 50, 14, 51, 14, 52, 14, 53, 14, 54, 14, 55, 14, 56, 14, 57, 14, 58, 14, 59, 14, 60, 14, 61, 14, 62, 14, 63, 14, 64, 14, 65, 14, 66, 14, 67, 14, 68, 14, 69, 14, 70, 14, 71, 14, 72, 14, 73, 14, 74, 14, 75, 14, 76, 14, 77, 14, 78, 14, 79, 14, 80, 14, 81, 14, 82, 14, 83, 14, 84, 14, 85, 14, 86, 14, 87, 14, 88, 14, 89, 14, 90, 14, 91, 14, 92, 14, 93, 14, 94, 14, 95, 14, 96, 14, 97, 14, 98, 14, 99, 14, 100, 14, 101, 14, 102, 14, 103, 14, 104, 14, 105, 14, 106, 14, 107, 14, 108, 14, 109, 14, 110, 14, 111, 14, 112, 14, 113, 14, 114, 14, 115, 14, 116, 14, 117, 14, 118, 14, 119, 14, 120, 14, 121, 14, 122, 14, 123, 14, 124, 14, 125, 14, 126, 14, 127, 14, 128, 14, 129, 14, 130, 14, 131, 14, 132, 14, 133, 14, 134, 14, 135, 14, 136, 14, 137, 14, 138, 14, 139, 14, 140, 14, 141, 14, 142, 14, 143, 14, 144, 14, 165, 14, 166, 14, 167, 14, 168, 14, 169, 14, 170, 14, 171, 14, 172, 14, 173, 14, 174, 14, 175, 14, 176, 14, 177, 14, 178, 14, 179, 14, 180, 14, 181, 14, 182, 14, 183, 14, 184, 14, 185, 14, 186, 14, 187, 14, 188, 15, 3, 15, 4, 15, 5, 15, 6, 15, 7, 15, 8, 15, 9, 15, 10, 15, 11, 15, 12, 15, 13, 15, 14, 15, 15, 15, 16, 15, 17, 15, 18, 15, 19, 15, 20, 15, 21, 15, 22, 15, 23, 15, 24, 15, 25, 15, 26, 15, 27, 15, 28, 15, 29, 15, 30, 15, 31, 15, 32, 15, 33, 15, 34, 15, 35, 15, 36, 15, 37, 15, 38, 15, 39, 15, 40, 15, 41, 15, 42, 15, 43, 15, 44, 15, 45, 15, 46, 15, 47, 15, 48, 15, 49, 15, 50, 15, 51, 15, 52, 15, 53, 15, 54, 15, 55, 15, 56, 15, 57, 15, 58, 15, 59, 15, 60, 15, 61, 15, 62, 15, 63, 15, 64, 15, 65, 15, 66, 15, 67, 15, 68, 15, 69, 15, 70, 15, 71, 15, 72, 15, 73, 15, 74, 15, 75, 15, 76, 15, 77, 15, 78, 15, 79, 15, 80, 15, 81, 15, 82, 15, 83, 15, 84, 15, 85, 15, 86, 15, 87, 15, 88, 15, 89, 15, 90, 15, 91, 15, 92, 15, 93, 15, 94, 15, 95, 15, 96, 15, 97, 15, 98, 15, 99, 15, 100, 15, 101, 15, 102, 15, 103, 15, 104, 15, 105, 15, 106, 15, 107, 15, 108, 15, 109, 15, 110, 15, 111, 15, 112, 15, 113, 15, 114, 15, 115, 15, 116, 15, 117, 15, 118, 15, 119, 15, 120, 15, 121, 15, 122, 15, 123, 15, 124, 15, 125, 15, 126, 15, 127, 15, 128, 15, 129, 15, 130, 15, 131, 15, 132, 15, 133, 15, 134, 15, 135, 15, 136, 15, 137, 15, 138, 15, 139, 15, 140, 15, 141, 15, 142, 15, 143, 15, 166, 15, 167, 15, 168, 15, 169, 15, 170, 15, 171, 15, 172, 15, 173, 15, 174, 15, 175, 15, 176, 15, 177, 15, 178, 15, 179, 15, 180, 15, 181, 15, 182, 15, 183, 15, 184, 15, 185, 15, 186, 15, 187, 15, 188, 16, 3, 16, 4, 16, 5, 16, 6, 16, 7, 16, 8, 16, 9, 16, 10, 16, 11, 16, 12, 16, 13, 16, 14, 16, 15, 16, 16, 16, 17, 16, 18, 16, 19, 16, 20, 16, 21, 16, 22, 16, 23, 16, 24, 16, 25, 16, 26, 16, 27, 16, 28, 16, 29, 16, 30, 16, 31, 16, 32, 16, 33, 16, 34, 16, 35, 16, 36, 16, 37, 16, 38, 16, 39, 16, 40, 16, 41, 16, 42, 16, 43, 16, 44, 16, 45, 16, 46, 16, 47, 16, 48, 16, 49, 16, 50, 16, 51, 16, 52, 16, 53, 16, 54, 16, 55, 16, 56, 16, 57, 16, 58, 16, 59, 16, 60, 16, 61, 16, 62, 16, 63, 16, 64, 16, 65, 16, 66, 16, 67, 16, 68, 16, 69, 16, 70, 16, 71, 16, 72, 16, 73, 16, 74, 16, 75, 16, 76, 16, 77, 16, 78, 16, 79, 16, 80, 16, 81, 16, 82, 16, 83, 16, 84, 16, 85, 16, 86, 16, 87, 16, 88, 16, 89, 16, 90, 16, 91, 16, 92, 16, 93, 16, 94, 16, 95, 16, 96, 16, 97, 16, 98, 16, 99, 16, 100, 16, 101, 16, 102, 16, 103, 16, 104, 16, 105, 16, 106, 16, 107, 16, 108, 16, 109, 16, 110, 16, 111, 16, 112, 16, 113, 16, 114, 16, 115, 16, 116, 16, 117, 16, 118, 16, 119, 16, 120, 16, 121, 16, 122, 16, 123, 16, 124, 16, 125, 16, 126, 16, 127, 16, 128, 16, 129, 16, 130, 16, 131, 16, 132, 16, 133, 16, 134, 16, 135, 16, 136, 16, 137, 16, 138, 16, 139, 16, 140, 16, 141, 16, 142, 16, 167, 16, 168, 16, 169, 16, 170, 16, 171, 16, 172, 16, 173, 16, 174, 16, 175, 16, 176, 16, 177, 16, 178, 16, 179, 16, 180, 16, 181, 16, 182, 16, 183, 16, 184, 16, 185, 16, 186, 16, 187, 16, 188, 17, 3, 17, 4, 17, 5, 17, 6, 17, 7, 17, 8, 17, 9, 17, 10, 17, 11, 17, 12, 17, 13, 17, 14, 17, 15, 17, 16, 17, 17, 17, 18, 17, 19, 17, 20, 17, 21, 17, 22, 17, 23, 17, 24, 17, 25, 17, 26, 17, 27, 17, 28, 17, 29, 17, 30, 17, 31, 17, 32, 17, 33, 17, 34, 17, 35, 17, 36, 17, 37, 17, 38, 17, 39, 17, 40, 17, 41, 17, 42, 17, 43, 17, 44, 17, 45, 17, 46, 17, 47, 17, 48, 17, 49, 17, 50, 17, 51, 17, 52, 17, 53, 17, 54, 17, 55, 17, 56, 17, 57, 17, 58, 17, 59, 17, 60, 17, 61, 17, 62, 17, 63, 17, 64, 17, 65, 17, 66, 17, 67, 17, 68, 17, 69, 17, 70, 17, 71, 17, 72, 17, 73, 17, 74, 17, 75, 17, 76, 17, 77, 17, 78, 17, 79, 17, 80, 17, 81, 17, 82, 17, 83, 17, 84, 17, 85, 17, 86, 17, 87, 17, 88, 17, 89, 17, 90, 17, 91, 17, 92, 17, 93, 17, 94, 17, 95, 17, 96, 17, 97, 17, 98, 17, 99, 17, 100, 17, 101, 17, 102, 17, 103, 17, 104, 17, 105, 17, 106, 17, 107, 17, 108, 17, 109, 17, 110, 17, 111, 17, 112, 17, 113, 17, 114, 17, 115, 17, 116, 17, 117, 17, 118, 17, 119, 17, 120, 17, 121, 17, 122, 17, 123, 17, 124, 17, 125, 17, 126, 17, 127, 17, 128, 17, 129, 17, 130, 17, 131, 17, 132, 17, 133, 17, 134, 17, 135, 17, 136, 17, 137, 17, 138, 17, 139, 17, 140, 17, 141, 17, 142, 17, 167, 17, 168, 17, 169, 17, 170, 17, 171, 17, 172, 17, 173, 17, 174, 17, 175, 17, 176, 17, 177, 17, 178, 17, 179, 17, 180, 17, 181, 17, 182, 17, 183, 17, 184, 17, 185, 17, 186, 17, 187, 17, 188, 18, 3, 18, 4, 18, 5, 18, 6, 18, 7, 18, 8, 18, 9, 18, 10, 18, 11, 18, 12, 18, 13, 18, 14, 18, 15, 18, 16, 18, 17, 18, 18, 18, 19, 18, 20, 18, 21, 18, 22, 18, 23, 18, 24, 18, 25, 18, 26, 18, 27, 18, 28, 18, 29, 18, 30, 18, 31, 18, 32, 18, 33, 18, 34, 18, 35, 18, 36, 18, 37, 18, 38, 18, 39, 18, 40, 18, 41, 18, 42, 18, 43, 18, 44, 18, 45, 18, 46, 18, 47, 18, 48, 18, 49, 18, 50, 18, 51, 18, 52, 18, 53, 18, 54, 18, 55, 18, 56, 18, 57, 18, 58, 18, 59, 18, 60, 18, 61, 18, 62, 18, 63, 18, 64, 18, 65, 18, 66, 18, 67, 18, 68, 18, 69, 18, 70, 18, 71, 18, 72, 18, 73, 18, 74, 18, 75, 18, 76, 18, 77, 18, 78, 18, 79, 18, 80, 18, 81, 18, 82, 18, 83, 18, 84, 18, 85, 18, 86, 18, 87, 18, 88, 18, 89, 18, 90, 18, 91, 18, 92, 18, 93, 18, 94, 18, 95, 18, 96, 18, 97, 18, 98, 18, 99, 18, 100, 18, 101, 18, 102, 18, 103, 18, 104, 18, 105, 18, 106, 18, 107, 18, 108, 18, 109, 18, 110, 18, 111, 18, 112, 18, 113, 18, 114, 18, 115, 18, 116, 18, 117, 18, 118, 18, 119, 18, 120, 18, 121, 18, 122, 18, 123, 18, 124, 18, 125, 18, 126, 18, 127, 18, 128, 18, 129, 18, 130, 18, 131, 18, 132, 18, 133, 18, 134, 18, 135, 18, 136, 18, 137, 18, 138, 18, 139, 18, 140, 18, 141, 18, 142, 18, 168, 18, 169, 18, 170, 18, 171, 18, 172, 18, 173, 18, 174, 18, 175, 18, 176, 18, 177, 18, 178, 18, 179, 18, 180, 18, 181, 18, 182, 18, 183, 18, 184, 18, 185, 18, 186, 18, 187, 18, 188, 19, 3, 19, 4, 19, 5, 19, 6, 19, 7, 19, 8, 19, 9, 19, 10, 19, 11, 19, 12, 19, 13, 19, 14, 19, 15, 19, 16, 19, 17, 19, 18, 19, 19, 19, 20, 19, 21, 19, 22, 19, 23, 19, 24, 19, 25, 19, 26, 19, 27, 19, 28, 19, 29, 19, 30, 19, 31, 19, 32, 19, 33, 19, 34, 19, 35, 19, 36, 19, 37, 19, 38, 19, 39, 19, 40, 19, 41, 19, 42, 19, 43, 19, 44, 19, 45, 19, 46, 19, 47, 19, 48, 19, 49, 19, 50, 19, 51, 19, 52, 19, 53, 19, 54, 19, 55, 19, 56, 19, 57, 19, 58, 19, 59, 19, 60, 19, 61, 19, 62, 19, 63, 19, 64, 19, 65, 19, 66, 19, 67, 19, 68, 19, 69, 19, 70, 19, 71, 19, 72, 19, 73, 19, 74, 19, 75, 19, 76, 19, 77, 19, 78, 19, 79, 19, 80, 19, 81, 19, 82, 19, 83, 19, 84, 19, 85, 19, 86, 19, 87, 19, 88, 19, 89, 19, 90, 19, 91, 19, 92, 19, 93, 19, 94, 19, 95, 19, 96, 19, 97, 19, 98, 19, 99, 19, 100, 19, 101, 19, 102, 19, 103, 19, 104, 19, 105, 19, 106, 19, 107, 19, 108, 19, 109, 19, 110, 19, 111, 19, 112, 19, 113, 19, 114, 19, 115, 19, 116, 19, 117, 19, 118, 19, 119, 19, 120, 19, 121, 19, 122, 19, 123, 19, 124, 19, 125, 19, 126, 19, 127, 19, 128, 19, 129, 19, 130, 19, 131, 19, 132, 19, 133, 19, 134, 19, 135, 19, 136, 19, 137, 19, 138, 19, 139, 19, 140, 19, 141, 19, 168, 19, 169, 19, 170, 19, 171, 19, 172, 19, 173, 19, 174, 19, 175, 19, 176, 19, 177, 19, 178, 19, 179, 19, 180, 19, 181, 19, 182, 19, 183, 19, 184, 19, 185, 19, 186, 19, 187, 19, 188, 20, 3, 20, 4, 20, 5, 20, 6, 20, 7, 20, 8, 20, 9, 20, 10, 20, 11, 20, 12, 20, 13, 20, 14, 20, 15, 20, 16, 20, 17, 20, 18, 20, 19, 20, 20, 20, 21, 20, 22, 20, 23, 20, 24, 20, 25, 20, 26, 20, 27, 20, 28, 20, 29, 20, 30, 20, 31, 20, 32, 20, 33, 20, 34, 20, 35, 20, 36, 20, 37, 20, 38, 20, 39, 20, 40, 20, 41, 20, 42, 20, 43, 20, 44, 20, 45, 20, 46, 20, 47, 20, 48, 20, 49, 20, 50, 20, 51, 20, 52, 20, 53, 20, 54, 20, 55, 20, 56, 20, 57, 20, 58, 20, 59, 20, 60, 20, 61, 20, 62, 20, 63, 20, 64, 20, 65, 20, 66, 20, 67, 20, 68, 20, 69, 20, 70, 20, 71, 20, 72, 20, 73, 20, 74, 20, 75, 20, 76, 20, 77, 20, 78, 20, 79, 20, 80, 20, 81, 20, 82, 20, 83, 20, 84, 20, 85, 20, 86, 20, 87, 20, 88, 20, 89, 20, 90, 20, 91, 20, 92, 20, 93, 20, 94, 20, 95, 20, 96, 20, 97, 20, 98, 20, 99, 20, 100, 20, 101, 20, 102, 20, 103, 20, 104, 20, 105, 20, 106, 20, 107, 20, 108, 20, 109, 20, 110, 20, 111, 20, 112, 20, 113, 20, 114, 20, 115, 20, 116, 20, 117, 20, 118, 20, 119, 20, 120, 20, 121, 20, 122, 20, 123, 20, 124, 20, 125, 20, 126, 20, 127, 20, 128, 20, 129, 20, 130, 20, 131, 20, 132, 20, 133, 20, 134, 20, 135, 20, 136, 20, 137, 20, 138, 20, 139, 20, 140, 20, 141, 20, 168, 20, 169, 20, 170, 20, 171, 20, 172, 20, 173, 20, 174, 20, 175, 20, 176, 20, 177, 20, 178, 20, 179, 20, 180, 20, 181, 20, 182, 20, 183, 20, 184, 20, 185, 20, 186, 20, 187, 20, 188, 21, 3, 21, 4, 21, 5, 21, 6, 21, 7, 21, 8, 21, 9, 21, 10, 21, 11, 21, 12, 21, 13, 21, 14, 21, 15, 21, 16, 21, 17, 21, 18, 21, 19, 21, 20, 21, 21, 21, 22, 21, 23, 21, 24, 21, 25, 21, 26, 21, 27, 21, 28, 21, 29, 21, 30, 21, 31, 21, 32, 21, 33, 21, 34, 21, 35, 21, 36, 21, 37, 21, 38, 21, 39, 21, 40, 21, 41, 21, 42, 21, 43, 21, 44, 21, 45, 21, 46, 21, 47, 21, 48, 21, 49, 21, 50, 21, 51, 21, 52, 21, 53, 21, 54, 21, 55, 21, 56, 21, 57, 21, 58, 21, 59, 21, 60, 21, 61, 21, 62, 21, 63, 21, 64, 21, 65, 21, 66, 21, 67, 21, 68, 21, 69, 21, 70, 21, 71, 21, 72, 21, 73, 21, 74, 21, 75, 21, 76, 21, 77, 21, 78, 21, 79, 21, 80, 21, 81, 21, 82, 21, 83, 21, 84, 21, 85, 21, 86, 21, 87, 21, 88, 21, 89, 21, 90, 21, 91, 21, 92, 21, 93, 21, 94, 21, 95, 21, 96, 21, 97, 21, 98, 21, 99, 21, 100, 21, 101, 21, 102, 21, 103, 21, 104, 21, 105, 21, 106, 21, 107, 21, 108, 21, 109, 21, 110, 21, 111, 21, 112, 21, 113, 21, 114, 21, 115, 21, 116, 21, 117, 21, 118, 21, 119, 21, 120, 21, 121, 21, 122, 21, 123, 21, 124, 21, 125, 21, 126, 21, 127, 21, 128, 21, 129, 21, 130, 21, 131, 21, 132, 21, 133, 21, 134, 21, 135, 21, 136, 21, 137, 21, 138, 21, 139, 21, 140, 21, 141, 21, 167, 21, 168, 21, 169, 21, 170, 21, 171, 21, 172, 21, 173, 21, 174, 21, 175, 21, 176, 21, 177, 21, 178, 21, 179, 21, 180, 21, 181, 21, 182, 21, 183, 21, 184, 21, 185, 21, 186, 21, 187, 21, 188, 22, 3, 22, 4, 22, 5, 22, 6, 22, 7, 22, 8, 22, 9, 22, 10, 22, 11, 22, 12, 22, 13, 22, 14, 22, 15, 22, 16, 22, 17, 22, 18, 22, 19, 22, 20, 22, 21, 22, 22, 22, 23, 22, 24, 22, 25, 22, 26, 22, 27, 22, 28, 22, 29, 22, 30, 22, 31, 22, 32, 22, 33, 22, 34, 22, 35, 22, 36, 22, 37, 22, 38, 22, 39, 22, 40, 22, 41, 22, 42, 22, 43, 22, 44, 22, 45, 22, 46, 22, 47, 22, 48, 22, 49, 22, 50, 22, 51, 22, 52, 22, 53, 22, 54, 22, 55, 22, 56, 22, 57, 22, 58, 22, 59, 22, 60, 22, 61, 22, 62, 22, 63, 22, 64, 22, 65, 22, 66, 22, 67, 22, 68, 22, 69, 22, 70, 22, 71, 22, 72, 22, 73, 22, 74, 22, 75, 22, 76, 22, 77, 22, 78, 22, 79, 22, 80, 22, 81, 22, 82, 22, 83, 22, 84, 22, 85, 22, 86, 22, 87, 22, 88, 22, 89, 22, 90, 22, 91, 22, 92, 22, 93, 22, 94, 22, 95, 22, 96, 22, 97, 22, 98, 22, 99, 22, 100, 22, 101, 22, 102, 22, 103, 22, 104, 22, 105, 22, 106, 22, 107, 22, 108, 22, 109, 22, 110, 22, 111, 22, 112, 22, 113, 22, 114, 22, 115, 22, 116, 22, 117, 22, 118, 22, 119, 22, 120, 22, 121, 22, 122, 22, 123, 22, 124, 22, 125, 22, 126, 22, 127, 22, 128, 22, 129, 22, 130, 22, 131, 22, 132, 22, 133, 22, 134, 22, 135, 22, 136, 22, 137, 22, 138, 22, 139, 22, 140, 22, 167, 22, 168, 22, 169, 22, 170, 22, 171, 22, 172, 22, 173, 22, 174, 22, 175, 22, 176, 22, 177, 22, 178, 22, 179, 22, 180, 22, 181, 22, 182, 22, 183, 22, 184, 22, 185, 22, 186, 22, 187, 22, 188, 23, 3, 23, 4, 23, 5, 23, 6, 23, 7, 23, 8, 23, 9, 23, 10, 23, 11, 23, 12, 23, 13, 23, 14, 23, 15, 23, 16, 23, 17, 23, 18, 23, 19, 23, 20, 23, 21, 23, 22, 23, 23, 23, 24, 23, 25, 23, 26, 23, 27, 23, 28, 23, 29, 23, 30, 23, 31, 23, 32, 23, 33, 23, 34, 23, 35, 23, 36, 23, 37, 23, 38, 23, 39, 23, 40, 23, 41, 23, 42, 23, 43, 23, 44, 23, 45, 23, 46, 23, 47, 23, 48, 23, 49, 23, 50, 23, 51, 23, 52, 23, 53, 23, 54, 23, 55, 23, 56, 23, 57, 23, 58, 23, 59, 23, 60, 23, 61, 23, 62, 23, 63, 23, 64, 23, 65, 23, 66, 23, 67, 23, 68, 23, 69, 23, 70, 23, 71, 23, 72, 23, 73, 23, 74, 23, 75, 23, 76, 23, 77, 23, 78, 23, 79, 23, 80, 23, 81, 23, 82, 23, 83, 23, 84, 23, 85, 23, 86, 23, 87, 23, 88, 23, 89, 23, 90, 23, 91, 23, 92, 23, 93, 23, 94, 23, 95, 23, 96, 23, 97, 23, 98, 23, 99, 23, 100, 23, 101, 23, 102, 23, 103, 23, 104, 23, 105, 23, 106, 23, 107, 23, 108, 23, 109, 23, 110, 23, 111, 23, 112, 23, 113, 23, 114, 23, 115, 23, 116, 23, 117, 23, 118, 23, 119, 23, 120, 23, 121, 23, 122, 23, 123, 23, 124, 23, 125, 23, 126, 23, 127, 23, 128, 23, 129, 23, 130, 23, 131, 23, 132, 23, 133, 23, 134, 23, 135, 23, 136, 23, 137, 23, 138, 23, 139, 23, 140, 23, 167, 23, 168, 23, 169, 23, 170, 23, 171, 23, 172, 23, 173, 23, 174, 23, 175, 23, 176, 23, 177, 23, 178, 23, 179, 23, 180, 23, 181, 23, 182, 23, 183, 23, 184, 23, 185, 23, 186, 23, 187, 23, 188, 24, 3, 24, 4, 24, 5, 24, 6, 24, 7, 24, 8, 24, 9, 24, 10, 24, 11, 24, 12, 24, 13, 24, 14, 24, 15, 24, 16, 24, 17, 24, 18, 24, 19, 24, 20, 24, 21, 24, 22, 24, 23, 24, 24, 24, 25, 24, 26, 24, 27, 24, 28, 24, 29, 24, 30, 24, 31, 24, 32, 24, 33, 24, 34, 24, 35, 24, 36, 24, 37, 24, 38, 24, 39, 24, 40, 24, 41, 24, 42, 24, 43, 24, 44, 24, 45, 24, 46, 24, 47, 24, 48, 24, 49, 24, 50, 24, 51, 24, 52, 24, 53, 24, 54, 24, 55, 24, 56, 24, 57, 24, 58, 24, 59, 24, 60, 24, 61, 24, 62, 24, 63, 24, 64, 24, 65, 24, 66, 24, 67, 24, 68, 24, 69, 24, 70, 24, 71, 24, 72, 24, 73, 24, 74, 24, 75, 24, 76, 24, 77, 24, 78, 24, 79, 24, 80, 24, 81, 24, 82, 24, 83, 24, 84, 24, 85, 24, 86, 24, 87, 24, 88, 24, 89, 24, 90, 24, 91, 24, 92, 24, 93, 24, 94, 24, 95, 24, 96, 24, 97, 24, 98, 24, 99, 24, 100, 24, 101, 24, 102, 24, 103, 24, 104, 24, 105, 24, 106, 24, 107, 24, 108, 24, 109, 24, 110, 24, 111, 24, 112, 24, 113, 24, 114, 24, 115, 24, 116, 24, 117, 24, 118, 24, 119, 24, 120, 24, 121, 24, 122, 24, 123, 24, 124, 24, 125, 24, 126, 24, 127, 24, 128, 24, 129, 24, 130, 24, 131, 24, 132, 24, 133, 24, 134, 24, 135, 24, 136, 24, 137, 24, 138, 24, 139, 24, 167, 24, 168, 24, 169, 24, 170, 24, 171, 24, 172, 24, 173, 24, 174, 24, 175, 24, 176, 24, 177, 24, 178, 24, 179, 24, 180, 24, 181, 24, 182, 24, 183, 24, 184, 24, 185, 24, 186, 24, 187, 24, 188, 25, 3, 25, 4, 25, 5, 25, 6, 25, 7, 25, 8, 25, 9, 25, 10, 25, 11, 25, 12, 25, 13, 25, 14, 25, 15, 25, 16, 25, 17, 25, 18, 25, 19, 25, 20, 25, 21, 25, 22, 25, 23, 25, 24, 25, 25, 25, 26, 25, 27, 25, 28, 25, 29, 25, 30, 25, 31, 25, 32, 25, 33, 25, 34, 25, 35, 25, 36, 25, 37, 25, 38, 25, 39, 25, 40, 25, 41, 25, 42, 25, 43, 25, 44, 25, 45, 25, 46, 25, 47, 25, 48, 25, 49, 25, 50, 25, 51, 25, 52, 25, 53, 25, 54, 25, 55, 25, 56, 25, 57, 25, 58, 25, 59, 25, 60, 25, 61, 25, 62, 25, 63, 25, 64, 25, 65, 25, 66, 25, 67, 25, 68, 25, 69, 25, 70, 25, 71, 25, 72, 25, 73, 25, 74, 25, 75, 25, 76, 25, 77, 25, 78, 25, 79, 25, 80, 25, 81, 25, 82, 25, 83, 25, 84, 25, 85, 25, 86, 25, 87, 25, 88, 25, 89, 25, 90, 25, 91, 25, 92, 25, 93, 25, 94, 25, 95, 25, 96, 25, 97, 25, 98, 25, 99, 25, 100, 25, 101, 25, 102, 25, 103, 25, 104, 25, 105, 25, 106, 25, 107, 25, 108, 25, 109, 25, 110, 25, 111, 25, 112, 25, 113, 25, 114, 25, 115, 25, 116, 25, 117, 25, 118, 25, 119, 25, 120, 25, 121, 25, 122, 25, 123, 25, 124, 25, 125, 25, 126, 25, 127, 25, 128, 25, 129, 25, 130, 25, 131, 25, 132, 25, 133, 25, 134, 25, 135, 25, 136, 25, 137, 25, 138, 25, 139, 25, 167, 25, 168, 25, 169, 25, 170, 25, 171, 25, 172, 25, 173, 25, 174, 25, 175, 25, 176, 25, 177, 25, 178, 25, 179, 25, 180, 25, 181, 25, 182, 25, 183, 25, 184, 25, 185, 25, 186, 25, 187, 25, 188, 26, 3, 26, 4, 26, 5, 26, 6, 26, 7, 26, 8, 26, 9, 26, 10, 26, 11, 26, 12, 26, 13, 26, 14, 26, 15, 26, 16, 26, 17, 26, 18, 26, 19, 26, 20, 26, 21, 26, 22, 26, 23, 26, 24, 26, 25, 26, 26, 26, 27, 26, 28, 26, 29, 26, 30, 26, 31, 26, 32, 26, 33, 26, 34, 26, 35, 26, 36, 26, 37, 26, 38, 26, 39, 26, 40, 26, 41, 26, 42, 26, 43, 26, 44, 26, 45, 26, 46, 26, 47, 26, 48, 26, 49, 26, 50, 26, 51, 26, 52, 26, 53, 26, 54, 26, 55, 26, 56, 26, 57, 26, 58, 26, 59, 26, 60, 26, 61, 26, 62, 26, 63, 26, 64, 26, 65, 26, 66, 26, 67, 26, 68, 26, 69, 26, 70, 26, 71, 26, 72, 26, 73, 26, 74, 26, 75, 26, 76, 26, 77, 26, 78, 26, 79, 26, 80, 26, 81, 26, 82, 26, 83, 26, 84, 26, 85, 26, 86, 26, 87, 26, 88, 26, 89, 26, 90, 26, 91, 26, 92, 26, 93, 26, 94, 26, 95, 26, 96, 26, 97, 26, 98, 26, 99, 26, 100, 26, 101, 26, 102, 26, 103, 26, 104, 26, 105, 26, 106, 26, 107, 26, 108, 26, 109, 26, 110, 26, 111, 26, 112, 26, 113, 26, 114, 26, 115, 26, 116, 26, 117, 26, 118, 26, 119, 26, 120, 26, 121, 26, 122, 26, 123, 26, 124, 26, 125, 26, 126, 26, 127, 26, 128, 26, 129, 26, 130, 26, 131, 26, 132, 26, 133, 26, 134, 26, 135, 26, 136, 26, 137, 26, 138, 26, 167, 26, 168, 26, 169, 26, 170, 26, 171, 26, 172, 26, 173, 26, 174, 26, 175, 26, 176, 26, 177, 26, 178, 26, 179, 26, 180, 26, 181, 26, 182, 26, 183, 26, 184, 26, 185, 26, 186, 26, 187, 26, 188, 27, 3, 27, 4, 27, 5, 27, 6, 27, 7, 27, 8, 27, 9, 27, 10, 27, 11, 27, 12, 27, 13, 27, 14, 27, 15, 27, 16, 27, 17, 27, 18, 27, 19, 27, 20, 27, 21, 27, 22, 27, 23, 27, 24, 27, 25, 27, 26, 27, 27, 27, 28, 27, 29, 27, 30, 27, 31, 27, 32, 27, 33, 27, 34, 27, 35, 27, 36, 27, 37, 27, 38, 27, 39, 27, 40, 27, 41, 27, 42, 27, 43, 27, 44, 27, 45, 27, 46, 27, 47, 27, 48, 27, 49, 27, 50, 27, 51, 27, 52, 27, 53, 27, 54, 27, 55, 27, 56, 27, 57, 27, 58, 27, 59, 27, 60, 27, 61, 27, 62, 27, 63, 27, 64, 27, 65, 27, 66, 27, 67, 27, 68, 27, 69, 27, 70, 27, 71, 27, 72, 27, 73, 27, 74, 27, 75, 27, 76, 27, 77, 27, 78, 27, 79, 27, 80, 27, 81, 27, 82, 27, 83, 27, 84, 27, 85, 27, 86, 27, 87, 27, 88, 27, 89, 27, 90, 27, 91, 27, 92, 27, 93, 27, 94, 27, 95, 27, 96, 27, 97, 27, 98, 27, 99, 27, 100, 27, 101, 27, 102, 27, 103, 27, 104, 27, 105, 27, 106, 27, 107, 27, 108, 27, 109, 27, 110, 27, 111, 27, 112, 27, 113, 27, 114, 27, 115, 27, 116, 27, 117, 27, 118, 27, 119, 27, 120, 27, 121, 27, 122, 27, 123, 27, 124, 27, 125, 27, 126, 27, 127, 27, 128, 27, 129, 27, 130, 27, 131, 27, 132, 27, 133, 27, 134, 27, 135, 27, 136, 27, 137, 27, 138, 27, 167, 27, 168, 27, 169, 27, 170, 27, 171, 27, 172, 27, 173, 27, 174, 27, 175, 27, 176, 27, 177, 27, 178, 27, 179, 27, 180, 27, 181, 27, 182, 27, 183, 27, 184, 27, 185, 27, 186, 27, 187, 27, 188, 28, 3, 28, 4, 28, 5, 28, 6, 28, 7, 28, 8, 28, 9, 28, 10, 28, 11, 28, 12, 28, 13, 28, 14, 28, 15, 28, 16, 28, 17, 28, 18, 28, 19, 28, 20, 28, 21, 28, 22, 28, 23, 28, 24, 28, 25, 28, 26, 28, 27, 28, 28, 28, 29, 28, 30, 28, 31, 28, 32, 28, 33, 28, 34, 28, 35, 28, 36, 28, 37, 28, 38, 28, 39, 28, 40, 28, 41, 28, 42, 28, 43, 28, 44, 28, 45, 28, 46, 28, 47, 28, 48, 28, 49, 28, 50, 28, 51, 28, 52, 28, 53, 28, 54, 28, 55, 28, 56, 28, 57, 28, 58, 28, 59, 28, 60, 28, 61, 28, 62, 28, 63, 28, 64, 28, 65, 28, 66, 28, 67, 28, 68, 28, 69, 28, 70, 28, 71, 28, 72, 28, 73, 28, 74, 28, 75, 28, 76, 28, 77, 28, 78, 28, 79, 28, 80, 28, 81, 28, 82, 28, 83, 28, 84, 28, 85, 28, 86, 28, 87, 28, 88, 28, 89, 28, 90, 28, 91, 28, 92, 28, 93, 28, 94, 28, 95, 28, 96, 28, 97, 28, 98, 28, 99, 28, 100, 28, 101, 28, 102, 28, 103, 28, 104, 28, 105, 28, 106, 28, 107, 28, 108, 28, 109, 28, 110, 28, 111, 28, 112, 28, 113, 28, 114, 28, 115, 28, 116, 28, 117, 28, 118, 28, 119, 28, 120, 28, 121, 28, 122, 28, 123, 28, 124, 28, 125, 28, 126, 28, 127, 28, 128, 28, 129, 28, 130, 28, 131, 28, 132, 28, 133, 28, 134, 28, 135, 28, 136, 28, 137, 28, 167, 28, 168, 28, 169, 28, 170, 28, 171, 28, 172, 28, 173, 28, 174, 28, 175, 28, 176, 28, 177, 28, 178, 28, 179, 28, 180, 28, 181, 28, 182, 28, 183, 28, 184, 28, 185, 28, 186, 28, 187, 28, 188, 29, 3, 29, 4, 29, 5, 29, 6, 29, 7, 29, 8, 29, 9, 29, 10, 29, 11, 29, 12, 29, 13, 29, 14, 29, 15, 29, 16, 29, 17, 29, 18, 29, 19, 29, 20, 29, 21, 29, 22, 29, 23, 29, 24, 29, 25, 29, 26, 29, 27, 29, 28, 29, 29, 29, 30, 29, 31, 29, 32, 29, 33, 29, 34, 29, 35, 29, 36, 29, 37, 29, 38, 29, 39, 29, 40, 29, 41, 29, 42, 29, 43, 29, 44, 29, 45, 29, 46, 29, 47, 29, 48, 29, 49, 29, 50, 29, 51, 29, 52, 29, 53, 29, 54, 29, 55, 29, 56, 29, 57, 29, 58, 29, 59, 29, 60, 29, 61, 29, 62, 29, 63, 29, 64, 29, 65, 29, 66, 29, 67, 29, 68, 29, 69, 29, 70, 29, 71, 29, 72, 29, 73, 29, 74, 29, 75, 29, 76, 29, 77, 29, 78, 29, 79, 29, 80, 29, 81, 29, 82, 29, 83, 29, 84, 29, 85, 29, 86, 29, 87, 29, 88, 29, 89, 29, 90, 29, 91, 29, 92, 29, 93, 29, 94, 29, 95, 29, 96, 29, 97, 29, 98, 29, 99, 29, 100, 29, 101, 29, 102, 29, 103, 29, 104, 29, 105, 29, 106, 29, 107, 29, 108, 29, 109, 29, 110, 29, 111, 29, 112, 29, 113, 29, 114, 29, 115, 29, 116, 29, 117, 29, 118, 29, 119, 29, 120, 29, 121, 29, 122, 29, 123, 29, 124, 29, 125, 29, 126, 29, 127, 29, 128, 29, 129, 29, 130, 29, 131, 29, 132, 29, 133, 29, 134, 29, 135, 29, 136, 29, 167, 29, 168, 29, 169, 29, 170, 29, 171, 29, 172, 29, 173, 29, 174, 29, 175, 29, 176, 29, 177, 29, 178, 29, 179, 29, 180, 29, 181, 29, 182, 29, 183, 29, 184, 29, 185, 29, 186, 29, 187, 29, 188, 30, 3, 30, 4, 30, 5, 30, 6, 30, 7, 30, 8, 30, 9, 30, 10, 30, 11, 30, 12, 30, 13, 30, 14, 30, 15, 30, 16, 30, 17, 30, 18, 30, 19, 30, 20, 30, 21, 30, 22, 30, 23, 30, 24, 30, 25, 30, 26, 30, 27, 30, 28, 30, 29, 30, 30, 30, 31, 30, 32, 30, 33, 30, 34, 30, 35, 30, 36, 30, 37, 30, 38, 30, 39, 30, 40, 30, 41, 30, 42, 30, 43, 30, 44, 30, 45, 30, 46, 30, 47, 30, 48, 30, 49, 30, 50, 30, 51, 30, 52, 30, 53, 30, 54, 30, 55, 30, 56, 30, 57, 30, 58, 30, 59, 30, 60, 30, 61, 30, 62, 30, 63, 30, 64, 30, 65, 30, 66, 30, 67, 30, 68, 30, 69, 30, 70, 30, 71, 30, 72, 30, 73, 30, 74, 30, 75, 30, 76, 30, 77, 30, 78, 30, 79, 30, 80, 30, 81, 30, 82, 30, 83, 30, 84, 30, 85, 30, 86, 30, 87, 30, 88, 30, 89, 30, 90, 30, 91, 30, 92, 30, 93, 30, 94, 30, 95, 30, 96, 30, 97, 30, 98, 30, 99, 30, 100, 30, 101, 30, 102, 30, 103, 30, 104, 30, 105, 30, 106, 30, 107, 30, 108, 30, 109, 30, 110, 30, 111, 30, 112, 30, 113, 30, 114, 30, 115, 30, 116, 30, 117, 30, 118, 30, 119, 30, 120, 30, 121, 30, 122, 30, 123, 30, 124, 30, 125, 30, 126, 30, 127, 30, 128, 30, 129, 30, 130, 30, 131, 30, 132, 30, 133, 30, 134, 30, 135, 30, 136, 30, 167, 30, 168, 30, 169, 30, 170, 30, 171, 30, 172, 30, 173, 30, 174, 30, 175, 30, 176, 30, 177, 30, 178, 30, 179, 30, 180, 30, 181, 30, 182, 30, 183, 30, 184, 30, 185, 30, 186, 30, 187, 30, 188, 31, 3, 31, 4, 31, 5, 31, 6, 31, 7, 31, 8, 31, 9, 31, 10, 31, 11, 31, 12, 31, 13, 31, 14, 31, 15, 31, 16, 31, 17, 31, 18, 31, 19, 31, 20, 31, 21, 31, 22, 31, 23, 31, 24, 31, 25, 31, 26, 31, 27, 31, 28, 31, 29, 31, 30, 31, 31, 31, 32, 31, 33, 31, 34, 31, 35, 31, 36, 31, 37, 31, 38, 31, 39, 31, 40, 31, 41, 31, 42, 31, 43, 31, 44, 31, 45, 31, 46, 31, 47, 31, 48, 31, 49, 31, 50, 31, 51, 31, 52, 31, 53, 31, 54, 31, 55, 31, 56, 31, 57, 31, 58, 31, 59, 31, 60, 31, 61, 31, 62, 31, 63, 31, 64, 31, 65, 31, 66, 31, 67, 31, 68, 31, 69, 31, 70, 31, 71, 31, 72, 31, 73, 31, 74, 31, 75, 31, 76, 31, 77, 31, 78, 31, 79, 31, 80, 31, 81, 31, 82, 31, 83, 31, 84, 31, 85, 31, 86, 31, 87, 31, 88, 31, 89, 31, 90, 31, 91, 31, 92, 31, 93, 31, 94, 31, 95, 31, 96, 31, 97, 31, 98, 31, 99, 31, 100, 31, 101, 31, 102, 31, 103, 31, 104, 31, 105, 31, 106, 31, 107, 31, 108, 31, 109, 31, 110, 31, 111, 31, 112, 31, 113, 31, 114, 31, 115, 31, 116, 31, 117, 31, 118, 31, 119, 31, 120, 31, 121, 31, 122, 31, 123, 31, 124, 31, 125, 31, 126, 31, 127, 31, 128, 31, 129, 31, 130, 31, 131, 31, 132, 31, 133, 31, 134, 31, 135, 31, 167, 31, 168, 31, 169, 31, 170, 31, 171, 31, 172, 31, 173, 31, 174, 31, 175, 31, 176, 31, 177, 31, 178, 31, 179, 31, 180, 31, 181, 31, 182, 31, 183, 31, 184, 31, 185, 31, 186, 31, 187, 31, 188, 32, 3, 32, 4, 32, 5, 32, 6, 32, 7, 32, 8, 32, 9, 32, 10, 32, 11, 32, 12, 32, 13, 32, 14, 32, 15, 32, 16, 32, 17, 32, 18, 32, 19, 32, 20, 32, 21, 32, 22, 32, 23, 32, 24, 32, 25, 32, 26, 32, 27, 32, 28, 32, 29, 32, 30, 32, 31, 32, 32, 32, 33, 32, 34, 32, 35, 32, 36, 32, 37, 32, 38, 32, 39, 32, 40, 32, 41, 32, 42, 32, 43, 32, 44, 32, 45, 32, 46, 32, 47, 32, 48, 32, 49, 32, 50, 32, 51, 32, 52, 32, 53, 32, 54, 32, 55, 32, 56, 32, 57, 32, 58, 32, 59, 32, 60, 32, 61, 32, 62, 32, 63, 32, 64, 32, 65, 32, 66, 32, 67, 32, 68, 32, 69, 32, 70, 32, 71, 32, 72, 32, 73, 32, 74, 32, 75, 32, 76, 32, 77, 32, 78, 32, 79, 32, 80, 32, 81, 32, 82, 32, 83, 32, 84, 32, 85, 32, 86, 32, 87, 32, 88, 32, 89, 32, 90, 32, 91, 32, 92, 32, 93, 32, 94, 32, 95, 32, 96, 32, 97, 32, 98, 32, 99, 32, 100, 32, 101, 32, 102, 32, 103, 32, 104, 32, 105, 32, 106, 32, 107, 32, 108, 32, 109, 32, 110, 32, 111, 32, 112, 32, 113, 32, 114, 32, 115, 32, 116, 32, 117, 32, 118, 32, 119, 32, 120, 32, 121, 32, 122, 32, 123, 32, 124, 32, 125, 32, 126, 32, 127, 32, 128, 32, 129, 32, 130, 32, 131, 32, 132, 32, 133, 32, 134, 32, 135, 32, 167, 32, 168, 32, 169, 32, 170, 32, 171, 32, 172, 32, 173, 32, 174, 32, 175, 32, 176, 32, 177, 32, 178, 32, 179, 32, 180, 32, 181, 32, 182, 32, 183, 32, 184, 32, 185, 32, 186, 32, 187, 32, 188, 33, 3, 33, 4, 33, 5, 33, 6, 33, 7, 33, 8, 33, 9, 33, 10, 33, 11, 33, 12, 33, 13, 33, 14, 33, 15, 33, 16, 33, 17, 33, 18, 33, 19, 33, 20, 33, 21, 33, 22, 33, 23, 33, 24, 33, 25, 33, 26, 33, 27, 33, 28, 33, 29, 33, 30, 33, 31, 33, 32, 33, 33, 33, 34, 33, 35, 33, 36, 33, 37, 33, 38, 33, 39, 33, 40, 33, 41, 33, 42, 33, 43, 33, 44, 33, 45, 33, 46, 33, 47, 33, 48, 33, 49, 33, 50, 33, 51, 33, 52, 33, 53, 33, 54, 33, 55, 33, 56, 33, 57, 33, 58, 33, 59, 33, 60, 33, 61, 33, 62, 33, 63, 33, 64, 33, 65, 33, 66, 33, 67, 33, 68, 33, 69, 33, 70, 33, 71, 33, 72, 33, 73, 33, 74, 33, 75, 33, 76, 33, 77, 33, 78, 33, 79, 33, 80, 33, 81, 33, 82, 33, 83, 33, 84, 33, 85, 33, 86, 33, 87, 33, 88, 33, 89, 33, 90, 33, 91, 33, 92, 33, 93, 33, 94, 33, 95, 33, 96, 33, 97, 33, 98, 33, 99, 33, 100, 33, 101, 33, 102, 33, 103, 33, 104, 33, 105, 33, 106, 33, 107, 33, 108, 33, 109, 33, 110, 33, 111, 33, 112, 33, 113, 33, 114, 33, 115, 33, 116, 33, 117, 33, 118, 33, 119, 33, 120, 33, 121, 33, 122, 33, 123, 33, 124, 33, 125, 33, 126, 33, 127, 33, 128, 33, 129, 33, 130, 33, 131, 33, 132, 33, 133, 33, 134, 33, 167, 33, 168, 33, 169, 33, 170, 33, 171, 33, 172, 33, 173, 33, 174, 33, 175, 33, 176, 33, 177, 33, 178, 33, 179, 33, 180, 33, 181, 33, 182, 33, 183, 33, 184, 33, 185, 33, 186, 33, 187, 33, 188, 34, 3, 34, 4, 34, 5, 34, 6, 34, 7, 34, 8, 34, 9, 34, 10, 34, 11, 34, 12, 34, 13, 34, 14, 34, 15, 34, 16, 34, 17, 34, 18, 34, 19, 34, 20, 34, 21, 34, 22, 34, 23, 34, 24, 34, 25, 34, 26, 34, 27, 34, 28, 34, 29, 34, 30, 34, 31, 34, 32, 34, 33, 34, 34, 34, 35, 34, 36, 34, 37, 34, 38, 34, 39, 34, 40, 34, 41, 34, 42, 34, 43, 34, 44, 34, 45, 34, 46, 34, 47, 34, 48, 34, 49, 34, 50, 34, 51, 34, 52, 34, 53, 34, 54, 34, 55, 34, 56, 34, 57, 34, 58, 34, 59, 34, 60, 34, 61, 34, 62, 34, 63, 34, 64, 34, 65, 34, 66, 34, 67, 34, 68, 34, 69, 34, 70, 34, 71, 34, 72, 34, 73, 34, 74, 34, 75, 34, 76, 34, 77, 34, 78, 34, 79, 34, 80, 34, 81, 34, 82, 34, 83, 34, 84, 34, 85, 34, 86, 34, 87, 34, 88, 34, 89, 34, 90, 34, 91, 34, 92, 34, 93, 34, 94, 34, 95, 34, 96, 34, 97, 34, 98, 34, 99, 34, 100, 34, 101, 34, 102, 34, 103, 34, 104, 34, 105, 34, 106, 34, 107, 34, 108, 34, 109, 34, 110, 34, 111, 34, 112, 34, 113, 34, 114, 34, 115, 34, 116, 34, 117, 34, 118, 34, 119, 34, 120, 34, 121, 34, 122, 34, 123, 34, 124, 34, 125, 34, 126, 34, 127, 34, 128, 34, 129, 34, 130, 34, 131, 34, 132, 34, 133, 34, 167, 34, 168, 34, 169, 34, 170, 34, 171, 34, 172, 34, 173, 34, 174, 34, 175, 34, 176, 34, 177, 34, 178, 34, 179, 34, 180, 34, 181, 34, 182, 34, 183, 34, 184, 34, 185, 34, 186, 34, 187, 34, 188, 35, 3, 35, 4, 35, 5, 35, 6, 35, 7, 35, 8, 35, 9, 35, 10, 35, 11, 35, 12, 35, 13, 35, 14, 35, 15, 35, 16, 35, 17, 35, 18, 35, 19, 35, 20, 35, 21, 35, 22, 35, 23, 35, 24, 35, 25, 35, 26, 35, 27, 35, 28, 35, 29, 35, 30, 35, 31, 35, 32, 35, 33, 35, 34, 35, 35, 35, 36, 35, 37, 35, 38, 35, 39, 35, 40, 35, 41, 35, 42, 35, 43, 35, 44, 35, 45, 35, 46, 35, 47, 35, 48, 35, 49, 35, 50, 35, 51, 35, 52, 35, 53, 35, 54, 35, 55, 35, 56, 35, 57, 35, 58, 35, 59, 35, 60, 35, 61, 35, 62, 35, 63, 35, 64, 35, 65, 35, 66, 35, 67, 35, 68, 35, 69, 35, 70, 35, 71, 35, 72, 35, 73, 35, 74, 35, 75, 35, 76, 35, 77, 35, 78, 35, 79, 35, 80, 35, 81, 35, 82, 35, 83, 35, 84, 35, 85, 35, 86, 35, 87, 35, 88, 35, 89, 35, 90, 35, 91, 35, 92, 35, 93, 35, 94, 35, 95, 35, 96, 35, 97, 35, 98, 35, 99, 35, 100, 35, 101, 35, 102, 35, 103, 35, 104, 35, 105, 35, 106, 35, 107, 35, 108, 35, 109, 35, 110, 35, 111, 35, 112, 35, 113, 35, 114, 35, 115, 35, 116, 35, 117, 35, 118, 35, 119, 35, 120, 35, 121, 35, 122, 35, 123, 35, 124, 35, 125, 35, 126, 35, 127, 35, 128, 35, 129, 35, 130, 35, 131, 35, 132, 35, 133, 35, 167, 35, 168, 35, 169, 35, 170, 35, 171, 35, 172, 35, 173, 35, 174, 35, 175, 35, 176, 35, 177, 35, 178, 35, 179, 35, 180, 35, 181, 35, 182, 35, 183, 35, 184, 35, 185, 35, 186, 35, 187, 35, 188, 36, 3, 36, 4, 36, 5, 36, 6, 36, 7, 36, 8, 36, 9, 36, 10, 36, 11, 36, 12, 36, 13, 36, 14, 36, 15, 36, 16, 36, 17, 36, 18, 36, 19, 36, 20, 36, 21, 36, 22, 36, 23, 36, 24, 36, 25, 36, 26, 36, 27, 36, 28, 36, 29, 36, 30, 36, 31, 36, 32, 36, 33, 36, 34, 36, 35, 36, 36, 36, 37, 36, 38, 36, 39, 36, 40, 36, 41, 36, 42, 36, 43, 36, 44, 36, 45, 36, 46, 36, 47, 36, 48, 36, 49, 36, 50, 36, 51, 36, 52, 36, 53, 36, 54, 36, 55, 36, 56, 36, 57, 36, 58, 36, 59, 36, 60, 36, 61, 36, 62, 36, 63, 36, 64, 36, 65, 36, 66, 36, 67, 36, 68, 36, 69, 36, 70, 36, 71, 36, 72, 36, 73, 36, 74, 36, 75, 36, 76, 36, 77, 36, 78, 36, 79, 36, 80, 36, 81, 36, 82, 36, 83, 36, 84, 36, 85, 36, 86, 36, 87, 36, 88, 36, 89, 36, 90, 36, 91, 36, 92, 36, 93, 36, 94, 36, 95, 36, 96, 36, 97, 36, 98, 36, 99, 36, 100, 36, 101, 36, 102, 36, 103, 36, 104, 36, 105, 36, 106, 36, 107, 36, 108, 36, 109, 36, 110, 36, 111, 36, 112, 36, 113, 36, 114, 36, 115, 36, 116, 36, 117, 36, 118, 36, 119, 36, 120, 36, 121, 36, 122, 36, 123, 36, 124, 36, 125, 36, 126, 36, 127, 36, 128, 36, 129, 36, 130, 36, 131, 36, 132, 36, 166, 36, 167, 36, 168, 36, 169, 36, 170, 36, 171, 36, 172, 36, 173, 36, 174, 36, 175, 36, 176, 36, 177, 36, 178, 36, 179, 36, 180, 36, 181, 36, 182, 36, 183, 36, 184, 36, 185, 36, 186, 36, 187, 36, 188, 37, 3, 37, 4, 37, 5, 37, 6, 37, 7, 37, 8, 37, 9, 37, 10, 37, 11, 37, 12, 37, 13, 37, 14, 37, 15, 37, 16, 37, 17, 37, 18, 37, 19, 37, 20, 37, 21, 37, 22, 37, 23, 37, 24, 37, 25, 37, 26, 37, 27, 37, 28, 37, 29, 37, 30, 37, 31, 37, 32, 37, 33, 37, 34, 37, 35, 37, 36, 37, 37, 37, 38, 37, 39, 37, 40, 37, 41, 37, 42, 37, 43, 37, 44, 37, 45, 37, 46, 37, 47, 37, 48, 37, 49, 37, 50, 37, 51, 37, 52, 37, 53, 37, 54, 37, 55, 37, 56, 37, 57, 37, 58, 37, 59, 37, 60, 37, 61, 37, 62, 37, 63, 37, 64, 37, 65, 37, 66, 37, 67, 37, 68, 37, 69, 37, 70, 37, 71, 37, 72, 37, 73, 37, 74, 37, 75, 37, 76, 37, 77, 37, 78, 37, 79, 37, 80, 37, 81, 37, 82, 37, 83, 37, 84, 37, 85, 37, 86, 37, 87, 37, 88, 37, 89, 37, 90, 37, 91, 37, 92, 37, 93, 37, 94, 37, 95, 37, 96, 37, 97, 37, 98, 37, 99, 37, 100, 37, 101, 37, 102, 37, 103, 37, 104, 37, 105, 37, 106, 37, 107, 37, 108, 37, 109, 37, 110, 37, 111, 37, 112, 37, 113, 37, 114, 37, 115, 37, 116, 37, 117, 37, 118, 37, 119, 37, 120, 37, 121, 37, 122, 37, 123, 37, 124, 37, 125, 37, 126, 37, 127, 37, 128, 37, 129, 37, 130, 37, 131, 37, 166, 37, 167, 37, 168, 37, 169, 37, 170, 37, 171, 37, 172, 37, 173, 37, 174, 37, 175, 37, 176, 37, 177, 37, 178, 37, 179, 37, 180, 37, 181, 37, 182, 37, 183, 37, 184, 37, 185, 37, 186, 37, 187, 37, 188, 38, 3, 38, 4, 38, 5, 38, 6, 38, 7, 38, 8, 38, 9, 38, 10, 38, 11, 38, 12, 38, 13, 38, 14, 38, 15, 38, 16, 38, 17, 38, 18, 38, 19, 38, 20, 38, 21, 38, 22, 38, 23, 38, 24, 38, 25, 38, 26, 38, 27, 38, 28, 38, 29, 38, 30, 38, 31, 38, 32, 38, 33, 38, 34, 38, 35, 38, 36, 38, 37, 38, 38, 38, 39, 38, 40, 38, 41, 38, 42, 38, 43, 38, 44, 38, 45, 38, 46, 38, 47, 38, 48, 38, 49, 38, 50, 38, 51, 38, 52, 38, 53, 38, 54, 38, 55, 38, 56, 38, 57, 38, 58, 38, 59, 38, 60, 38, 61, 38, 62, 38, 63, 38, 64, 38, 65, 38, 66, 38, 67, 38, 68, 38, 69, 38, 70, 38, 71, 38, 72, 38, 73, 38, 74, 38, 75, 38, 76, 38, 77, 38, 78, 38, 79, 38, 80, 38, 81, 38, 82, 38, 83, 38, 84, 38, 85, 38, 86, 38, 87, 38, 88, 38, 89, 38, 90, 38, 91, 38, 92, 38, 93, 38, 94, 38, 95, 38, 96, 38, 97, 38, 98, 38, 99, 38, 100, 38, 101, 38, 102, 38, 103, 38, 104, 38, 105, 38, 106, 38, 107, 38, 108, 38, 109, 38, 110, 38, 111, 38, 112, 38, 113, 38, 114, 38, 115, 38, 116, 38, 117, 38, 118, 38, 119, 38, 120, 38, 121, 38, 122, 38, 123, 38, 124, 38, 125, 38, 126, 38, 127, 38, 128, 38, 129, 38, 130, 38, 131, 38, 166, 38, 167, 38, 168, 38, 169, 38, 170, 38, 171, 38, 172, 38, 173, 38, 174, 38, 175, 38, 176, 38, 177, 38, 178, 38, 179, 38, 180, 38, 181, 38, 182, 38, 183, 38, 184, 38, 185, 38, 186, 38, 187, 38, 188, 39, 3, 39, 4, 39, 5, 39, 6, 39, 7, 39, 8, 39, 9, 39, 10, 39, 11, 39, 12, 39, 13, 39, 14, 39, 15, 39, 16, 39, 17, 39, 18, 39, 19, 39, 20, 39, 21, 39, 22, 39, 23, 39, 24, 39, 25, 39, 26, 39, 27, 39, 28, 39, 29, 39, 30, 39, 31, 39, 32, 39, 33, 39, 34, 39, 35, 39, 36, 39, 37, 39, 38, 39, 39, 39, 40, 39, 41, 39, 42, 39, 43, 39, 44, 39, 45, 39, 46, 39, 47, 39, 48, 39, 49, 39, 50, 39, 51, 39, 52, 39, 53, 39, 54, 39, 55, 39, 56, 39, 57, 39, 58, 39, 59, 39, 60, 39, 61, 39, 62, 39, 63, 39, 64, 39, 65, 39, 66, 39, 67, 39, 68, 39, 69, 39, 70, 39, 71, 39, 72, 39, 73, 39, 74, 39, 75, 39, 76, 39, 77, 39, 78, 39, 79, 39, 80, 39, 81, 39, 82, 39, 83, 39, 84, 39, 85, 39, 86, 39, 87, 39, 88, 39, 89, 39, 90, 39, 91, 39, 92, 39, 93, 39, 94, 39, 95, 39, 96, 39, 97, 39, 98, 39, 99, 39, 100, 39, 101, 39, 102, 39, 103, 39, 104, 39, 105, 39, 106, 39, 107, 39, 108, 39, 109, 39, 110, 39, 111, 39, 112, 39, 113, 39, 114, 39, 115, 39, 116, 39, 117, 39, 118, 39, 119, 39, 120, 39, 121, 39, 122, 39, 123, 39, 124, 39, 125, 39, 126, 39, 127, 39, 128, 39, 129, 39, 130, 39, 166, 39, 167, 39, 168, 39, 169, 39, 170, 39, 171, 39, 172, 39, 173, 39, 174, 39, 175, 39, 176, 39, 177, 39, 178, 39, 179, 39, 180, 39, 181, 39, 182, 39, 183, 39, 184, 39, 185, 39, 186, 39, 187, 39, 188, 40, 3, 40, 4, 40, 5, 40, 6, 40, 7, 40, 8, 40, 9, 40, 10, 40, 11, 40, 12, 40, 13, 40, 14, 40, 15, 40, 16, 40, 17, 40, 18, 40, 19, 40, 20, 40, 21, 40, 22, 40, 23, 40, 24, 40, 25, 40, 26, 40, 27, 40, 28, 40, 29, 40, 30, 40, 31, 40, 32, 40, 33, 40, 34, 40, 35, 40, 36, 40, 37, 40, 38, 40, 39, 40, 40, 40, 41, 40, 42, 40, 43, 40, 44, 40, 45, 40, 46, 40, 47, 40, 48, 40, 49, 40, 50, 40, 51, 40, 52, 40, 53, 40, 54, 40, 55, 40, 56, 40, 57, 40, 58, 40, 59, 40, 60, 40, 61, 40, 62, 40, 63, 40, 64, 40, 65, 40, 66, 40, 67, 40, 68, 40, 69, 40, 70, 40, 71, 40, 72, 40, 73, 40, 74, 40, 75, 40, 76, 40, 77, 40, 78, 40, 79, 40, 80, 40, 81, 40, 82, 40, 83, 40, 84, 40, 85, 40, 86, 40, 87, 40, 88, 40, 89, 40, 90, 40, 91, 40, 92, 40, 93, 40, 94, 40, 95, 40, 96, 40, 97, 40, 98, 40, 99, 40, 100, 40, 101, 40, 102, 40, 103, 40, 104, 40, 105, 40, 106, 40, 107, 40, 108, 40, 109, 40, 110, 40, 111, 40, 112, 40, 113, 40, 114, 40, 115, 40, 116, 40, 117, 40, 118, 40, 119, 40, 120, 40, 121, 40, 122, 40, 123, 40, 124, 40, 125, 40, 126, 40, 127, 40, 128, 40, 129, 40, 130, 40, 166, 40, 167, 40, 168, 40, 169, 40, 170, 40, 171, 40, 172, 40, 173, 40, 174, 40, 175, 40, 176, 40, 177, 40, 178, 40, 179, 40, 180, 40, 181, 40, 182, 40, 183, 40, 184, 40, 185, 40, 186, 40, 187, 40, 188, 41, 3, 41, 4, 41, 5, 41, 6, 41, 7, 41, 8, 41, 9, 41, 10, 41, 11, 41, 12, 41, 13, 41, 14, 41, 15, 41, 16, 41, 17, 41, 18, 41, 19, 41, 20, 41, 21, 41, 22, 41, 23, 41, 24, 41, 25, 41, 26, 41, 27, 41, 28, 41, 29, 41, 30, 41, 31, 41, 32, 41, 33, 41, 34, 41, 35, 41, 36, 41, 37, 41, 38, 41, 39, 41, 40, 41, 41, 41, 42, 41, 43, 41, 44, 41, 45, 41, 46, 41, 47, 41, 48, 41, 49, 41, 50, 41, 51, 41, 52, 41, 53, 41, 54, 41, 55, 41, 56, 41, 57, 41, 58, 41, 59, 41, 60, 41, 61, 41, 62, 41, 63, 41, 64, 41, 65, 41, 66, 41, 67, 41, 68, 41, 69, 41, 70, 41, 71, 41, 72, 41, 73, 41, 74, 41, 75, 41, 76, 41, 77, 41, 78, 41, 79, 41, 80, 41, 81, 41, 82, 41, 83, 41, 84, 41, 85, 41, 86, 41, 87, 41, 88, 41, 89, 41, 90, 41, 91, 41, 92, 41, 93, 41, 94, 41, 95, 41, 96, 41, 97, 41, 98, 41, 99, 41, 100, 41, 101, 41, 102, 41, 103, 41, 104, 41, 105, 41, 106, 41, 107, 41, 108, 41, 109, 41, 110, 41, 111, 41, 112, 41, 113, 41, 114, 41, 115, 41, 116, 41, 117, 41, 118, 41, 119, 41, 120, 41, 121, 41, 122, 41, 123, 41, 124, 41, 125, 41, 126, 41, 127, 41, 128, 41, 129, 41, 166, 41, 167, 41, 168, 41, 169, 41, 170, 41, 171, 41, 172, 41, 173, 41, 174, 41, 175, 41, 176, 41, 177, 41, 178, 41, 179, 41, 180, 41, 181, 41, 182, 41, 183, 41, 184, 41, 185, 41, 186, 41, 187, 41, 188, 42, 3, 42, 4, 42, 5, 42, 6, 42, 7, 42, 8, 42, 9, 42, 10, 42, 11, 42, 12, 42, 13, 42, 14, 42, 15, 42, 16, 42, 17, 42, 18, 42, 19, 42, 20, 42, 21, 42, 22, 42, 23, 42, 24, 42, 25, 42, 26, 42, 27, 42, 28, 42, 29, 42, 30, 42, 31, 42, 32, 42, 33, 42, 34, 42, 35, 42, 36, 42, 37, 42, 38, 42, 39, 42, 40, 42, 41, 42, 42, 42, 43, 42, 44, 42, 45, 42, 46, 42, 47, 42, 48, 42, 49, 42, 50, 42, 51, 42, 52, 42, 53, 42, 54, 42, 55, 42, 56, 42, 57, 42, 58, 42, 59, 42, 60, 42, 61, 42, 62, 42, 63, 42, 64, 42, 65, 42, 66, 42, 67, 42, 68, 42, 69, 42, 70, 42, 71, 42, 72, 42, 73, 42, 74, 42, 75, 42, 76, 42, 77, 42, 78, 42, 79, 42, 80, 42, 81, 42, 82, 42, 83, 42, 84, 42, 85, 42, 86, 42, 87, 42, 88, 42, 89, 42, 90, 42, 91, 42, 92, 42, 93, 42, 94, 42, 95, 42, 96, 42, 97, 42, 98, 42, 99, 42, 100, 42, 101, 42, 102, 42, 103, 42, 104, 42, 105, 42, 106, 42, 107, 42, 108, 42, 109, 42, 110, 42, 111, 42, 112, 42, 113, 42, 114, 42, 115, 42, 116, 42, 117, 42, 118, 42, 119, 42, 120, 42, 121, 42, 122, 42, 123, 42, 124, 42, 125, 42, 126, 42, 127, 42, 128, 42, 166, 42, 167, 42, 168, 42, 169, 42, 170, 42, 171, 42, 172, 42, 173, 42, 174, 42, 175, 42, 176, 42, 177, 42, 178, 42, 179, 42, 180, 42, 181, 42, 182, 42, 183, 42, 184, 42, 185, 42, 186, 42, 187, 42, 188, 43, 3, 43, 4, 43, 5, 43, 6, 43, 7, 43, 8, 43, 9, 43, 10, 43, 11, 43, 12, 43, 13, 43, 14, 43, 15, 43, 16, 43, 17, 43, 18, 43, 19, 43, 20, 43, 21, 43, 22, 43, 23, 43, 24, 43, 25, 43, 26, 43, 27, 43, 28, 43, 29, 43, 30, 43, 31, 43, 32, 43, 33, 43, 34, 43, 35, 43, 36, 43, 37, 43, 38, 43, 39, 43, 40, 43, 41, 43, 42, 43, 43, 43, 44, 43, 45, 43, 46, 43, 47, 43, 48, 43, 49, 43, 50, 43, 51, 43, 52, 43, 53, 43, 54, 43, 55, 43, 56, 43, 57, 43, 58, 43, 59, 43, 60, 43, 61, 43, 62, 43, 63, 43, 64, 43, 65, 43, 66, 43, 67, 43, 68, 43, 69, 43, 70, 43, 71, 43, 72, 43, 73, 43, 74, 43, 75, 43, 76, 43, 77, 43, 78, 43, 79, 43, 80, 43, 81, 43, 82, 43, 83, 43, 84, 43, 85, 43, 86, 43, 87, 43, 88, 43, 89, 43, 90, 43, 91, 43, 92, 43, 93, 43, 94, 43, 95, 43, 96, 43, 97, 43, 98, 43, 99, 43, 100, 43, 101, 43, 102, 43, 103, 43, 104, 43, 105, 43, 106, 43, 107, 43, 108, 43, 109, 43, 110, 43, 111, 43, 112, 43, 113, 43, 114, 43, 115, 43, 116, 43, 117, 43, 118, 43, 119, 43, 120, 43, 121, 43, 122, 43, 123, 43, 124, 43, 125, 43, 126, 43, 127, 43, 166, 43, 167, 43, 168, 43, 169, 43, 170, 43, 171, 43, 172, 43, 173, 43, 174, 43, 175, 43, 176, 43, 177, 43, 178, 43, 179, 43, 180, 43, 181, 43, 182, 43, 183, 43, 184, 43, 185, 43, 186, 43, 187, 43, 188, 44, 3, 44, 4, 44, 5, 44, 6, 44, 7, 44, 8, 44, 9, 44, 10, 44, 11, 44, 12, 44, 13, 44, 14, 44, 15, 44, 16, 44, 17, 44, 18, 44, 19, 44, 20, 44, 21, 44, 22, 44, 23, 44, 24, 44, 25, 44, 26, 44, 27, 44, 28, 44, 29, 44, 30, 44, 31, 44, 32, 44, 33, 44, 34, 44, 35, 44, 36, 44, 37, 44, 38, 44, 39, 44, 40, 44, 41, 44, 42, 44, 43, 44, 44, 44, 45, 44, 46, 44, 47, 44, 48, 44, 49, 44, 50, 44, 51, 44, 52, 44, 53, 44, 54, 44, 55, 44, 56, 44, 57, 44, 58, 44, 59, 44, 60, 44, 61, 44, 62, 44, 63, 44, 64, 44, 65, 44, 66, 44, 67, 44, 68, 44, 69, 44, 70, 44, 71, 44, 72, 44, 73, 44, 74, 44, 75, 44, 76, 44, 77, 44, 78, 44, 79, 44, 80, 44, 81, 44, 82, 44, 83, 44, 84, 44, 85, 44, 86, 44, 87, 44, 88, 44, 89, 44, 90, 44, 91, 44, 92, 44, 93, 44, 94, 44, 95, 44, 96, 44, 97, 44, 98, 44, 99, 44, 100, 44, 101, 44, 102, 44, 103, 44, 104, 44, 105, 44, 106, 44, 107, 44, 108, 44, 109, 44, 110, 44, 111, 44, 112, 44, 113, 44, 114, 44, 115, 44, 116, 44, 117, 44, 118, 44, 119, 44, 120, 44, 121, 44, 122, 44, 123, 44, 124, 44, 125, 44, 126, 44, 166, 44, 167, 44, 168, 44, 169, 44, 170, 44, 171, 44, 172, 44, 173, 44, 174, 44, 175, 44, 176, 44, 177, 44, 178, 44, 179, 44, 180, 44, 181, 44, 182, 44, 183, 44, 184, 44, 185, 44, 186, 44, 187, 44, 188, 45, 3, 45, 4, 45, 5, 45, 6, 45, 7, 45, 8, 45, 9, 45, 10, 45, 11, 45, 12, 45, 13, 45, 14, 45, 15, 45, 16, 45, 17, 45, 18, 45, 19, 45, 20, 45, 21, 45, 22, 45, 23, 45, 24, 45, 25, 45, 26, 45, 27, 45, 28, 45, 29, 45, 30, 45, 31, 45, 32, 45, 33, 45, 34, 45, 35, 45, 36, 45, 37, 45, 38, 45, 39, 45, 40, 45, 41, 45, 42, 45, 43, 45, 44, 45, 45, 45, 46, 45, 47, 45, 48, 45, 49, 45, 50, 45, 51, 45, 52, 45, 53, 45, 54, 45, 55, 45, 56, 45, 57, 45, 58, 45, 59, 45, 60, 45, 61, 45, 62, 45, 63, 45, 64, 45, 65, 45, 66, 45, 67, 45, 68, 45, 69, 45, 70, 45, 71, 45, 72, 45, 73, 45, 74, 45, 75, 45, 76, 45, 77, 45, 78, 45, 79, 45, 80, 45, 81, 45, 82, 45, 83, 45, 84, 45, 85, 45, 86, 45, 87, 45, 88, 45, 89, 45, 90, 45, 91, 45, 92, 45, 93, 45, 94, 45, 95, 45, 96, 45, 97, 45, 98, 45, 99, 45, 100, 45, 101, 45, 102, 45, 103, 45, 104, 45, 105, 45, 106, 45, 107, 45, 108, 45, 109, 45, 110, 45, 111, 45, 112, 45, 113, 45, 114, 45, 115, 45, 116, 45, 117, 45, 118, 45, 119, 45, 120, 45, 121, 45, 122, 45, 123, 45, 124, 45, 125, 45, 166, 45, 167, 45, 168, 45, 169, 45, 170, 45, 171, 45, 172, 45, 173, 45, 174, 45, 175, 45, 176, 45, 177, 45, 178, 45, 179, 45, 180, 45, 181, 45, 182, 45, 183, 45, 184, 45, 185, 45, 186, 45, 187, 45, 188, 46, 3, 46, 4, 46, 5, 46, 6, 46, 7, 46, 8, 46, 9, 46, 10, 46, 11, 46, 12, 46, 13, 46, 14, 46, 15, 46, 16, 46, 17, 46, 18, 46, 19, 46, 20, 46, 21, 46, 22, 46, 23, 46, 24, 46, 25, 46, 26, 46, 27, 46, 28, 46, 29, 46, 30, 46, 31, 46, 32, 46, 33, 46, 34, 46, 35, 46, 36, 46, 37, 46, 38, 46, 39, 46, 40, 46, 41, 46, 42, 46, 43, 46, 44, 46, 45, 46, 46, 46, 47, 46, 48, 46, 49, 46, 50, 46, 51, 46, 52, 46, 53, 46, 54, 46, 55, 46, 56, 46, 57, 46, 58, 46, 59, 46, 60, 46, 61, 46, 62, 46, 63, 46, 64, 46, 65, 46, 66, 46, 67, 46, 68, 46, 69, 46, 70, 46, 71, 46, 72, 46, 73, 46, 74, 46, 75, 46, 76, 46, 77, 46, 78, 46, 79, 46, 80, 46, 81, 46, 82, 46, 83, 46, 84, 46, 85, 46, 86, 46, 87, 46, 88, 46, 89, 46, 90, 46, 91, 46, 92, 46, 93, 46, 94, 46, 95, 46, 96, 46, 97, 46, 98, 46, 99, 46, 100, 46, 101, 46, 102, 46, 103, 46, 104, 46, 105, 46, 106, 46, 107, 46, 108, 46, 109, 46, 110, 46, 111, 46, 112, 46, 113, 46, 114, 46, 115, 46, 116, 46, 117, 46, 118, 46, 119, 46, 120, 46, 121, 46, 122, 46, 123, 46, 124, 46, 165, 46, 166, 46, 167, 46, 168, 46, 169, 46, 170, 46, 171, 46, 172, 46, 173, 46, 174, 46, 175, 46, 176, 46, 177, 46, 178, 46, 179, 46, 180, 46, 181, 46, 182, 46, 183, 46, 184, 46, 185, 46, 186, 46, 187, 46, 188, 47, 3, 47, 4, 47, 5, 47, 6, 47, 7, 47, 8, 47, 9, 47, 10, 47, 11, 47, 12, 47, 13, 47, 14, 47, 15, 47, 16, 47, 17, 47, 18, 47, 19, 47, 20, 47, 21, 47, 22, 47, 23, 47, 24, 47, 25, 47, 26, 47, 27, 47, 28, 47, 29, 47, 30, 47, 31, 47, 32, 47, 33, 47, 34, 47, 35, 47, 36, 47, 37, 47, 38, 47, 39, 47, 40, 47, 41, 47, 42, 47, 43, 47, 44, 47, 45, 47, 46, 47, 47, 47, 48, 47, 49, 47, 50, 47, 51, 47, 52, 47, 53, 47, 54, 47, 55, 47, 56, 47, 57, 47, 58, 47, 59, 47, 60, 47, 61, 47, 62, 47, 63, 47, 64, 47, 65, 47, 66, 47, 67, 47, 68, 47, 69, 47, 70, 47, 71, 47, 72, 47, 73, 47, 74, 47, 75, 47, 76, 47, 77, 47, 78, 47, 79, 47, 80, 47, 81, 47, 82, 47, 83, 47, 84, 47, 85, 47, 86, 47, 87, 47, 88, 47, 89, 47, 90, 47, 91, 47, 92, 47, 93, 47, 94, 47, 95, 47, 96, 47, 97, 47, 98, 47, 99, 47, 100, 47, 101, 47, 102, 47, 103, 47, 104, 47, 105, 47, 106, 47, 107, 47, 108, 47, 109, 47, 110, 47, 111, 47, 112, 47, 113, 47, 114, 47, 115, 47, 116, 47, 117, 47, 118, 47, 119, 47, 120, 47, 121, 47, 122, 47, 123, 47, 165, 47, 166, 47, 167, 47, 168, 47, 169, 47, 170, 47, 171, 47, 172, 47, 173, 47, 174, 47, 175, 47, 176, 47, 177, 47, 178, 47, 179, 47, 180, 47, 181, 47, 182, 47, 183, 47, 184, 47, 185, 47, 186, 47, 187, 47, 188, 48, 3, 48, 4, 48, 5, 48, 6, 48, 7, 48, 8, 48, 9, 48, 10, 48, 11, 48, 12, 48, 13, 48, 14, 48, 15, 48, 16, 48, 17, 48, 18, 48, 19, 48, 20, 48, 21, 48, 22, 48, 23, 48, 24, 48, 25, 48, 26, 48, 27, 48, 28, 48, 29, 48, 30, 48, 31, 48, 32, 48, 33, 48, 34, 48, 35, 48, 36, 48, 37, 48, 38, 48, 39, 48, 40, 48, 41, 48, 42, 48, 43, 48, 44, 48, 45, 48, 46, 48, 47, 48, 48, 48, 49, 48, 50, 48, 51, 48, 52, 48, 53, 48, 54, 48, 55, 48, 56, 48, 57, 48, 58, 48, 59, 48, 60, 48, 61, 48, 62, 48, 63, 48, 64, 48, 65, 48, 66, 48, 67, 48, 68, 48, 69, 48, 70, 48, 71, 48, 72, 48, 73, 48, 74, 48, 75, 48, 76, 48, 77, 48, 78, 48, 79, 48, 80, 48, 81, 48, 82, 48, 83, 48, 84, 48, 85, 48, 86, 48, 87, 48, 88, 48, 89, 48, 90, 48, 91, 48, 92, 48, 93, 48, 94, 48, 95, 48, 96, 48, 97, 48, 98, 48, 99, 48, 100, 48, 101, 48, 102, 48, 103, 48, 104, 48, 105, 48, 106, 48, 107, 48, 108, 48, 109, 48, 110, 48, 111, 48, 112, 48, 113, 48, 114, 48, 115, 48, 116, 48, 117, 48, 118, 48, 119, 48, 120, 48, 121, 48, 122, 48, 165, 48, 166, 48, 167, 48, 168, 48, 169, 48, 170, 48, 171, 48, 172, 48, 173, 48, 174, 48, 175, 48, 176, 48, 177, 48, 178, 48, 179, 48, 180, 48, 181, 48, 182, 48, 183, 48, 184, 48, 185, 48, 186, 48, 187, 48, 188, 49, 3, 49, 4, 49, 5, 49, 6, 49, 7, 49, 8, 49, 9, 49, 10, 49, 11, 49, 12, 49, 13, 49, 14, 49, 15, 49, 16, 49, 17, 49, 18, 49, 19, 49, 20, 49, 21, 49, 22, 49, 23, 49, 24, 49, 25, 49, 26, 49, 27, 49, 28, 49, 29, 49, 30, 49, 31, 49, 32, 49, 33, 49, 34, 49, 35, 49, 36, 49, 37, 49, 38, 49, 39, 49, 40, 49, 41, 49, 42, 49, 43, 49, 44, 49, 45, 49, 46, 49, 47, 49, 48, 49, 49, 49, 50, 49, 51, 49, 52, 49, 53, 49, 54, 49, 55, 49, 56, 49, 57, 49, 58, 49, 59, 49, 60, 49, 61, 49, 62, 49, 63, 49, 64, 49, 65, 49, 66, 49, 67, 49, 68, 49, 69, 49, 70, 49, 71, 49, 72, 49, 73, 49, 74, 49, 75, 49, 76, 49, 77, 49, 78, 49, 79, 49, 80, 49, 81, 49, 82, 49, 83, 49, 84, 49, 85, 49, 86, 49, 87, 49, 88, 49, 89, 49, 90, 49, 91, 49, 92, 49, 93, 49, 94, 49, 95, 49, 96, 49, 97, 49, 98, 49, 99, 49, 100, 49, 101, 49, 102, 49, 103, 49, 104, 49, 105, 49, 106, 49, 107, 49, 108, 49, 109, 49, 110, 49, 111, 49, 112, 49, 113, 49, 114, 49, 115, 49, 116, 49, 117, 49, 118, 49, 119, 49, 120, 49, 121, 49, 165, 49, 166, 49, 167, 49, 168, 49, 169, 49, 170, 49, 171, 49, 172, 49, 173, 49, 174, 49, 175, 49, 176, 49, 177, 49, 178, 49, 179, 49, 180, 49, 181, 49, 182, 49, 183, 49, 184, 49, 185, 49, 186, 49, 187, 49, 188, 50, 3, 50, 4, 50, 5, 50, 6, 50, 7, 50, 8, 50, 9, 50, 10, 50, 11, 50, 12, 50, 13, 50, 14, 50, 15, 50, 16, 50, 17, 50, 18, 50, 19, 50, 20, 50, 21, 50, 22, 50, 23, 50, 24, 50, 25, 50, 26, 50, 27, 50, 28, 50, 29, 50, 30, 50, 31, 50, 32, 50, 33, 50, 34, 50, 35, 50, 36, 50, 37, 50, 38, 50, 39, 50, 40, 50, 41, 50, 42, 50, 43, 50, 44, 50, 45, 50, 46, 50, 47, 50, 48, 50, 49, 50, 50, 50, 51, 50, 52, 50, 53, 50, 54, 50, 55, 50, 56, 50, 57, 50, 58, 50, 59, 50, 60, 50, 61, 50, 62, 50, 63, 50, 64, 50, 65, 50, 66, 50, 67, 50, 68, 50, 69, 50, 70, 50, 71, 50, 72, 50, 73, 50, 74, 50, 75, 50, 76, 50, 77, 50, 78, 50, 79, 50, 80, 50, 81, 50, 82, 50, 83, 50, 84, 50, 85, 50, 86, 50, 87, 50, 88, 50, 89, 50, 90, 50, 91, 50, 92, 50, 93, 50, 94, 50, 95, 50, 96, 50, 97, 50, 98, 50, 99, 50, 100, 50, 101, 50, 102, 50, 103, 50, 104, 50, 105, 50, 106, 50, 107, 50, 108, 50, 109, 50, 110, 50, 111, 50, 112, 50, 113, 50, 114, 50, 115, 50, 116, 50, 117, 50, 118, 50, 119, 50, 120, 50, 165, 50, 166, 50, 167, 50, 168, 50, 169, 50, 170, 50, 171, 50, 172, 50, 173, 50, 174, 50, 175, 50, 176, 50, 177, 50, 178, 50, 179, 50, 180, 50, 181, 50, 182, 50, 183, 50, 184, 50, 185, 50, 186, 50, 187, 50, 188, 51, 3, 51, 4, 51, 5, 51, 6, 51, 7, 51, 8, 51, 9, 51, 10, 51, 11, 51, 12, 51, 13, 51, 14, 51, 15, 51, 16, 51, 17, 51, 18, 51, 19, 51, 20, 51, 21, 51, 22, 51, 23, 51, 24, 51, 25, 51, 26, 51, 27, 51, 28, 51, 29, 51, 30, 51, 31, 51, 32, 51, 33, 51, 34, 51, 35, 51, 36, 51, 37, 51, 38, 51, 39, 51, 40, 51, 41, 51, 42, 51, 43, 51, 44, 51, 45, 51, 46, 51, 47, 51, 48, 51, 49, 51, 50, 51, 51, 51, 52, 51, 53, 51, 54, 51, 55, 51, 56, 51, 57, 51, 58, 51, 59, 51, 60, 51, 61, 51, 62, 51, 63, 51, 64, 51, 65, 51, 66, 51, 67, 51, 68, 51, 69, 51, 70, 51, 71, 51, 72, 51, 73, 51, 74, 51, 75, 51, 76, 51, 77, 51, 78, 51, 79, 51, 80, 51, 81, 51, 82, 51, 83, 51, 84, 51, 85, 51, 86, 51, 87, 51, 88, 51, 89, 51, 90, 51, 91, 51, 92, 51, 93, 51, 94, 51, 95, 51, 96, 51, 97, 51, 98, 51, 99, 51, 100, 51, 101, 51, 102, 51, 103, 51, 104, 51, 105, 51, 106, 51, 107, 51, 108, 51, 109, 51, 110, 51, 111, 51, 112, 51, 113, 51, 114, 51, 115, 51, 116, 51, 117, 51, 118, 51, 119, 51, 165, 51, 166, 51, 167, 51, 168, 51, 169, 51, 170, 51, 171, 51, 172, 51, 173, 51, 174, 51, 175, 51, 176, 51, 177, 51, 178, 51, 179, 51, 180, 51, 181, 51, 182, 51, 183, 51, 184, 51, 185, 51, 186, 51, 187, 51, 188, 52, 3, 52, 4, 52, 5, 52, 6, 52, 7, 52, 8, 52, 9, 52, 10, 52, 11, 52, 12, 52, 13, 52, 14, 52, 15, 52, 16, 52, 17, 52, 18, 52, 19, 52, 20, 52, 21, 52, 22, 52, 23, 52, 24, 52, 25, 52, 26, 52, 27, 52, 28, 52, 29, 52, 30, 52, 31, 52, 32, 52, 33, 52, 34, 52, 35, 52, 36, 52, 37, 52, 38, 52, 39, 52, 40, 52, 41, 52, 42, 52, 43, 52, 44, 52, 45, 52, 46, 52, 47, 52, 48, 52, 49, 52, 50, 52, 51, 52, 52, 52, 53, 52, 54, 52, 55, 52, 56, 52, 57, 52, 58, 52, 59, 52, 60, 52, 61, 52, 62, 52, 63, 52, 64, 52, 65, 52, 66, 52, 67, 52, 68, 52, 69, 52, 70, 52, 71, 52, 72, 52, 73, 52, 74, 52, 75, 52, 76, 52, 77, 52, 78, 52, 79, 52, 80, 52, 81, 52, 82, 52, 83, 52, 84, 52, 85, 52, 86, 52, 87, 52, 88, 52, 89, 52, 90, 52, 91, 52, 92, 52, 93, 52, 94, 52, 95, 52, 96, 52, 97, 52, 98, 52, 99, 52, 100, 52, 101, 52, 102, 52, 103, 52, 104, 52, 105, 52, 106, 52, 107, 52, 108, 52, 109, 52, 110, 52, 111, 52, 112, 52, 113, 52, 114, 52, 115, 52, 116, 52, 117, 52, 165, 52, 166, 52, 167, 52, 168, 52, 169, 52, 170, 52, 171, 52, 172, 52, 173, 52, 174, 52, 175, 52, 176, 52, 177, 52, 178, 52, 179, 52, 180, 52, 181, 52, 182, 52, 183, 52, 184, 52, 185, 52, 186, 52, 187, 52, 188, 53, 3, 53, 4, 53, 5, 53, 6, 53, 7, 53, 8, 53, 9, 53, 10, 53, 11, 53, 12, 53, 13, 53, 14, 53, 15, 53, 16, 53, 17, 53, 18, 53, 19, 53, 20, 53, 21, 53, 22, 53, 23, 53, 24, 53, 25, 53, 26, 53, 27, 53, 28, 53, 29, 53, 30, 53, 31, 53, 32, 53, 33, 53, 34, 53, 35, 53, 36, 53, 37, 53, 38, 53, 39, 53, 40, 53, 41, 53, 42, 53, 43, 53, 44, 53, 45, 53, 46, 53, 47, 53, 48, 53, 49, 53, 50, 53, 51, 53, 52, 53, 53, 53, 54, 53, 55, 53, 56, 53, 57, 53, 58, 53, 59, 53, 60, 53, 61, 53, 62, 53, 63, 53, 64, 53, 65, 53, 66, 53, 67, 53, 68, 53, 69, 53, 70, 53, 71, 53, 72, 53, 73, 53, 74, 53, 75, 53, 76, 53, 77, 53, 78, 53, 79, 53, 80, 53, 81, 53, 82, 53, 83, 53, 84, 53, 85, 53, 86, 53, 87, 53, 88, 53, 89, 53, 90, 53, 91, 53, 92, 53, 93, 53, 94, 53, 95, 53, 96, 53, 97, 53, 98, 53, 99, 53, 100, 53, 101, 53, 102, 53, 103, 53, 104, 53, 105, 53, 106, 53, 107, 53, 108, 53, 109, 53, 110, 53, 111, 53, 112, 53, 113, 53, 114, 53, 115, 53, 116, 53, 165, 53, 166, 53, 167, 53, 168, 53, 169, 53, 170, 53, 171, 53, 172, 53, 173, 53, 174, 53, 175, 53, 176, 53, 177, 53, 178, 53, 179, 53, 180, 53, 181, 53, 182, 53, 183, 53, 184, 53, 185, 53, 186, 53, 187, 53, 188, 54, 3, 54, 4, 54, 5, 54, 6, 54, 7, 54, 8, 54, 9, 54, 10, 54, 11, 54, 12, 54, 13, 54, 14, 54, 15, 54, 16, 54, 17, 54, 18, 54, 19, 54, 20, 54, 21, 54, 22, 54, 23, 54, 24, 54, 25, 54, 26, 54, 27, 54, 28, 54, 29, 54, 30, 54, 31, 54, 32, 54, 33, 54, 34, 54, 35, 54, 36, 54, 37, 54, 38, 54, 39, 54, 40, 54, 41, 54, 42, 54, 43, 54, 44, 54, 45, 54, 46, 54, 47, 54, 48, 54, 49, 54, 50, 54, 51, 54, 52, 54, 53, 54, 54, 54, 55, 54, 56, 54, 57, 54, 58, 54, 59, 54, 60, 54, 61, 54, 62, 54, 63, 54, 64, 54, 65, 54, 66, 54, 67, 54, 68, 54, 69, 54, 70, 54, 71, 54, 72, 54, 73, 54, 74, 54, 75, 54, 76, 54, 77, 54, 78, 54, 79, 54, 80, 54, 81, 54, 82, 54, 83, 54, 84, 54, 85, 54, 86, 54, 87, 54, 88, 54, 89, 54, 90, 54, 91, 54, 92, 54, 93, 54, 94, 54, 95, 54, 96, 54, 97, 54, 98, 54, 99, 54, 100, 54, 101, 54, 102, 54, 103, 54, 104, 54, 105, 54, 106, 54, 107, 54, 108, 54, 109, 54, 110, 54, 111, 54, 112, 54, 113, 54, 114, 54, 115, 54, 165, 54, 166, 54, 167, 54, 168, 54, 169, 54, 170, 54, 171, 54, 172, 54, 173, 54, 174, 54, 175, 54, 176, 54, 177, 54, 178, 54, 179, 54, 180, 54, 181, 54, 182, 54, 183, 54, 184, 54, 185, 54, 186, 54, 187, 54, 188, 55, 3, 55, 4, 55, 5, 55, 6, 55, 7, 55, 8, 55, 9, 55, 10, 55, 11, 55, 12, 55, 13, 55, 14, 55, 15, 55, 16, 55, 17, 55, 18, 55, 19, 55, 20, 55, 21, 55, 22, 55, 23, 55, 24, 55, 25, 55, 26, 55, 27, 55, 28, 55, 29, 55, 30, 55, 31, 55, 32, 55, 33, 55, 34, 55, 35, 55, 36, 55, 37, 55, 38, 55, 39, 55, 40, 55, 41, 55, 42, 55, 43, 55, 44, 55, 45, 55, 46, 55, 47, 55, 48, 55, 49, 55, 50, 55, 51, 55, 52, 55, 53, 55, 54, 55, 55, 55, 56, 55, 57, 55, 58, 55, 59, 55, 60, 55, 61, 55, 62, 55, 63, 55, 64, 55, 65, 55, 66, 55, 67, 55, 68, 55, 69, 55, 70, 55, 71, 55, 72, 55, 73, 55, 74, 55, 75, 55, 76, 55, 77, 55, 78, 55, 79, 55, 80, 55, 81, 55, 82, 55, 83, 55, 84, 55, 85, 55, 86, 55, 87, 55, 88, 55, 89, 55, 90, 55, 91, 55, 92, 55, 93, 55, 94, 55, 95, 55, 96, 55, 97, 55, 98, 55, 99, 55, 100, 55, 101, 55, 102, 55, 103, 55, 104, 55, 105, 55, 106, 55, 107, 55, 108, 55, 109, 55, 110, 55, 111, 55, 112, 55, 113, 55, 114, 55, 165, 55, 166, 55, 167, 55, 168, 55, 169, 55, 170, 55, 171, 55, 172, 55, 173, 55, 174, 55, 175, 55, 176, 55, 177, 55, 178, 55, 179, 55, 180, 55, 181, 55, 182, 55, 183, 55, 184, 55, 185, 55, 186, 55, 187, 55, 188, 56, 3, 56, 4, 56, 5, 56, 6, 56, 7, 56, 8, 56, 9, 56, 10, 56, 11, 56, 12, 56, 13, 56, 14, 56, 15, 56, 16, 56, 17, 56, 18, 56, 19, 56, 20, 56, 21, 56, 22, 56, 23, 56, 24, 56, 25, 56, 26, 56, 27, 56, 28, 56, 29, 56, 30, 56, 31, 56, 32, 56, 33, 56, 34, 56, 35, 56, 36, 56, 37, 56, 38, 56, 39, 56, 40, 56, 41, 56, 42, 56, 43, 56, 44, 56, 45, 56, 46, 56, 47, 56, 48, 56, 49, 56, 50, 56, 51, 56, 52, 56, 53, 56, 54, 56, 55, 56, 56, 56, 57, 56, 58, 56, 59, 56, 60, 56, 61, 56, 62, 56, 63, 56, 64, 56, 65, 56, 66, 56, 67, 56, 68, 56, 69, 56, 70, 56, 71, 56, 72, 56, 73, 56, 74, 56, 75, 56, 76, 56, 77, 56, 78, 56, 79, 56, 80, 56, 81, 56, 82, 56, 83, 56, 84, 56, 85, 56, 86, 56, 87, 56, 88, 56, 89, 56, 90, 56, 91, 56, 92, 56, 93, 56, 94, 56, 95, 56, 96, 56, 97, 56, 98, 56, 99, 56, 100, 56, 101, 56, 102, 56, 103, 56, 104, 56, 105, 56, 106, 56, 107, 56, 108, 56, 109, 56, 110, 56, 111, 56, 112, 56, 113, 56, 165, 56, 166, 56, 167, 56, 168, 56, 169, 56, 170, 56, 171, 56, 172, 56, 173, 56, 174, 56, 175, 56, 176, 56, 177, 56, 178, 56, 179, 56, 180, 56, 181, 56, 182, 56, 183, 56, 184, 56, 185, 56, 186, 56, 187, 56, 188, 57, 3, 57, 4, 57, 5, 57, 6, 57, 7, 57, 8, 57, 9, 57, 10, 57, 11, 57, 12, 57, 13, 57, 14, 57, 15, 57, 16, 57, 17, 57, 18, 57, 19, 57, 20, 57, 21, 57, 22, 57, 23, 57, 24, 57, 25, 57, 26, 57, 27, 57, 28, 57, 29, 57, 30, 57, 31, 57, 32, 57, 33, 57, 34, 57, 35, 57, 36, 57, 37, 57, 38, 57, 39, 57, 40, 57, 41, 57, 42, 57, 43, 57, 44, 57, 45, 57, 46, 57, 47, 57, 48, 57, 49, 57, 50, 57, 51, 57, 52, 57, 53, 57, 54, 57, 55, 57, 56, 57, 57, 57, 58, 57, 59, 57, 60, 57, 61, 57, 62, 57, 63, 57, 64, 57, 65, 57, 66, 57, 67, 57, 68, 57, 69, 57, 70, 57, 71, 57, 72, 57, 73, 57, 74, 57, 75, 57, 76, 57, 77, 57, 78, 57, 79, 57, 80, 57, 81, 57, 82, 57, 83, 57, 84, 57, 85, 57, 86, 57, 87, 57, 88, 57, 89, 57, 90, 57, 91, 57, 92, 57, 93, 57, 94, 57, 95, 57, 96, 57, 97, 57, 98, 57, 99, 57, 100, 57, 101, 57, 102, 57, 103, 57, 104, 57, 105, 57, 106, 57, 107, 57, 108, 57, 109, 57, 110, 57, 111, 57, 112, 57, 113, 57, 165, 57, 166, 57, 167, 57, 168, 57, 169, 57, 170, 57, 171, 57, 172, 57, 173, 57, 174, 57, 175, 57, 176, 57, 177, 57, 178, 57, 179, 57, 180, 57, 181, 57, 182, 57, 183, 57, 184, 57, 185, 57, 186, 57, 187, 57, 188, 58, 3, 58, 4, 58, 5, 58, 6, 58, 7, 58, 8, 58, 9, 58, 10, 58, 11, 58, 12, 58, 13, 58, 14, 58, 15, 58, 16, 58, 17, 58, 18, 58, 19, 58, 20, 58, 21, 58, 22, 58, 23, 58, 24, 58, 25, 58, 26, 58, 27, 58, 28, 58, 29, 58, 30, 58, 31, 58, 32, 58, 33, 58, 34, 58, 35, 58, 36, 58, 37, 58, 38, 58, 39, 58, 40, 58, 41, 58, 42, 58, 43, 58, 44, 58, 45, 58, 46, 58, 47, 58, 48, 58, 49, 58, 50, 58, 51, 58, 52, 58, 53, 58, 54, 58, 55, 58, 56, 58, 57, 58, 58, 58, 59, 58, 60, 58, 61, 58, 62, 58, 63, 58, 64, 58, 65, 58, 66, 58, 67, 58, 68, 58, 69, 58, 70, 58, 71, 58, 72, 58, 73, 58, 74, 58, 75, 58, 76, 58, 77, 58, 78, 58, 79, 58, 80, 58, 81, 58, 82, 58, 83, 58, 84, 58, 85, 58, 86, 58, 87, 58, 88, 58, 89, 58, 90, 58, 91, 58, 92, 58, 93, 58, 94, 58, 95, 58, 96, 58, 97, 58, 98, 58, 99, 58, 100, 58, 101, 58, 102, 58, 103, 58, 104, 58, 105, 58, 106, 58, 107, 58, 108, 58, 109, 58, 110, 58, 111, 58, 112, 58, 165, 58, 166, 58, 167, 58, 168, 58, 169, 58, 170, 58, 171, 58, 172, 58, 173, 58, 174, 58, 175, 58, 176, 58, 177, 58, 178, 58, 179, 58, 180, 58, 181, 58, 182, 58, 183, 58, 184, 58, 185, 58, 186, 58, 187, 58, 188, 59, 3, 59, 4, 59, 5, 59, 6, 59, 7, 59, 8, 59, 9, 59, 10, 59, 11, 59, 12, 59, 13, 59, 14, 59, 15, 59, 16, 59, 17, 59, 18, 59, 19, 59, 20, 59, 21, 59, 22, 59, 23, 59, 24, 59, 25, 59, 26, 59, 27, 59, 28, 59, 29, 59, 30, 59, 31, 59, 32, 59, 33, 59, 34, 59, 35, 59, 36, 59, 37, 59, 38, 59, 39, 59, 40, 59, 41, 59, 42, 59, 43, 59, 44, 59, 45, 59, 46, 59, 47, 59, 48, 59, 49, 59, 50, 59, 51, 59, 52, 59, 53, 59, 54, 59, 55, 59, 56, 59, 57, 59, 58, 59, 59, 59, 60, 59, 61, 59, 62, 59, 63, 59, 64, 59, 65, 59, 66, 59, 67, 59, 68, 59, 69, 59, 70, 59, 71, 59, 72, 59, 73, 59, 74, 59, 75, 59, 76, 59, 77, 59, 78, 59, 79, 59, 80, 59, 81, 59, 82, 59, 83, 59, 84, 59, 85, 59, 86, 59, 87, 59, 88, 59, 89, 59, 90, 59, 91, 59, 92, 59, 93, 59, 94, 59, 95, 59, 96, 59, 97, 59, 98, 59, 99, 59, 100, 59, 101, 59, 102, 59, 103, 59, 104, 59, 105, 59, 106, 59, 107, 59, 108, 59, 109, 59, 110, 59, 111, 59, 112, 59, 165, 59, 166, 59, 167, 59, 168, 59, 169, 59, 170, 59, 171, 59, 172, 59, 173, 59, 174, 59, 175, 59, 176, 59, 177, 59, 178, 59, 179, 59, 180, 59, 181, 59, 182, 59, 183, 59, 184, 59, 185, 59, 186, 59, 187, 59, 188, 60, 3, 60, 4, 60, 5, 60, 6, 60, 7, 60, 8, 60, 9, 60, 10, 60, 11, 60, 12, 60, 13, 60, 14, 60, 15, 60, 16, 60, 17, 60, 18, 60, 19, 60, 20, 60, 21, 60, 22, 60, 23, 60, 24, 60, 25, 60, 26, 60, 27, 60, 28, 60, 29, 60, 30, 60, 31, 60, 32, 60, 33, 60, 34, 60, 35, 60, 36, 60, 37, 60, 38, 60, 39, 60, 40, 60, 41, 60, 42, 60, 43, 60, 44, 60, 45, 60, 46, 60, 47, 60, 48, 60, 49, 60, 50, 60, 51, 60, 52, 60, 53, 60, 54, 60, 55, 60, 56, 60, 57, 60, 58, 60, 59, 60, 60, 60, 61, 60, 62, 60, 63, 60, 64, 60, 65, 60, 66, 60, 67, 60, 68, 60, 69, 60, 70, 60, 71, 60, 72, 60, 73, 60, 74, 60, 75, 60, 76, 60, 77, 60, 78, 60, 79, 60, 80, 60, 81, 60, 82, 60, 83, 60, 84, 60, 85, 60, 86, 60, 87, 60, 88, 60, 89, 60, 90, 60, 91, 60, 92, 60, 93, 60, 94, 60, 95, 60, 96, 60, 97, 60, 98, 60, 99, 60, 100, 60, 101, 60, 102, 60, 103, 60, 104, 60, 105, 60, 106, 60, 107, 60, 108, 60, 109, 60, 110, 60, 111, 60, 165, 60, 166, 60, 167, 60, 168, 60, 169, 60, 170, 60, 171, 60, 172, 60, 173, 60, 174, 60, 175, 60, 176, 60, 177, 60, 178, 60, 179, 60, 180, 60, 181, 60, 182, 60, 183, 60, 184, 60, 185, 60, 186, 60, 187, 60, 188, 61, 3, 61, 4, 61, 5, 61, 6, 61, 7, 61, 8, 61, 9, 61, 10, 61, 11, 61, 12, 61, 13, 61, 14, 61, 15, 61, 16, 61, 17, 61, 18, 61, 19, 61, 20, 61, 21, 61, 22, 61, 23, 61, 24, 61, 25, 61, 26, 61, 27, 61, 28, 61, 29, 61, 30, 61, 31, 61, 32, 61, 33, 61, 34, 61, 35, 61, 36, 61, 37, 61, 38, 61, 39, 61, 40, 61, 41, 61, 42, 61, 43, 61, 44, 61, 45, 61, 46, 61, 47, 61, 48, 61, 49, 61, 50, 61, 51, 61, 52, 61, 53, 61, 54, 61, 55, 61, 56, 61, 57, 61, 58, 61, 59, 61, 60, 61, 61, 61, 69, 61, 70, 61, 71, 61, 72, 61, 73, 61, 74, 61, 75, 61, 76, 61, 77, 61, 78, 61, 79, 61, 80, 61, 81, 61, 82, 61, 83, 61, 84, 61, 85, 61, 86, 61, 87, 61, 88, 61, 89, 61, 90, 61, 91, 61, 92, 61, 93, 61, 94, 61, 95, 61, 96, 61, 97, 61, 98, 61, 99, 61, 100, 61, 101, 61, 102, 61, 103, 61, 104, 61, 105, 61, 106, 61, 107, 61, 108, 61, 109, 61, 110, 61, 111, 61, 165, 61, 166, 61, 167, 61, 168, 61, 169, 61, 170, 61, 171, 61, 172, 61, 173, 61, 174, 61, 175, 61, 176, 61, 177, 61, 178, 61, 179, 61, 180, 61, 181, 61, 182, 61, 183, 61, 184, 61, 185, 61, 186, 61, 187, 61, 188, 62, 3, 62, 4, 62, 5, 62, 6, 62, 7, 62, 8, 62, 9, 62, 10, 62, 11, 62, 12, 62, 13, 62, 14, 62, 15, 62, 16, 62, 17, 62, 18, 62, 19, 62, 20, 62, 21, 62, 22, 62, 23, 62, 24, 62, 25, 62, 26, 62, 27, 62, 28, 62, 29, 62, 30, 62, 31, 62, 32, 62, 33, 62, 34, 62, 35, 62, 36, 62, 37, 62, 38, 62, 39, 62, 40, 62, 41, 62, 42, 62, 43, 62, 44, 62, 45, 62, 46, 62, 47, 62, 48, 62, 49, 62, 50, 62, 51, 62, 52, 62, 53, 62, 54, 62, 55, 62, 56, 62, 57, 62, 58, 62, 59, 62, 71, 62, 72, 62, 73, 62, 74, 62, 75, 62, 76, 62, 77, 62, 78, 62, 79, 62, 80, 62, 81, 62, 82, 62, 83, 62, 84, 62, 85, 62, 86, 62, 87, 62, 88, 62, 89, 62, 90, 62, 91, 62, 92, 62, 93, 62, 94, 62, 95, 62, 96, 62, 97, 62, 98, 62, 99, 62, 100, 62, 101, 62, 102, 62, 103, 62, 104, 62, 105, 62, 106, 62, 107, 62, 108, 62, 109, 62, 110, 62, 111, 62, 166, 62, 167, 62, 168, 62, 169, 62, 170, 62, 171, 62, 172, 62, 173, 62, 174, 62, 175, 62, 176, 62, 177, 62, 178, 62, 179, 62, 180, 62, 181, 62, 182, 62, 183, 62, 184, 62, 185, 62, 186, 62, 187, 62, 188, 63, 3, 63, 4, 63, 5, 63, 6, 63, 7, 63, 8, 63, 9, 63, 10, 63, 11, 63, 12, 63, 13, 63, 14, 63, 15, 63, 16, 63, 17, 63, 18, 63, 19, 63, 20, 63, 21, 63, 22, 63, 23, 63, 24, 63, 25, 63, 26, 63, 27, 63, 28, 63, 29, 63, 30, 63, 31, 63, 32, 63, 33, 63, 34, 63, 35, 63, 36, 63, 37, 63, 38, 63, 39, 63, 40, 63, 41, 63, 42, 63, 43, 63, 44, 63, 45, 63, 46, 63, 47, 63, 48, 63, 49, 63, 50, 63, 51, 63, 52, 63, 53, 63, 54, 63, 55, 63, 56, 63, 57, 63, 72, 63, 73, 63, 74, 63, 75, 63, 76, 63, 77, 63, 78, 63, 79, 63, 80, 63, 81, 63, 82, 63, 83, 63, 84, 63, 85, 63, 86, 63, 87, 63, 88, 63, 89, 63, 90, 63, 91, 63, 92, 63, 93, 63, 94, 63, 95, 63, 96, 63, 97, 63, 98, 63, 99, 63, 100, 63, 101, 63, 102, 63, 103, 63, 104, 63, 105, 63, 106, 63, 107, 63, 108, 63, 109, 63, 110, 63, 166, 63, 167, 63, 168, 63, 169, 63, 170, 63, 171, 63, 172, 63, 173, 63, 174, 63, 175, 63, 176, 63, 177, 63, 178, 63, 179, 63, 180, 63, 181, 63, 182, 63, 183, 63, 184, 63, 185, 63, 186, 63, 187, 63, 188, 64, 3, 64, 4, 64, 5, 64, 6, 64, 7, 64, 8, 64, 9, 64, 10, 64, 11, 64, 12, 64, 13, 64, 14, 64, 15, 64, 16, 64, 17, 64, 18, 64, 19, 64, 20, 64, 21, 64, 22, 64, 23, 64, 24, 64, 25, 64, 26, 64, 27, 64, 28, 64, 29, 64, 30, 64, 31, 64, 32, 64, 33, 64, 34, 64, 35, 64, 36, 64, 37, 64, 38, 64, 39, 64, 40, 64, 41, 64, 42, 64, 43, 64, 44, 64, 45, 64, 46, 64, 47, 64, 48, 64, 49, 64, 50, 64, 51, 64, 52, 64, 53, 64, 54, 64, 55, 64, 56, 64, 72, 64, 73, 64, 74, 64, 75, 64, 76, 64, 77, 64, 78, 64, 79, 64, 80, 64, 81, 64, 82, 64, 83, 64, 84, 64, 85, 64, 86, 64, 87, 64, 88, 64, 89, 64, 90, 64, 91, 64, 92, 64, 93, 64, 94, 64, 95, 64, 96, 64, 97, 64, 98, 64, 99, 64, 100, 64, 101, 64, 102, 64, 103, 64, 104, 64, 105, 64, 106, 64, 107, 64, 108, 64, 109, 64, 110, 64, 111, 64, 166, 64, 167, 64, 168, 64, 169, 64, 170, 64, 171, 64, 172, 64, 173, 64, 174, 64, 175, 64, 176, 64, 177, 64, 178, 64, 179, 64, 180, 64, 181, 64, 182, 64, 183, 64, 184, 64, 185, 64, 186, 64, 187, 64, 188, 65, 3, 65, 4, 65, 5, 65, 6, 65, 7, 65, 8, 65, 9, 65, 10, 65, 11, 65, 12, 65, 13, 65, 14, 65, 15, 65, 16, 65, 17, 65, 18, 65, 19, 65, 20, 65, 21, 65, 22, 65, 23, 65, 24, 65, 25, 65, 26, 65, 27, 65, 28, 65, 29, 65, 30, 65, 31, 65, 32, 65, 33, 65, 34, 65, 35, 65, 36, 65, 37, 65, 38, 65, 39, 65, 40, 65, 41, 65, 42, 65, 43, 65, 44, 65, 45, 65, 46, 65, 47, 65, 48, 65, 49, 65, 50, 65, 51, 65, 52, 65, 53, 65, 54, 65, 55, 65, 73, 65, 74, 65, 75, 65, 76, 65, 77, 65, 78, 65, 79, 65, 80, 65, 81, 65, 82, 65, 83, 65, 84, 65, 85, 65, 86, 65, 87, 65, 88, 65, 89, 65, 90, 65, 91, 65, 92, 65, 93, 65, 94, 65, 95, 65, 96, 65, 97, 65, 98, 65, 99, 65, 100, 65, 101, 65, 102, 65, 103, 65, 104, 65, 105, 65, 106, 65, 107, 65, 108, 65, 109, 65, 110, 65, 111, 65, 166, 65, 167, 65, 168, 65, 169, 65, 170, 65, 171, 65, 172, 65, 173, 65, 174, 65, 175, 65, 176, 65, 177, 65, 178, 65, 179, 65, 180, 65, 181, 65, 182, 65, 183, 65, 184, 65, 185, 65, 186, 65, 187, 65, 188, 66, 3, 66, 4, 66, 5, 66, 6, 66, 7, 66, 8, 66, 9, 66, 10, 66, 11, 66, 12, 66, 13, 66, 14, 66, 15, 66, 16, 66, 17, 66, 18, 66, 19, 66, 20, 66, 21, 66, 22, 66, 23, 66, 24, 66, 25, 66, 26, 66, 27, 66, 28, 66, 29, 66, 30, 66, 31, 66, 32, 66, 33, 66, 34, 66, 35, 66, 36, 66, 37, 66, 38, 66, 39, 66, 40, 66, 41, 66, 42, 66, 43, 66, 44, 66, 45, 66, 46, 66, 47, 66, 48, 66, 49, 66, 50, 66, 51, 66, 52, 66, 53, 66, 54, 66, 74, 66, 75, 66, 76, 66, 77, 66, 78, 66, 79, 66, 80, 66, 81, 66, 82, 66, 83, 66, 84, 66, 85, 66, 86, 66, 87, 66, 88, 66, 89, 66, 90, 66, 91, 66, 92, 66, 93, 66, 94, 66, 95, 66, 96, 66, 97, 66, 98, 66, 99, 66, 100, 66, 101, 66, 102, 66, 103, 66, 104, 66, 105, 66, 106, 66, 107, 66, 108, 66, 109, 66, 110, 66, 111, 66, 166, 66, 167, 66, 168, 66, 169, 66, 170, 66, 171, 66, 172, 66, 173, 66, 174, 66, 175, 66, 176, 66, 177, 66, 178, 66, 179, 66, 180, 66, 181, 66, 182, 66, 183, 66, 184, 66, 185, 66, 186, 66, 187, 66, 188, 67, 3, 67, 4, 67, 5, 67, 6, 67, 7, 67, 8, 67, 9, 67, 10, 67, 11, 67, 12, 67, 13, 67, 14, 67, 15, 67, 16, 67, 17, 67, 18, 67, 19, 67, 20, 67, 21, 67, 22, 67, 23, 67, 24, 67, 25, 67, 26, 67, 27, 67, 28, 67, 29, 67, 30, 67, 31, 67, 32, 67, 33, 67, 34, 67, 35, 67, 36, 67, 37, 67, 38, 67, 39, 67, 40, 67, 41, 67, 42, 67, 43, 67, 44, 67, 45, 67, 46, 67, 47, 67, 48, 67, 49, 67, 50, 67, 51, 67, 52, 67, 53, 67, 75, 67, 76, 67, 77, 67, 78, 67, 79, 67, 80, 67, 81, 67, 82, 67, 83, 67, 84, 67, 85, 67, 86, 67, 87, 67, 88, 67, 89, 67, 90, 67, 91, 67, 92, 67, 93, 67, 94, 67, 95, 67, 96, 67, 97, 67, 98, 67, 99, 67, 100, 67, 101, 67, 102, 67, 103, 67, 104, 67, 105, 67, 106, 67, 107, 67, 108, 67, 109, 67, 110, 67, 111, 67, 166, 67, 167, 67, 168, 67, 169, 67, 170, 67, 171, 67, 172, 67, 173, 67, 174, 67, 175, 67, 176, 67, 177, 67, 178, 67, 179, 67, 180, 67, 181, 67, 182, 67, 183, 67, 184, 67, 185, 67, 186, 67, 187, 67, 188, 68, 3, 68, 4, 68, 5, 68, 6, 68, 7, 68, 8, 68, 9, 68, 10, 68, 11, 68, 12, 68, 13, 68, 14, 68, 15, 68, 16, 68, 17, 68, 18, 68, 19, 68, 20, 68, 21, 68, 22, 68, 23, 68, 24, 68, 25, 68, 26, 68, 27, 68, 28, 68, 29, 68, 30, 68, 31, 68, 32, 68, 33, 68, 34, 68, 35, 68, 36, 68, 37, 68, 38, 68, 39, 68, 40, 68, 41, 68, 42, 68, 43, 68, 44, 68, 45, 68, 46, 68, 47, 68, 48, 68, 49, 68, 50, 68, 51, 68, 52, 68, 53, 68, 75, 68, 76, 68, 77, 68, 78, 68, 79, 68, 80, 68, 81, 68, 82, 68, 83, 68, 84, 68, 85, 68, 86, 68, 87, 68, 88, 68, 89, 68, 90, 68, 91, 68, 92, 68, 93, 68, 94, 68, 95, 68, 96, 68, 97, 68, 98, 68, 99, 68, 100, 68, 101, 68, 102, 68, 103, 68, 104, 68, 105, 68, 106, 68, 107, 68, 108, 68, 109, 68, 110, 68, 111, 68, 166, 68, 167, 68, 168, 68, 169, 68, 170, 68, 171, 68, 172, 68, 173, 68, 174, 68, 175, 68, 176, 68, 177, 68, 178, 68, 179, 68, 180, 68, 181, 68, 182, 68, 183, 68, 184, 68, 185, 68, 186, 68, 187, 68, 188, 69, 3, 69, 4, 69, 5, 69, 6, 69, 7, 69, 8, 69, 9, 69, 10, 69, 11, 69, 12, 69, 13, 69, 14, 69, 15, 69, 16, 69, 17, 69, 18, 69, 19, 69, 20, 69, 21, 69, 22, 69, 23, 69, 24, 69, 25, 69, 26, 69, 27, 69, 28, 69, 29, 69, 30, 69, 31, 69, 32, 69, 33, 69, 34, 69, 35, 69, 36, 69, 37, 69, 38, 69, 39, 69, 40, 69, 41, 69, 42, 69, 43, 69, 44, 69, 45, 69, 46, 69, 47, 69, 48, 69, 49, 69, 50, 69, 51, 69, 52, 69, 76, 69, 77, 69, 78, 69, 79, 69, 80, 69, 81, 69, 82, 69, 83, 69, 84, 69, 85, 69, 86, 69, 87, 69, 88, 69, 89, 69, 90, 69, 91, 69, 92, 69, 93, 69, 94, 69, 95, 69, 96, 69, 97, 69, 98, 69, 99, 69, 100, 69, 101, 69, 102, 69, 103, 69, 104, 69, 105, 69, 106, 69, 107, 69, 108, 69, 109, 69, 110, 69, 111, 69, 112, 69, 166, 69, 167, 69, 168, 69, 169, 69, 170, 69, 171, 69, 172, 69, 173, 69, 174, 69, 175, 69, 176, 69, 177, 69, 178, 69, 179, 69, 180, 69, 181, 69, 182, 69, 183, 69, 184, 69, 185, 69, 186, 69, 187, 69, 188, 70, 3, 70, 4, 70, 5, 70, 6, 70, 7, 70, 8, 70, 9, 70, 10, 70, 11, 70, 12, 70, 13, 70, 14, 70, 15, 70, 16, 70, 17, 70, 18, 70, 19, 70, 20, 70, 21, 70, 22, 70, 23, 70, 24, 70, 25, 70, 26, 70, 27, 70, 28, 70, 29, 70, 30, 70, 31, 70, 32, 70, 33, 70, 34, 70, 35, 70, 36, 70, 37, 70, 38, 70, 39, 70, 40, 70, 41, 70, 42, 70, 43, 70, 44, 70, 45, 70, 46, 70, 47, 70, 48, 70, 49, 70, 50, 70, 51, 70, 52, 70, 76, 70, 77, 70, 78, 70, 79, 70, 80, 70, 81, 70, 82, 70, 83, 70, 84, 70, 85, 70, 86, 70, 87, 70, 88, 70, 89, 70, 90, 70, 91, 70, 92, 70, 93, 70, 94, 70, 95, 70, 96, 70, 97, 70, 98, 70, 99, 70, 100, 70, 101, 70, 102, 70, 103, 70, 104, 70, 105, 70, 106, 70, 107, 70, 108, 70, 109, 70, 110, 70, 111, 70, 112, 70, 166, 70, 167, 70, 168, 70, 169, 70, 170, 70, 171, 70, 172, 70, 173, 70, 174, 70, 175, 70, 176, 70, 177, 70, 178, 70, 179, 70, 180, 70, 181, 70, 182, 70, 183, 70, 184, 70, 185, 70, 186, 70, 187, 70, 188, 71, 3, 71, 4, 71, 5, 71, 6, 71, 7, 71, 8, 71, 9, 71, 10, 71, 11, 71, 12, 71, 13, 71, 14, 71, 15, 71, 16, 71, 17, 71, 18, 71, 19, 71, 20, 71, 21, 71, 22, 71, 23, 71, 24, 71, 25, 71, 26, 71, 27, 71, 28, 71, 29, 71, 30, 71, 31, 71, 32, 71, 33, 71, 34, 71, 35, 71, 36, 71, 37, 71, 38, 71, 39, 71, 40, 71, 41, 71, 42, 71, 43, 71, 44, 71, 45, 71, 46, 71, 47, 71, 48, 71, 49, 71, 50, 71, 51, 71, 52, 71, 76, 71, 77, 71, 78, 71, 79, 71, 80, 71, 81, 71, 82, 71, 83, 71, 84, 71, 85, 71, 86, 71, 87, 71, 88, 71, 89, 71, 90, 71, 91, 71, 92, 71, 93, 71, 94, 71, 95, 71, 96, 71, 97, 71, 98, 71, 99, 71, 100, 71, 101, 71, 102, 71, 103, 71, 104, 71, 105, 71, 106, 71, 107, 71, 108, 71, 109, 71, 110, 71, 111, 71, 112, 71, 113, 71, 114, 71, 115, 71, 166, 71, 167, 71, 168, 71, 169, 71, 170, 71, 171, 71, 172, 71, 173, 71, 174, 71, 175, 71, 176, 71, 177, 71, 178, 71, 179, 71, 180, 71, 181, 71, 182, 71, 183, 71, 184, 71, 185, 71, 186, 71, 187, 71, 188, 72, 3, 72, 4, 72, 5, 72, 6, 72, 7, 72, 8, 72, 9, 72, 10, 72, 11, 72, 12, 72, 13, 72, 14, 72, 15, 72, 16, 72, 17, 72, 18, 72, 19, 72, 20, 72, 21, 72, 22, 72, 23, 72, 24, 72, 25, 72, 26, 72, 27, 72, 28, 72, 29, 72, 30, 72, 31, 72, 32, 72, 33, 72, 34, 72, 35, 72, 36, 72, 37, 72, 38, 72, 39, 72, 40, 72, 41, 72, 42, 72, 43, 72, 44, 72, 45, 72, 46, 72, 47, 72, 48, 72, 49, 72, 50, 72, 51, 72, 76, 72, 77, 72, 78, 72, 79, 72, 80, 72, 81, 72, 82, 72, 83, 72, 84, 72, 85, 72, 86, 72, 87, 72, 88, 72, 89, 72, 90, 72, 91, 72, 92, 72, 93, 72, 94, 72, 95, 72, 96, 72, 97, 72, 98, 72, 99, 72, 100, 72, 101, 72, 102, 72, 103, 72, 104, 72, 105, 72, 106, 72, 107, 72, 108, 72, 109, 72, 110, 72, 111, 72, 112, 72, 113, 72, 114, 72, 115, 72, 116, 72, 117, 72, 167, 72, 168, 72, 169, 72, 170, 72, 171, 72, 172, 72, 173, 72, 174, 72, 175, 72, 176, 72, 177, 72, 178, 72, 179, 72, 180, 72, 181, 72, 182, 72, 183, 72, 184, 72, 185, 72, 186, 72, 187, 72, 188, 73, 3, 73, 4, 73, 5, 73, 6, 73, 7, 73, 8, 73, 9, 73, 10, 73, 11, 73, 12, 73, 13, 73, 14, 73, 15, 73, 16, 73, 17, 73, 18, 73, 19, 73, 20, 73, 21, 73, 22, 73, 23, 73, 24, 73, 25, 73, 26, 73, 27, 73, 28, 73, 29, 73, 30, 73, 31, 73, 32, 73, 33, 73, 34, 73, 35, 73, 36, 73, 37, 73, 38, 73, 39, 73, 40, 73, 41, 73, 42, 73, 43, 73, 44, 73, 45, 73, 46, 73, 47, 73, 48, 73, 49, 73, 50, 73, 51, 73, 77, 73, 78, 73, 79, 73, 80, 73, 81, 73, 82, 73, 83, 73, 84, 73, 85, 73, 86, 73, 87, 73, 88, 73, 89, 73, 90, 73, 91, 73, 92, 73, 93, 73, 94, 73, 95, 73, 96, 73, 97, 73, 98, 73, 99, 73, 100, 73, 101, 73, 102, 73, 103, 73, 104, 73, 105, 73, 106, 73, 107, 73, 108, 73, 109, 73, 110, 73, 111, 73, 112, 73, 113, 73, 114, 73, 115, 73, 116, 73, 117, 73, 118, 73, 119, 73, 167, 73, 168, 73, 169, 73, 170, 73, 171, 73, 172, 73, 173, 73, 174, 73, 175, 73, 176, 73, 177, 73, 178, 73, 179, 73, 180, 73, 181, 73, 182, 73, 183, 73, 184, 73, 185, 73, 186, 73, 187, 73, 188, 74, 3, 74, 4, 74, 5, 74, 6, 74, 7, 74, 8, 74, 9, 74, 10, 74, 11, 74, 12, 74, 13, 74, 14, 74, 15, 74, 16, 74, 17, 74, 18, 74, 19, 74, 20, 74, 21, 74, 22, 74, 23, 74, 24, 74, 25, 74, 26, 74, 27, 74, 28, 74, 29, 74, 30, 74, 31, 74, 32, 74, 33, 74, 34, 74, 35, 74, 36, 74, 37, 74, 38, 74, 39, 74, 40, 74, 41, 74, 42, 74, 43, 74, 44, 74, 45, 74, 46, 74, 47, 74, 48, 74, 49, 74, 50, 74, 51, 74, 77, 74, 78, 74, 79, 74, 80, 74, 81, 74, 82, 74, 83, 74, 84, 74, 85, 74, 86, 74, 87, 74, 88, 74, 89, 74, 90, 74, 91, 74, 92, 74, 93, 74, 94, 74, 95, 74, 96, 74, 97, 74, 98, 74, 99, 74, 100, 74, 101, 74, 102, 74, 103, 74, 104, 74, 105, 74, 106, 74, 107, 74, 108, 74, 109, 74, 110, 74, 111, 74, 112, 74, 113, 74, 114, 74, 115, 74, 116, 74, 117, 74, 118, 74, 119, 74, 120, 74, 121, 74, 167, 74, 168, 74, 169, 74, 170, 74, 171, 74, 172, 74, 173, 74, 174, 74, 175, 74, 176, 74, 177, 74, 178, 74, 179, 74, 180, 74, 181, 74, 182, 74, 183, 74, 184, 74, 185, 74, 186, 74, 187, 74, 188, 75, 3, 75, 4, 75, 5, 75, 6, 75, 7, 75, 8, 75, 9, 75, 10, 75, 11, 75, 12, 75, 13, 75, 14, 75, 15, 75, 16, 75, 17, 75, 18, 75, 19, 75, 20, 75, 21, 75, 22, 75, 23, 75, 24, 75, 25, 75, 26, 75, 27, 75, 28, 75, 29, 75, 30, 75, 31, 75, 32, 75, 33, 75, 34, 75, 35, 75, 36, 75, 37, 75, 38, 75, 39, 75, 40, 75, 41, 75, 42, 75, 43, 75, 44, 75, 45, 75, 46, 75, 47, 75, 48, 75, 49, 75, 50, 75, 51, 75, 77, 75, 78, 75, 79, 75, 80, 75, 81, 75, 82, 75, 83, 75, 84, 75, 85, 75, 86, 75, 87, 75, 88, 75, 89, 75, 90, 75, 91, 75, 92, 75, 93, 75, 94, 75, 95, 75, 96, 75, 97, 75, 98, 75, 99, 75, 100, 75, 101, 75, 102, 75, 103, 75, 104, 75, 105, 75, 106, 75, 107, 75, 108, 75, 109, 75, 110, 75, 111, 75, 112, 75, 113, 75, 114, 75, 115, 75, 116, 75, 117, 75, 118, 75, 119, 75, 120, 75, 121, 75, 167, 75, 168, 75, 169, 75, 170, 75, 171, 75, 172, 75, 173, 75, 174, 75, 175, 75, 176, 75, 177, 75, 178, 75, 179, 75, 180, 75, 181, 75, 182, 75, 183, 75, 184, 75, 185, 75, 186, 75, 187, 75, 188, 76, 3, 76, 4, 76, 5, 76, 6, 76, 7, 76, 8, 76, 9, 76, 10, 76, 11, 76, 12, 76, 13, 76, 14, 76, 15, 76, 16, 76, 17, 76, 18, 76, 19, 76, 20, 76, 21, 76, 22, 76, 23, 76, 24, 76, 25, 76, 26, 76, 27, 76, 28, 76, 29, 76, 30, 76, 31, 76, 32, 76, 33, 76, 34, 76, 35, 76, 36, 76, 37, 76, 38, 76, 39, 76, 40, 76, 41, 76, 42, 76, 43, 76, 44, 76, 45, 76, 46, 76, 47, 76, 48, 76, 49, 76, 50, 76, 51, 76, 77, 76, 78, 76, 79, 76, 80, 76, 81, 76, 82, 76, 83, 76, 84, 76, 85, 76, 86, 76, 87, 76, 88, 76, 89, 76, 90, 76, 91, 76, 92, 76, 93, 76, 94, 76, 95, 76, 96, 76, 97, 76, 98, 76, 99, 76, 100, 76, 101, 76, 102, 76, 103, 76, 104, 76, 105, 76, 106, 76, 107, 76, 108, 76, 109, 76, 110, 76, 111, 76, 112, 76, 113, 76, 114, 76, 115, 76, 116, 76, 117, 76, 118, 76, 119, 76, 120, 76, 121, 76, 167, 76, 168, 76, 169, 76, 170, 76, 171, 76, 172, 76, 173, 76, 174, 76, 175, 76, 176, 76, 177, 76, 178, 76, 179, 76, 180, 76, 181, 76, 182, 76, 183, 76, 184, 76, 185, 76, 186, 76, 187, 76, 188, 77, 3, 77, 4, 77, 5, 77, 6, 77, 7, 77, 8, 77, 9, 77, 10, 77, 11, 77, 12, 77, 13, 77, 14, 77, 15, 77, 16, 77, 17, 77, 18, 77, 19, 77, 20, 77, 21, 77, 22, 77, 23, 77, 24, 77, 25, 77, 26, 77, 27, 77, 28, 77, 29, 77, 30, 77, 31, 77, 32, 77, 33, 77, 34, 77, 35, 77, 36, 77, 37, 77, 38, 77, 39, 77, 40, 77, 41, 77, 42, 77, 43, 77, 44, 77, 45, 77, 46, 77, 47, 77, 48, 77, 49, 77, 50, 77, 51, 77, 77, 77, 78, 77, 79, 77, 80, 77, 81, 77, 82, 77, 83, 77, 84, 77, 85, 77, 86, 77, 87, 77, 88, 77, 89, 77, 90, 77, 91, 77, 92, 77, 93, 77, 94, 77, 95, 77, 96, 77, 97, 77, 98, 77, 99, 77, 100, 77, 101, 77, 102, 77, 103, 77, 104, 77, 105, 77, 106, 77, 107, 77, 108, 77, 109, 77, 110, 77, 111, 77, 112, 77, 113, 77, 114, 77, 115, 77, 116, 77, 117, 77, 118, 77, 119, 77, 120, 77, 121, 77, 167, 77, 168, 77, 169, 77, 170, 77, 171, 77, 172, 77, 173, 77, 174, 77, 175, 77, 176, 77, 177, 77, 178, 77, 179, 77, 180, 77, 181, 77, 182, 77, 183, 77, 184, 77, 185, 77, 186, 77, 187, 77, 188, 78, 3, 78, 4, 78, 5, 78, 6, 78, 7, 78, 8, 78, 9, 78, 10, 78, 11, 78, 12, 78, 13, 78, 14, 78, 15, 78, 16, 78, 17, 78, 18, 78, 19, 78, 20, 78, 21, 78, 22, 78, 23, 78, 24, 78, 25, 78, 26, 78, 27, 78, 28, 78, 29, 78, 30, 78, 31, 78, 32, 78, 33, 78, 34, 78, 35, 78, 36, 78, 37, 78, 38, 78, 39, 78, 40, 78, 41, 78, 42, 78, 43, 78, 44, 78, 45, 78, 46, 78, 47, 78, 48, 78, 49, 78, 50, 78, 51, 78, 77, 78, 78, 78, 79, 78, 80, 78, 81, 78, 82, 78, 83, 78, 84, 78, 85, 78, 86, 78, 87, 78, 88, 78, 89, 78, 90, 78, 91, 78, 92, 78, 93, 78, 94, 78, 95, 78, 96, 78, 97, 78, 98, 78, 99, 78, 100, 78, 101, 78, 102, 78, 103, 78, 104, 78, 105, 78, 106, 78, 107, 78, 108, 78, 109, 78, 110, 78, 111, 78, 112, 78, 113, 78, 114, 78, 115, 78, 116, 78, 117, 78, 118, 78, 119, 78, 120, 78, 121, 78, 167, 78, 168, 78, 169, 78, 170, 78, 171, 78, 172, 78, 173, 78, 174, 78, 175, 78, 176, 78, 177, 78, 178, 78, 179, 78, 180, 78, 181, 78, 182, 78, 183, 78, 184, 78, 185, 78, 186, 78, 187, 78, 188, 79, 3, 79, 4, 79, 5, 79, 6, 79, 7, 79, 8, 79, 9, 79, 10, 79, 11, 79, 12, 79, 13, 79, 14, 79, 15, 79, 16, 79, 17, 79, 18, 79, 19, 79, 20, 79, 21, 79, 22, 79, 23, 79, 24, 79, 25, 79, 26, 79, 27, 79, 28, 79, 29, 79, 30, 79, 31, 79, 32, 79, 33, 79, 34, 79, 35, 79, 36, 79, 37, 79, 38, 79, 39, 79, 40, 79, 41, 79, 42, 79, 43, 79, 44, 79, 45, 79, 46, 79, 47, 79, 48, 79, 49, 79, 50, 79, 78, 79, 79, 79, 80, 79, 81, 79, 82, 79, 83, 79, 84, 79, 85, 79, 86, 79, 87, 79, 88, 79, 89, 79, 90, 79, 91, 79, 92, 79, 93, 79, 94, 79, 95, 79, 96, 79, 97, 79, 98, 79, 99, 79, 100, 79, 101, 79, 102, 79, 103, 79, 104, 79, 105, 79, 106, 79, 107, 79, 108, 79, 109, 79, 110, 79, 111, 79, 112, 79, 113, 79, 114, 79, 115, 79, 116, 79, 117, 79, 118, 79, 119, 79, 120, 79, 121, 79, 167, 79, 168, 79, 169, 79, 170, 79, 171, 79, 172, 79, 173, 79, 174, 79, 175, 79, 176, 79, 177, 79, 178, 79, 179, 79, 180, 79, 181, 79, 182, 79, 183, 79, 184, 79, 185, 79, 186, 79, 187, 79, 188, 80, 3, 80, 4, 80, 5, 80, 6, 80, 7, 80, 8, 80, 9, 80, 10, 80, 11, 80, 12, 80, 13, 80, 14, 80, 15, 80, 16, 80, 17, 80, 18, 80, 19, 80, 20, 80, 21, 80, 22, 80, 23, 80, 24, 80, 25, 80, 26, 80, 27, 80, 28, 80, 29, 80, 30, 80, 31, 80, 32, 80, 33, 80, 34, 80, 35, 80, 36, 80, 37, 80, 38, 80, 39, 80, 40, 80, 41, 80, 42, 80, 43, 80, 44, 80, 45, 80, 46, 80, 47, 80, 48, 80, 49, 80, 50, 80, 78, 80, 79, 80, 80, 80, 81, 80, 82, 80, 83, 80, 84, 80, 85, 80, 86, 80, 87, 80, 88, 80, 89, 80, 90, 80, 91, 80, 92, 80, 93, 80, 94, 80, 95, 80, 96, 80, 97, 80, 98, 80, 99, 80, 100, 80, 101, 80, 102, 80, 103, 80, 104, 80, 105, 80, 106, 80, 107, 80, 108, 80, 109, 80, 110, 80, 111, 80, 112, 80, 113, 80, 114, 80, 115, 80, 116, 80, 117, 80, 118, 80, 119, 80, 120, 80, 121, 80, 168, 80, 169, 80, 170, 80, 171, 80, 172, 80, 173, 80, 174, 80, 175, 80, 176, 80, 177, 80, 178, 80, 179, 80, 180, 80, 181, 80, 182, 80, 183, 80, 184, 80, 185, 80, 186, 80, 187, 80, 188, 81, 3, 81, 4, 81, 5, 81, 6, 81, 7, 81, 8, 81, 9, 81, 10, 81, 11, 81, 12, 81, 13, 81, 14, 81, 15, 81, 16, 81, 17, 81, 18, 81, 19, 81, 20, 81, 21, 81, 22, 81, 23, 81, 24, 81, 25, 81, 26, 81, 27, 81, 28, 81, 29, 81, 30, 81, 31, 81, 32, 81, 33, 81, 34, 81, 35, 81, 36, 81, 37, 81, 38, 81, 39, 81, 40, 81, 41, 81, 42, 81, 43, 81, 44, 81, 45, 81, 46, 81, 47, 81, 48, 81, 49, 81, 50, 81, 78, 81, 79, 81, 80, 81, 81, 81, 82, 81, 83, 81, 84, 81, 85, 81, 86, 81, 87, 81, 88, 81, 89, 81, 90, 81, 91, 81, 92, 81, 93, 81, 94, 81, 95, 81, 96, 81, 97, 81, 98, 81, 99, 81, 100, 81, 101, 81, 102, 81, 103, 81, 104, 81, 105, 81, 106, 81, 107, 81, 108, 81, 109, 81, 110, 81, 111, 81, 112, 81, 113, 81, 114, 81, 115, 81, 116, 81, 117, 81, 118, 81, 119, 81, 120, 81, 121, 81, 168, 81, 169, 81, 170, 81, 171, 81, 172, 81, 173, 81, 174, 81, 175, 81, 176, 81, 177, 81, 178, 81, 179, 81, 180, 81, 181, 81, 182, 81, 183, 81, 184, 81, 185, 81, 186, 81, 187, 81, 188, 82, 3, 82, 4, 82, 5, 82, 6, 82, 7, 82, 8, 82, 9, 82, 10, 82, 11, 82, 12, 82, 13, 82, 14, 82, 15, 82, 16, 82, 17, 82, 18, 82, 19, 82, 20, 82, 21, 82, 22, 82, 23, 82, 24, 82, 25, 82, 26, 82, 27, 82, 28, 82, 29, 82, 30, 82, 31, 82, 32, 82, 33, 82, 34, 82, 35, 82, 36, 82, 37, 82, 38, 82, 39, 82, 40, 82, 41, 82, 42, 82, 43, 82, 44, 82, 45, 82, 46, 82, 47, 82, 48, 82, 49, 82, 50, 82, 78, 82, 79, 82, 80, 82, 81, 82, 82, 82, 83, 82, 84, 82, 85, 82, 86, 82, 87, 82, 88, 82, 89, 82, 90, 82, 91, 82, 92, 82, 93, 82, 94, 82, 95, 82, 96, 82, 97, 82, 98, 82, 99, 82, 100, 82, 101, 82, 102, 82, 103, 82, 104, 82, 105, 82, 106, 82, 107, 82, 108, 82, 109, 82, 110, 82, 111, 82, 112, 82, 113, 82, 114, 82, 115, 82, 116, 82, 117, 82, 118, 82, 119, 82, 120, 82, 121, 82, 168, 82, 169, 82, 170, 82, 171, 82, 172, 82, 173, 82, 174, 82, 175, 82, 176, 82, 177, 82, 178, 82, 179, 82, 180, 82, 181, 82, 182, 82, 183, 82, 184, 82, 185, 82, 186, 82, 187, 82, 188, 83, 3, 83, 4, 83, 5, 83, 6, 83, 7, 83, 8, 83, 9, 83, 10, 83, 11, 83, 12, 83, 13, 83, 14, 83, 15, 83, 16, 83, 17, 83, 18, 83, 19, 83, 20, 83, 21, 83, 22, 83, 23, 83, 24, 83, 25, 83, 26, 83, 27, 83, 28, 83, 29, 83, 30, 83, 31, 83, 32, 83, 33, 83, 34, 83, 35, 83, 36, 83, 37, 83, 38, 83, 39, 83, 40, 83, 41, 83, 42, 83, 43, 83, 44, 83, 45, 83, 46, 83, 47, 83, 48, 83, 49, 83, 50, 83, 78, 83, 79, 83, 80, 83, 81, 83, 82, 83, 83, 83, 84, 83, 85, 83, 86, 83, 87, 83, 88, 83, 89, 83, 90, 83, 91, 83, 92, 83, 93, 83, 94, 83, 95, 83, 96, 83, 97, 83, 98, 83, 99, 83, 100, 83, 101, 83, 102, 83, 103, 83, 104, 83, 105, 83, 106, 83, 107, 83, 108, 83, 109, 83, 110, 83, 111, 83, 112, 83, 113, 83, 114, 83, 115, 83, 116, 83, 117, 83, 118, 83, 119, 83, 120, 83, 121, 83, 168, 83, 169, 83, 170, 83, 171, 83, 172, 83, 173, 83, 174, 83, 175, 83, 176, 83, 177, 83, 178, 83, 179, 83, 180, 83, 181, 83, 182, 83, 183, 83, 184, 83, 185, 83, 186, 83, 187, 83, 188, 84, 3, 84, 4, 84, 5, 84, 6, 84, 7, 84, 8, 84, 9, 84, 10, 84, 11, 84, 12, 84, 13, 84, 14, 84, 15, 84, 16, 84, 17, 84, 18, 84, 19, 84, 20, 84, 21, 84, 22, 84, 23, 84, 24, 84, 25, 84, 26, 84, 27, 84, 28, 84, 29, 84, 30, 84, 31, 84, 32, 84, 33, 84, 34, 84, 35, 84, 36, 84, 37, 84, 38, 84, 39, 84, 40, 84, 41, 84, 42, 84, 43, 84, 44, 84, 45, 84, 46, 84, 47, 84, 48, 84, 49, 84, 50, 84, 78, 84, 79, 84, 80, 84, 81, 84, 82, 84, 83, 84, 84, 84, 85, 84, 86, 84, 87, 84, 88, 84, 89, 84, 90, 84, 91, 84, 92, 84, 93, 84, 94, 84, 95, 84, 96, 84, 97, 84, 98, 84, 99, 84, 100, 84, 101, 84, 102, 84, 103, 84, 104, 84, 105, 84, 106, 84, 107, 84, 108, 84, 109, 84, 110, 84, 111, 84, 112, 84, 113, 84, 114, 84, 115, 84, 116, 84, 117, 84, 118, 84, 119, 84, 120, 84, 121, 84, 168, 84, 169, 84, 170, 84, 171, 84, 172, 84, 173, 84, 174, 84, 175, 84, 176, 84, 177, 84, 178, 84, 179, 84, 180, 84, 181, 84, 182, 84, 183, 84, 184, 84, 185, 84, 186, 84, 187, 84, 188, 85, 3, 85, 4, 85, 5, 85, 6, 85, 7, 85, 8, 85, 9, 85, 10, 85, 11, 85, 12, 85, 13, 85, 14, 85, 15, 85, 16, 85, 17, 85, 18, 85, 19, 85, 20, 85, 21, 85, 22, 85, 23, 85, 24, 85, 25, 85, 26, 85, 27, 85, 28, 85, 29, 85, 30, 85, 31, 85, 32, 85, 33, 85, 34, 85, 35, 85, 36, 85, 37, 85, 38, 85, 39, 85, 40, 85, 41, 85, 42, 85, 43, 85, 44, 85, 45, 85, 46, 85, 47, 85, 48, 85, 49, 85, 50, 85, 78, 85, 79, 85, 80, 85, 81, 85, 82, 85, 83, 85, 84, 85, 85, 85, 86, 85, 87, 85, 88, 85, 89, 85, 90, 85, 91, 85, 92, 85, 93, 85, 94, 85, 95, 85, 96, 85, 97, 85, 98, 85, 99, 85, 100, 85, 101, 85, 102, 85, 103, 85, 104, 85, 105, 85, 106, 85, 107, 85, 108, 85, 109, 85, 110, 85, 111, 85, 112, 85, 113, 85, 114, 85, 115, 85, 116, 85, 117, 85, 118, 85, 119, 85, 120, 85, 121, 85, 168, 85, 169, 85, 170, 85, 171, 85, 172, 85, 173, 85, 174, 85, 175, 85, 176, 85, 177, 85, 178, 85, 179, 85, 180, 85, 181, 85, 182, 85, 183, 85, 184, 85, 185, 85, 186, 85, 187, 85, 188, 86, 3, 86, 4, 86, 5, 86, 6, 86, 7, 86, 8, 86, 9, 86, 10, 86, 11, 86, 12, 86, 13, 86, 14, 86, 15, 86, 16, 86, 17, 86, 18, 86, 19, 86, 20, 86, 21, 86, 22, 86, 23, 86, 24, 86, 25, 86, 26, 86, 27, 86, 28, 86, 29, 86, 30, 86, 31, 86, 32, 86, 33, 86, 34, 86, 35, 86, 36, 86, 37, 86, 38, 86, 39, 86, 40, 86, 41, 86, 42, 86, 43, 86, 44, 86, 45, 86, 46, 86, 47, 86, 48, 86, 49, 86, 50, 86, 78, 86, 79, 86, 80, 86, 81, 86, 82, 86, 83, 86, 84, 86, 85, 86, 86, 86, 87, 86, 88, 86, 89, 86, 90, 86, 91, 86, 92, 86, 93, 86, 94, 86, 95, 86, 96, 86, 97, 86, 98, 86, 99, 86, 100, 86, 101, 86, 102, 86, 103, 86, 104, 86, 105, 86, 106, 86, 107, 86, 108, 86, 109, 86, 110, 86, 111, 86, 112, 86, 113, 86, 114, 86, 115, 86, 116, 86, 117, 86, 118, 86, 119, 86, 120, 86, 121, 86, 168, 86, 169, 86, 170, 86, 171, 86, 172, 86, 173, 86, 174, 86, 175, 86, 176, 86, 177, 86, 178, 86, 179, 86, 180, 86, 181, 86, 182, 86, 183, 86, 184, 86, 185, 86, 186, 86, 187, 86, 188, 87, 3, 87, 4, 87, 5, 87, 6, 87, 7, 87, 8, 87, 9, 87, 10, 87, 11, 87, 12, 87, 13, 87, 14, 87, 15, 87, 16, 87, 17, 87, 18, 87, 19, 87, 20, 87, 21, 87, 22, 87, 23, 87, 24, 87, 25, 87, 26, 87, 27, 87, 28, 87, 29, 87, 30, 87, 31, 87, 32, 87, 33, 87, 34, 87, 35, 87, 36, 87, 37, 87, 38, 87, 39, 87, 40, 87, 41, 87, 42, 87, 43, 87, 44, 87, 45, 87, 46, 87, 47, 87, 48, 87, 49, 87, 50, 87, 78, 87, 79, 87, 80, 87, 81, 87, 82, 87, 83, 87, 84, 87, 85, 87, 86, 87, 87, 87, 88, 87, 89, 87, 90, 87, 91, 87, 92, 87, 93, 87, 94, 87, 95, 87, 96, 87, 97, 87, 98, 87, 99, 87, 100, 87, 101, 87, 102, 87, 103, 87, 104, 87, 105, 87, 106, 87, 107, 87, 108, 87, 109, 87, 110, 87, 111, 87, 112, 87, 113, 87, 114, 87, 115, 87, 116, 87, 117, 87, 118, 87, 119, 87, 120, 87, 121, 87, 169, 87, 170, 87, 171, 87, 172, 87, 173, 87, 174, 87, 175, 87, 176, 87, 177, 87, 178, 87, 179, 87, 180, 87, 181, 87, 182, 87, 183, 87, 184, 87, 185, 87, 186, 87, 187, 87, 188, 88, 3, 88, 4, 88, 5, 88, 6, 88, 7, 88, 8, 88, 9, 88, 10, 88, 11, 88, 12, 88, 13, 88, 14, 88, 15, 88, 16, 88, 17, 88, 18, 88, 19, 88, 20, 88, 21, 88, 22, 88, 23, 88, 24, 88, 25, 88, 26, 88, 27, 88, 28, 88, 29, 88, 30, 88, 31, 88, 32, 88, 33, 88, 34, 88, 35, 88, 36, 88, 37, 88, 38, 88, 39, 88, 40, 88, 41, 88, 42, 88, 43, 88, 44, 88, 45, 88, 46, 88, 47, 88, 48, 88, 49, 88, 50, 88, 77, 88, 78, 88, 79, 88, 80, 88, 81, 88, 82, 88, 83, 88, 84, 88, 85, 88, 86, 88, 87, 88, 88, 88, 89, 88, 90, 88, 91, 88, 92, 88, 93, 88, 94, 88, 95, 88, 96, 88, 97, 88, 98, 88, 99, 88, 100, 88, 101, 88, 102, 88, 103, 88, 104, 88, 105, 88, 106, 88, 107, 88, 108, 88, 109, 88, 110, 88, 111, 88, 112, 88, 113, 88, 114, 88, 115, 88, 116, 88, 117, 88, 118, 88, 119, 88, 120, 88, 121, 88, 169, 88, 170, 88, 171, 88, 172, 88, 173, 88, 174, 88, 175, 88, 176, 88, 177, 88, 178, 88, 179, 88, 180, 88, 181, 88, 182, 88, 183, 88, 184, 88, 185, 88, 186, 88, 187, 88, 188, 89, 3, 89, 4, 89, 5, 89, 6, 89, 7, 89, 8, 89, 9, 89, 10, 89, 11, 89, 12, 89, 13, 89, 14, 89, 15, 89, 16, 89, 17, 89, 18, 89, 19, 89, 20, 89, 21, 89, 22, 89, 23, 89, 24, 89, 25, 89, 26, 89, 27, 89, 28, 89, 29, 89, 30, 89, 31, 89, 32, 89, 33, 89, 34, 89, 35, 89, 36, 89, 37, 89, 38, 89, 39, 89, 40, 89, 41, 89, 42, 89, 43, 89, 44, 89, 45, 89, 46, 89, 47, 89, 48, 89, 49, 89, 50, 89, 77, 89, 78, 89, 79, 89, 80, 89, 81, 89, 82, 89, 83, 89, 84, 89, 85, 89, 86, 89, 87, 89, 88, 89, 89, 89, 90, 89, 91, 89, 92, 89, 93, 89, 94, 89, 95, 89, 96, 89, 97, 89, 98, 89, 99, 89, 100, 89, 101, 89, 102, 89, 103, 89, 104, 89, 105, 89, 106, 89, 107, 89, 108, 89, 109, 89, 110, 89, 111, 89, 112, 89, 113, 89, 114, 89, 115, 89, 116, 89, 117, 89, 118, 89, 119, 89, 120, 89, 121, 89, 169, 89, 170, 89, 171, 89, 172, 89, 173, 89, 174, 89, 175, 89, 176, 89, 177, 89, 178, 89, 179, 89, 180, 89, 181, 89, 182, 89, 183, 89, 184, 89, 185, 89, 186, 89, 187, 89, 188, 90, 3, 90, 4, 90, 5, 90, 6, 90, 7, 90, 8, 90, 9, 90, 10, 90, 11, 90, 12, 90, 13, 90, 14, 90, 15, 90, 16, 90, 17, 90, 18, 90, 19, 90, 20, 90, 21, 90, 22, 90, 23, 90, 24, 90, 25, 90, 26, 90, 27, 90, 28, 90, 29, 90, 30, 90, 31, 90, 32, 90, 33, 90, 34, 90, 35, 90, 36, 90, 37, 90, 38, 90, 39, 90, 40, 90, 41, 90, 42, 90, 43, 90, 44, 90, 45, 90, 46, 90, 47, 90, 48, 90, 49, 90, 50, 90, 51, 90, 77, 90, 78, 90, 79, 90, 80, 90, 81, 90, 82, 90, 83, 90, 84, 90, 85, 90, 86, 90, 87, 90, 88, 90, 89, 90, 90, 90, 91, 90, 92, 90, 93, 90, 94, 90, 95, 90, 96, 90, 97, 90, 98, 90, 99, 90, 100, 90, 101, 90, 102, 90, 103, 90, 104, 90, 105, 90, 106, 90, 107, 90, 108, 90, 109, 90, 110, 90, 111, 90, 112, 90, 113, 90, 114, 90, 115, 90, 116, 90, 117, 90, 118, 90, 119, 90, 120, 90, 121, 90, 169, 90, 170, 90, 171, 90, 172, 90, 173, 90, 174, 90, 175, 90, 176, 90, 177, 90, 178, 90, 179, 90, 180, 90, 181, 90, 182, 90, 183, 90, 184, 90, 185, 90, 186, 90, 187, 90, 188, 91, 3, 91, 4, 91, 5, 91, 6, 91, 7, 91, 8, 91, 9, 91, 10, 91, 11, 91, 12, 91, 13, 91, 14, 91, 15, 91, 16, 91, 17, 91, 18, 91, 19, 91, 20, 91, 21, 91, 22, 91, 23, 91, 24, 91, 25, 91, 26, 91, 27, 91, 28, 91, 29, 91, 30, 91, 31, 91, 32, 91, 33, 91, 34, 91, 35, 91, 36, 91, 37, 91, 38, 91, 39, 91, 40, 91, 41, 91, 42, 91, 43, 91, 44, 91, 45, 91, 46, 91, 47, 91, 48, 91, 49, 91, 50, 91, 51, 91, 77, 91, 78, 91, 79, 91, 80, 91, 81, 91, 82, 91, 83, 91, 84, 91, 85, 91, 86, 91, 87, 91, 88, 91, 89, 91, 90, 91, 91, 91, 92, 91, 93, 91, 94, 91, 95, 91, 96, 91, 97, 91, 98, 91, 99, 91, 100, 91, 101, 91, 102, 91, 103, 91, 104, 91, 105, 91, 106, 91, 107, 91, 108, 91, 109, 91, 110, 91, 111, 91, 112, 91, 113, 91, 114, 91, 115, 91, 116, 91, 117, 91, 118, 91, 119, 91, 120, 91, 169, 91, 170, 91, 171, 91, 172, 91, 173, 91, 174, 91, 175, 91, 176, 91, 177, 91, 178, 91, 179, 91, 180, 91, 181, 91, 182, 91, 183, 91, 184, 91, 185, 91, 186, 91, 187, 91, 188, 92, 3, 92, 4, 92, 5, 92, 6, 92, 7, 92, 8, 92, 9, 92, 10, 92, 11, 92, 12, 92, 13, 92, 14, 92, 15, 92, 16, 92, 17, 92, 18, 92, 19, 92, 20, 92, 21, 92, 22, 92, 23, 92, 24, 92, 25, 92, 26, 92, 27, 92, 28, 92, 29, 92, 30, 92, 31, 92, 32, 92, 33, 92, 34, 92, 35, 92, 36, 92, 37, 92, 38, 92, 39, 92, 40, 92, 41, 92, 42, 92, 43, 92, 44, 92, 45, 92, 46, 92, 47, 92, 48, 92, 49, 92, 50, 92, 51, 92, 76, 92, 77, 92, 78, 92, 79, 92, 80, 92, 81, 92, 82, 92, 83, 92, 84, 92, 85, 92, 86, 92, 87, 92, 88, 92, 89, 92, 90, 92, 91, 92, 92, 92, 93, 92, 94, 92, 95, 92, 96, 92, 97, 92, 98, 92, 99, 92, 100, 92, 101, 92, 102, 92, 103, 92, 104, 92, 105, 92, 106, 92, 107, 92, 108, 92, 109, 92, 110, 92, 111, 92, 112, 92, 113, 92, 114, 92, 115, 92, 116, 92, 117, 92, 118, 92, 119, 92, 120, 92, 169, 92, 170, 92, 171, 92, 172, 92, 173, 92, 174, 92, 175, 92, 176, 92, 177, 92, 178, 92, 179, 92, 180, 92, 181, 92, 182, 92, 183, 92, 184, 92, 185, 92, 186, 92, 187, 92, 188, 93, 3, 93, 4, 93, 5, 93, 6, 93, 7, 93, 8, 93, 9, 93, 10, 93, 11, 93, 12, 93, 13, 93, 14, 93, 15, 93, 16, 93, 17, 93, 18, 93, 19, 93, 20, 93, 21, 93, 22, 93, 23, 93, 24, 93, 25, 93, 26, 93, 27, 93, 28, 93, 29, 93, 30, 93, 31, 93, 32, 93, 33, 93, 34, 93, 35, 93, 36, 93, 37, 93, 38, 93, 39, 93, 40, 93, 41, 93, 42, 93, 43, 93, 44, 93, 45, 93, 46, 93, 47, 93, 48, 93, 49, 93, 50, 93, 51, 93, 76, 93, 77, 93, 78, 93, 79, 93, 80, 93, 81, 93, 82, 93, 83, 93, 84, 93, 85, 93, 86, 93, 87, 93, 88, 93, 89, 93, 90, 93, 91, 93, 92, 93, 93, 93, 94, 93, 95, 93, 96, 93, 97, 93, 98, 93, 99, 93, 100, 93, 101, 93, 102, 93, 103, 93, 104, 93, 105, 93, 106, 93, 107, 93, 108, 93, 109, 93, 110, 93, 111, 93, 112, 93, 113, 93, 114, 93, 115, 93, 116, 93, 117, 93, 118, 93, 119, 93, 120, 93, 169, 93, 170, 93, 171, 93, 172, 93, 173, 93, 174, 93, 175, 93, 176, 93, 177, 93, 178, 93, 179, 93, 180, 93, 181, 93, 182, 93, 183, 93, 184, 93, 185, 93, 186, 93, 187, 93, 188, 94, 3, 94, 4, 94, 5, 94, 6, 94, 7, 94, 8, 94, 9, 94, 10, 94, 11, 94, 12, 94, 13, 94, 14, 94, 15, 94, 16, 94, 17, 94, 18, 94, 19, 94, 20, 94, 21, 94, 22, 94, 23, 94, 24, 94, 25, 94, 26, 94, 27, 94, 28, 94, 29, 94, 30, 94, 31, 94, 32, 94, 33, 94, 34, 94, 35, 94, 36, 94, 37, 94, 38, 94, 39, 94, 40, 94, 41, 94, 42, 94, 43, 94, 44, 94, 45, 94, 46, 94, 47, 94, 48, 94, 49, 94, 50, 94, 51, 94, 76, 94, 77, 94, 78, 94, 79, 94, 80, 94, 81, 94, 82, 94, 83, 94, 84, 94, 85, 94, 86, 94, 87, 94, 88, 94, 89, 94, 90, 94, 91, 94, 92, 94, 93, 94, 94, 94, 95, 94, 96, 94, 97, 94, 98, 94, 99, 94, 100, 94, 101, 94, 102, 94, 103, 94, 104, 94, 105, 94, 106, 94, 107, 94, 108, 94, 109, 94, 110, 94, 111, 94, 112, 94, 113, 94, 114, 94, 115, 94, 116, 94, 117, 94, 118, 94, 119, 94, 120, 94, 169, 94, 170, 94, 171, 94, 172, 94, 173, 94, 174, 94, 175, 94, 176, 94, 177, 94, 178, 94, 179, 94, 180, 94, 181, 94, 182, 94, 183, 94, 184, 94, 185, 94, 186, 94, 187, 94, 188, 95, 3, 95, 4, 95, 5, 95, 6, 95, 7, 95, 8, 95, 9, 95, 10, 95, 11, 95, 12, 95, 13, 95, 14, 95, 15, 95, 16, 95, 17, 95, 18, 95, 19, 95, 20, 95, 21, 95, 22, 95, 23, 95, 24, 95, 25, 95, 26, 95, 27, 95, 28, 95, 29, 95, 30, 95, 31, 95, 32, 95, 33, 95, 34, 95, 35, 95, 36, 95, 37, 95, 38, 95, 39, 95, 40, 95, 41, 95, 42, 95, 43, 95, 44, 95, 45, 95, 46, 95, 47, 95, 48, 95, 49, 95, 50, 95, 51, 95, 52, 95, 76, 95, 77, 95, 78, 95, 79, 95, 80, 95, 81, 95, 82, 95, 83, 95, 84, 95, 85, 95, 86, 95, 87, 95, 88, 95, 89, 95, 90, 95, 91, 95, 92, 95, 93, 95, 94, 95, 95, 95, 96, 95, 97, 95, 98, 95, 99, 95, 100, 95, 101, 95, 102, 95, 103, 95, 104, 95, 105, 95, 106, 95, 107, 95, 108, 95, 109, 95, 110, 95, 111, 95, 112, 95, 113, 95, 114, 95, 115, 95, 116, 95, 117, 95, 118, 95, 119, 95, 169, 95, 170, 95, 171, 95, 172, 95, 173, 95, 174, 95, 175, 95, 176, 95, 177, 95, 178, 95, 179, 95, 180, 95, 181, 95, 182, 95, 183, 95, 184, 95, 185, 95, 186, 95, 187, 95, 188, 96, 3, 96, 4, 96, 5, 96, 6, 96, 7, 96, 8, 96, 9, 96, 10, 96, 11, 96, 12, 96, 13, 96, 14, 96, 15, 96, 16, 96, 17, 96, 18, 96, 19, 96, 20, 96, 21, 96, 22, 96, 23, 96, 24, 96, 25, 96, 26, 96, 27, 96, 28, 96, 29, 96, 30, 96, 31, 96, 32, 96, 33, 96, 34, 96, 35, 96, 36, 96, 37, 96, 38, 96, 39, 96, 40, 96, 41, 96, 42, 96, 43, 96, 44, 96, 45, 96, 46, 96, 47, 96, 48, 96, 49, 96, 50, 96, 51, 96, 52, 96, 75, 96, 76, 96, 77, 96, 78, 96, 79, 96, 80, 96, 81, 96, 82, 96, 83, 96, 84, 96, 85, 96, 86, 96, 87, 96, 88, 96, 89, 96, 90, 96, 91, 96, 92, 96, 93, 96, 94, 96, 95, 96, 96, 96, 97, 96, 98, 96, 99, 96, 100, 96, 101, 96, 102, 96, 103, 96, 104, 96, 105, 96, 106, 96, 107, 96, 108, 96, 109, 96, 110, 96, 111, 96, 112, 96, 113, 96, 114, 96, 115, 96, 116, 96, 117, 96, 118, 96, 170, 96, 171, 96, 172, 96, 173, 96, 174, 96, 175, 96, 176, 96, 177, 96, 178, 96, 179, 96, 180, 96, 181, 96, 182, 96, 183, 96, 184, 96, 185, 96, 186, 96, 187, 96, 188, 97, 3, 97, 4, 97, 5, 97, 6, 97, 7, 97, 8, 97, 9, 97, 10, 97, 11, 97, 12, 97, 13, 97, 14, 97, 15, 97, 16, 97, 17, 97, 18, 97, 19, 97, 20, 97, 21, 97, 22, 97, 23, 97, 24, 97, 25, 97, 26, 97, 27, 97, 28, 97, 29, 97, 30, 97, 31, 97, 32, 97, 33, 97, 34, 97, 35, 97, 36, 97, 37, 97, 38, 97, 39, 97, 40, 97, 41, 97, 42, 97, 43, 97, 44, 97, 45, 97, 46, 97, 47, 97, 48, 97, 49, 97, 50, 97, 51, 97, 52, 97, 53, 97, 75, 97, 76, 97, 77, 97, 78, 97, 79, 97, 80, 97, 81, 97, 82, 97, 83, 97, 84, 97, 85, 97, 86, 97, 87, 97, 88, 97, 89, 97, 90, 97, 91, 97, 92, 97, 93, 97, 94, 97, 95, 97, 96, 97, 97, 97, 98, 97, 99, 97, 100, 97, 101, 97, 102, 97, 103, 97, 104, 97, 105, 97, 106, 97, 107, 97, 108, 97, 109, 97, 110, 97, 111, 97, 112, 97, 113, 97, 114, 97, 115, 97, 116, 97, 170, 97, 171, 97, 172, 97, 173, 97, 174, 97, 175, 97, 176, 97, 177, 97, 178, 97, 179, 97, 180, 97, 181, 97, 182, 97, 183, 97, 184, 97, 185, 97, 186, 97, 187, 97, 188, 98, 3, 98, 4, 98, 5, 98, 6, 98, 7, 98, 8, 98, 9, 98, 10, 98, 11, 98, 12, 98, 13, 98, 14, 98, 15, 98, 16, 98, 17, 98, 18, 98, 19, 98, 20, 98, 21, 98, 22, 98, 23, 98, 24, 98, 25, 98, 26, 98, 27, 98, 28, 98, 29, 98, 30, 98, 31, 98, 32, 98, 33, 98, 34, 98, 35, 98, 36, 98, 37, 98, 38, 98, 39, 98, 40, 98, 41, 98, 42, 98, 43, 98, 44, 98, 45, 98, 46, 98, 47, 98, 48, 98, 49, 98, 50, 98, 51, 98, 52, 98, 53, 98, 73, 98, 74, 98, 75, 98, 76, 98, 77, 98, 78, 98, 79, 98, 80, 98, 81, 98, 82, 98, 83, 98, 84, 98, 85, 98, 86, 98, 87, 98, 88, 98, 89, 98, 90, 98, 91, 98, 92, 98, 93, 98, 94, 98, 95, 98, 96, 98, 97, 98, 98, 98, 99, 98, 100, 98, 101, 98, 102, 98, 103, 98, 104, 98, 105, 98, 106, 98, 107, 98, 108, 98, 109, 98, 110, 98, 111, 98, 112, 98, 113, 98, 114, 98, 170, 98, 171, 98, 172, 98, 173, 98, 174, 98, 175, 98, 176, 98, 177, 98, 178, 98, 179, 98, 180, 98, 181, 98, 182, 98, 183, 98, 184, 98, 185, 98, 186, 98, 187, 98, 188, 99, 3, 99, 4, 99, 5, 99, 6, 99, 7, 99, 8, 99, 9, 99, 10, 99, 11, 99, 12, 99, 13, 99, 14, 99, 15, 99, 16, 99, 17, 99, 18, 99, 19, 99, 20, 99, 21, 99, 22, 99, 23, 99, 24, 99, 25, 99, 26, 99, 27, 99, 28, 99, 29, 99, 30, 99, 31, 99, 32, 99, 33, 99, 34, 99, 35, 99, 36, 99, 37, 99, 38, 99, 39, 99, 40, 99, 41, 99, 42, 99, 43, 99, 44, 99, 45, 99, 46, 99, 47, 99, 48, 99, 49, 99, 50, 99, 51, 99, 52, 99, 53, 99, 54, 99, 72, 99, 73, 99, 74, 99, 75, 99, 76, 99, 77, 99, 78, 99, 79, 99, 80, 99, 81, 99, 82, 99, 83, 99, 84, 99, 85, 99, 86, 99, 87, 99, 88, 99, 89, 99, 90, 99, 91, 99, 92, 99, 93, 99, 94, 99, 95, 99, 96, 99, 97, 99, 98, 99, 99, 99, 100, 99, 101, 99, 102, 99, 103, 99, 104, 99, 105, 99, 106, 99, 107, 99, 108, 99, 109, 99, 110, 99, 111, 99, 170, 99, 171, 99, 172, 99, 173, 99, 174, 99, 175, 99, 176, 99, 177, 99, 178, 99, 179, 99, 180, 99, 181, 99, 182, 99, 183, 99, 184, 99, 185, 99, 186, 99, 187, 99, 188, 100, 3, 100, 4, 100, 5, 100, 6, 100, 7, 100, 8, 100, 9, 100, 10, 100, 11, 100, 12, 100, 13, 100, 14, 100, 15, 100, 16, 100, 17, 100, 18, 100, 19, 100, 20, 100, 21, 100, 22, 100, 23, 100, 24, 100, 25, 100, 26, 100, 27, 100, 28, 100, 29, 100, 30, 100, 31, 100, 32, 100, 33, 100, 34, 100, 35, 100, 36, 100, 37, 100, 38, 100, 39, 100, 40, 100, 41, 100, 42, 100, 43, 100, 44, 100, 45, 100, 46, 100, 47, 100, 48, 100, 49, 100, 50, 100, 51, 100, 52, 100, 53, 100, 54, 100, 55, 100, 72, 100, 73, 100, 74, 100, 75, 100, 76, 100, 77, 100, 78, 100, 79, 100, 80, 100, 81, 100, 82, 100, 83, 100, 84, 100, 85, 100, 86, 100, 87, 100, 88, 100, 89, 100, 90, 100, 91, 100, 92, 100, 93, 100, 94, 100, 95, 100, 96, 100, 97, 100, 98, 100, 99, 100, 100, 100, 101, 100, 102, 100, 103, 100, 104, 100, 105, 100, 106, 100, 107, 100, 108, 100, 170, 100, 171, 100, 172, 100, 173, 100, 174, 100, 175, 100, 176, 100, 177, 100, 178, 100, 179, 100, 180, 100, 181, 100, 182, 100, 183, 100, 184, 100, 185, 100, 186, 100, 187, 100, 188, 101, 3, 101, 4, 101, 5, 101, 6, 101, 7, 101, 8, 101, 9, 101, 10, 101, 11, 101, 12, 101, 13, 101, 14, 101, 15, 101, 16, 101, 17, 101, 18, 101, 19, 101, 20, 101, 21, 101, 22, 101, 23, 101, 24, 101, 25, 101, 26, 101, 27, 101, 28, 101, 29, 101, 30, 101, 31, 101, 32, 101, 33, 101, 34, 101, 35, 101, 36, 101, 37, 101, 38, 101, 39, 101, 40, 101, 41, 101, 42, 101, 43, 101, 44, 101, 45, 101, 46, 101, 47, 101, 48, 101, 49, 101, 50, 101, 51, 101, 52, 101, 53, 101, 54, 101, 55, 101, 56, 101, 57, 101, 71, 101, 72, 101, 73, 101, 74, 101, 75, 101, 76, 101, 77, 101, 78, 101, 79, 101, 80, 101, 81, 101, 82, 101, 83, 101, 84, 101, 85, 101, 86, 101, 87, 101, 88, 101, 89, 101, 90, 101, 91, 101, 92, 101, 93, 101, 94, 101, 95, 101, 96, 101, 97, 101, 98, 101, 99, 101, 100, 101, 101, 101, 102, 101, 103, 101, 104, 101, 105, 101, 170, 101, 171, 101, 172, 101, 173, 101, 174, 101, 175, 101, 176, 101, 177, 101, 178, 101, 179, 101, 180, 101, 181, 101, 182, 101, 183, 101, 184, 101, 185, 101, 186, 101, 187, 101, 188, 102, 3, 102, 4, 102, 5, 102, 6, 102, 7, 102, 8, 102, 9, 102, 10, 102, 11, 102, 12, 102, 13, 102, 14, 102, 15, 102, 16, 102, 17, 102, 18, 102, 19, 102, 20, 102, 21, 102, 22, 102, 23, 102, 24, 102, 25, 102, 26, 102, 27, 102, 28, 102, 29, 102, 30, 102, 31, 102, 32, 102, 33, 102, 34, 102, 35, 102, 36, 102, 37, 102, 38, 102, 39, 102, 40, 102, 41, 102, 42, 102, 43, 102, 44, 102, 45, 102, 46, 102, 47, 102, 48, 102, 49, 102, 50, 102, 51, 102, 52, 102, 53, 102, 54, 102, 55, 102, 56, 102, 57, 102, 58, 102, 59, 102, 60, 102, 69, 102, 70, 102, 71, 102, 72, 102, 73, 102, 74, 102, 75, 102, 76, 102, 77, 102, 78, 102, 79, 102, 80, 102, 81, 102, 82, 102, 83, 102, 84, 102, 85, 102, 86, 102, 87, 102, 88, 102, 89, 102, 90, 102, 91, 102, 92, 102, 93, 102, 94, 102, 95, 102, 96, 102, 97, 102, 98, 102, 99, 102, 100, 102, 101, 102, 102, 102, 103, 102, 170, 102, 171, 102, 172, 102, 173, 102, 174, 102, 175, 102, 176, 102, 177, 102, 178, 102, 179, 102, 180, 102, 181, 102, 182, 102, 183, 102, 184, 102, 185, 102, 186, 102, 187, 102, 188, 103, 3, 103, 4, 103, 5, 103, 6, 103, 7, 103, 8, 103, 9, 103, 10, 103, 11, 103, 12, 103, 13, 103, 14, 103, 15, 103, 16, 103, 17, 103, 18, 103, 19, 103, 20, 103, 21, 103, 22, 103, 23, 103, 24, 103, 25, 103, 26, 103, 27, 103, 28, 103, 29, 103, 30, 103, 31, 103, 32, 103, 33, 103, 34, 103, 35, 103, 36, 103, 37, 103, 38, 103, 39, 103, 40, 103, 41, 103, 42, 103, 43, 103, 44, 103, 45, 103, 46, 103, 47, 103, 48, 103, 49, 103, 50, 103, 51, 103, 52, 103, 53, 103, 54, 103, 55, 103, 56, 103, 57, 103, 58, 103, 59, 103, 60, 103, 61, 103, 62, 103, 63, 103, 64, 103, 65, 103, 66, 103, 67, 103, 68, 103, 69, 103, 70, 103, 71, 103, 72, 103, 73, 103, 74, 103, 75, 103, 76, 103, 77, 103, 78, 103, 79, 103, 80, 103, 81, 103, 82, 103, 83, 103, 84, 103, 85, 103, 86, 103, 87, 103, 88, 103, 89, 103, 90, 103, 91, 103, 92, 103, 93, 103, 94, 103, 95, 103, 96, 103, 97, 103, 98, 103, 99, 103, 100, 103, 170, 103, 171, 103, 172, 103, 173, 103, 174, 103, 175, 103, 176, 103, 177, 103, 178, 103, 179, 103, 180, 103, 181, 103, 182, 103, 183, 103, 184, 103, 185, 103, 186, 103, 187, 103, 188, 104, 3, 104, 4, 104, 5, 104, 6, 104, 7, 104, 8, 104, 9, 104, 10, 104, 11, 104, 12, 104, 13, 104, 14, 104, 15, 104, 16, 104, 17, 104, 18, 104, 19, 104, 20, 104, 21, 104, 22, 104, 23, 104, 24, 104, 25, 104, 26, 104, 27, 104, 28, 104, 29, 104, 30, 104, 31, 104, 32, 104, 33, 104, 34, 104, 35, 104, 36, 104, 37, 104, 38, 104, 39, 104, 40, 104, 41, 104, 42, 104, 43, 104, 44, 104, 45, 104, 46, 104, 47, 104, 48, 104, 49, 104, 50, 104, 51, 104, 52, 104, 53, 104, 54, 104, 55, 104, 56, 104, 57, 104, 58, 104, 59, 104, 60, 104, 61, 104, 62, 104, 63, 104, 64, 104, 65, 104, 66, 104, 67, 104, 68, 104, 69, 104, 70, 104, 71, 104, 72, 104, 73, 104, 74, 104, 75, 104, 76, 104, 77, 104, 78, 104, 79, 104, 80, 104, 81, 104, 82, 104, 83, 104, 84, 104, 85, 104, 86, 104, 87, 104, 88, 104, 89, 104, 90, 104, 91, 104, 92, 104, 93, 104, 94, 104, 95, 104, 96, 104, 97, 104, 170, 104, 171, 104, 172, 104, 173, 104, 174, 104, 175, 104, 176, 104, 177, 104, 178, 104, 179, 104, 180, 104, 181, 104, 182, 104, 183, 104, 184, 104, 185, 104, 186, 104, 187, 104, 188, 105, 3, 105, 4, 105, 5, 105, 6, 105, 7, 105, 8, 105, 9, 105, 10, 105, 11, 105, 12, 105, 13, 105, 14, 105, 15, 105, 16, 105, 17, 105, 18, 105, 19, 105, 20, 105, 21, 105, 22, 105, 23, 105, 24, 105, 25, 105, 26, 105, 27, 105, 28, 105, 29, 105, 30, 105, 31, 105, 32, 105, 33, 105, 34, 105, 35, 105, 36, 105, 37, 105, 38, 105, 39, 105, 40, 105, 41, 105, 42, 105, 43, 105, 44, 105, 45, 105, 46, 105, 47, 105, 48, 105, 49, 105, 50, 105, 51, 105, 52, 105, 53, 105, 54, 105, 55, 105, 56, 105, 57, 105, 58, 105, 59, 105, 60, 105, 61, 105, 62, 105, 63, 105, 64, 105, 65, 105, 66, 105, 67, 105, 68, 105, 69, 105, 70, 105, 71, 105, 72, 105, 73, 105, 74, 105, 75, 105, 76, 105, 77, 105, 78, 105, 79, 105, 80, 105, 81, 105, 82, 105, 83, 105, 84, 105, 85, 105, 86, 105, 87, 105, 88, 105, 89, 105, 90, 105, 91, 105, 92, 105, 93, 105, 94, 105, 95, 105, 170, 105, 171, 105, 172, 105, 173, 105, 174, 105, 175, 105, 176, 105, 177, 105, 178, 105, 179, 105, 180, 105, 181, 105, 182, 105, 183, 105, 184, 105, 185, 105, 186, 105, 187, 105, 188, 106, 3, 106, 4, 106, 5, 106, 6, 106, 7, 106, 8, 106, 9, 106, 10, 106, 11, 106, 12, 106, 13, 106, 14, 106, 15, 106, 16, 106, 17, 106, 18, 106, 19, 106, 20, 106, 21, 106, 22, 106, 23, 106, 24, 106, 25, 106, 26, 106, 27, 106, 28, 106, 29, 106, 30, 106, 31, 106, 32, 106, 33, 106, 34, 106, 35, 106, 36, 106, 37, 106, 38, 106, 39, 106, 40, 106, 41, 106, 42, 106, 43, 106, 44, 106, 45, 106, 46, 106, 47, 106, 48, 106, 49, 106, 50, 106, 51, 106, 52, 106, 53, 106, 54, 106, 55, 106, 56, 106, 57, 106, 58, 106, 59, 106, 60, 106, 61, 106, 62, 106, 63, 106, 64, 106, 65, 106, 66, 106, 67, 106, 68, 106, 69, 106, 70, 106, 71, 106, 72, 106, 73, 106, 74, 106, 75, 106, 76, 106, 77, 106, 78, 106, 79, 106, 80, 106, 81, 106, 82, 106, 83, 106, 84, 106, 85, 106, 86, 106, 87, 106, 88, 106, 89, 106, 90, 106, 91, 106, 92, 106, 93, 106, 170, 106, 171, 106, 172, 106, 173, 106, 174, 106, 175, 106, 176, 106, 177, 106, 178, 106, 179, 106, 180, 106, 181, 106, 182, 106, 183, 106, 184, 106, 185, 106, 186, 106, 187, 106, 188, 107, 3, 107, 4, 107, 5, 107, 6, 107, 7, 107, 8, 107, 9, 107, 10, 107, 11, 107, 12, 107, 13, 107, 14, 107, 15, 107, 16, 107, 17, 107, 18, 107, 19, 107, 20, 107, 21, 107, 22, 107, 23, 107, 24, 107, 25, 107, 26, 107, 27, 107, 28, 107, 29, 107, 30, 107, 31, 107, 32, 107, 33, 107, 34, 107, 35, 107, 36, 107, 37, 107, 38, 107, 39, 107, 40, 107, 41, 107, 42, 107, 43, 107, 44, 107, 45, 107, 46, 107, 47, 107, 48, 107, 49, 107, 50, 107, 51, 107, 52, 107, 53, 107, 54, 107, 55, 107, 56, 107, 57, 107, 58, 107, 59, 107, 60, 107, 61, 107, 62, 107, 63, 107, 64, 107, 65, 107, 66, 107, 67, 107, 68, 107, 69, 107, 70, 107, 71, 107, 72, 107, 73, 107, 74, 107, 75, 107, 76, 107, 77, 107, 78, 107, 79, 107, 80, 107, 81, 107, 82, 107, 83, 107, 84, 107, 85, 107, 86, 107, 87, 107, 88, 107, 89, 107, 90, 107, 170, 107, 171, 107, 172, 107, 173, 107, 174, 107, 175, 107, 176, 107, 177, 107, 178, 107, 179, 107, 180, 107, 181, 107, 182, 107, 183, 107, 184, 107, 185, 107, 186, 107, 187, 107, 188, 108, 3, 108, 4, 108, 5, 108, 6, 108, 7, 108, 8, 108, 9, 108, 10, 108, 11, 108, 12, 108, 13, 108, 14, 108, 15, 108, 16, 108, 17, 108, 18, 108, 19, 108, 20, 108, 21, 108, 22, 108, 23, 108, 24, 108, 25, 108, 26, 108, 27, 108, 28, 108, 29, 108, 30, 108, 31, 108, 32, 108, 33, 108, 34, 108, 35, 108, 36, 108, 37, 108, 38, 108, 39, 108, 40, 108, 41, 108, 42, 108, 43, 108, 44, 108, 45, 108, 46, 108, 47, 108, 48, 108, 49, 108, 50, 108, 51, 108, 52, 108, 53, 108, 54, 108, 55, 108, 56, 108, 57, 108, 58, 108, 59, 108, 60, 108, 61, 108, 62, 108, 63, 108, 64, 108, 65, 108, 66, 108, 67, 108, 68, 108, 69, 108, 70, 108, 71, 108, 72, 108, 73, 108, 74, 108, 75, 108, 76, 108, 77, 108, 78, 108, 79, 108, 80, 108, 81, 108, 82, 108, 83, 108, 84, 108, 85, 108, 86, 108, 87, 108, 88, 108, 89, 108, 170, 108, 171, 108, 172, 108, 173, 108, 174, 108, 175, 108, 176, 108, 177, 108, 178, 108, 179, 108, 180, 108, 181, 108, 182, 108, 183, 108, 184, 108, 185, 108, 186, 108, 187, 108, 188, 109, 3, 109, 4, 109, 5, 109, 6, 109, 7, 109, 8, 109, 9, 109, 10, 109, 11, 109, 12, 109, 13, 109, 14, 109, 15, 109, 16, 109, 17, 109, 18, 109, 19, 109, 20, 109, 21, 109, 22, 109, 23, 109, 24, 109, 25, 109, 26, 109, 27, 109, 28, 109, 29, 109, 30, 109, 31, 109, 32, 109, 33, 109, 34, 109, 35, 109, 36, 109, 37, 109, 38, 109, 39, 109, 40, 109, 41, 109, 42, 109, 43, 109, 44, 109, 45, 109, 46, 109, 47, 109, 48, 109, 49, 109, 50, 109, 51, 109, 52, 109, 53, 109, 54, 109, 55, 109, 56, 109, 57, 109, 58, 109, 59, 109, 60, 109, 61, 109, 62, 109, 63, 109, 64, 109, 65, 109, 66, 109, 67, 109, 68, 109, 69, 109, 70, 109, 71, 109, 72, 109, 73, 109, 74, 109, 75, 109, 76, 109, 77, 109, 78, 109, 79, 109, 80, 109, 81, 109, 82, 109, 83, 109, 84, 109, 85, 109, 86, 109, 87, 109, 88, 109, 170, 109, 171, 109, 172, 109, 173, 109, 174, 109, 175, 109, 176, 109, 177, 109, 178, 109, 179, 109, 180, 109, 181, 109, 182, 109, 183, 109, 184, 109, 185, 109, 186, 109, 187, 109, 188, 110, 3, 110, 4, 110, 5, 110, 6, 110, 7, 110, 8, 110, 9, 110, 10, 110, 11, 110, 12, 110, 13, 110, 14, 110, 15, 110, 16, 110, 17, 110, 18, 110, 19, 110, 20, 110, 21, 110, 22, 110, 23, 110, 24, 110, 25, 110, 26, 110, 27, 110, 28, 110, 29, 110, 30, 110, 31, 110, 32, 110, 33, 110, 34, 110, 35, 110, 36, 110, 37, 110, 38, 110, 39, 110, 40, 110, 41, 110, 42, 110, 43, 110, 44, 110, 45, 110, 46, 110, 47, 110, 48, 110, 49, 110, 50, 110, 51, 110, 52, 110, 53, 110, 54, 110, 55, 110, 56, 110, 57, 110, 58, 110, 59, 110, 60, 110, 61, 110, 62, 110, 63, 110, 64, 110, 65, 110, 66, 110, 67, 110, 68, 110, 69, 110, 70, 110, 71, 110, 72, 110, 73, 110, 74, 110, 75, 110, 76, 110, 77, 110, 78, 110, 79, 110, 80, 110, 81, 110, 82, 110, 83, 110, 84, 110, 85, 110, 86, 110, 87, 110, 170, 110, 171, 110, 172, 110, 173, 110, 174, 110, 175, 110, 176, 110, 177, 110, 178, 110, 179, 110, 180, 110, 181, 110, 182, 110, 183, 110, 184, 110, 185, 110, 186, 110, 187, 110, 188, 111, 3, 111, 4, 111, 5, 111, 6, 111, 7, 111, 8, 111, 9, 111, 10, 111, 11, 111, 12, 111, 13, 111, 14, 111, 15, 111, 16, 111, 17, 111, 18, 111, 19, 111, 20, 111, 21, 111, 22, 111, 23, 111, 24, 111, 25, 111, 26, 111, 27, 111, 28, 111, 29, 111, 30, 111, 31, 111, 32, 111, 33, 111, 34, 111, 35, 111, 36, 111, 37, 111, 38, 111, 39, 111, 40, 111, 41, 111, 42, 111, 43, 111, 44, 111, 45, 111, 46, 111, 47, 111, 48, 111, 49, 111, 50, 111, 51, 111, 52, 111, 53, 111, 54, 111, 55, 111, 56, 111, 57, 111, 58, 111, 59, 111, 60, 111, 61, 111, 62, 111, 63, 111, 64, 111, 65, 111, 66, 111, 67, 111, 68, 111, 69, 111, 70, 111, 71, 111, 72, 111, 73, 111, 74, 111, 75, 111, 76, 111, 77, 111, 78, 111, 79, 111, 80, 111, 81, 111, 82, 111, 83, 111, 84, 111, 85, 111, 170, 111, 171, 111, 172, 111, 173, 111, 174, 111, 175, 111, 176, 111, 177, 111, 178, 111, 179, 111, 180, 111, 181, 111, 182, 111, 183, 111, 184, 111, 185, 111, 186, 111, 187, 111, 188, 112, 3, 112, 4, 112, 5, 112, 6, 112, 7, 112, 8, 112, 9, 112, 10, 112, 11, 112, 12, 112, 13, 112, 14, 112, 15, 112, 16, 112, 17, 112, 18, 112, 19, 112, 20, 112, 21, 112, 22, 112, 23, 112, 24, 112, 25, 112, 26, 112, 27, 112, 28, 112, 29, 112, 30, 112, 31, 112, 32, 112, 33, 112, 34, 112, 35, 112, 36, 112, 37, 112, 38, 112, 39, 112, 40, 112, 41, 112, 42, 112, 43, 112, 44, 112, 45, 112, 46, 112, 47, 112, 48, 112, 49, 112, 50, 112, 51, 112, 52, 112, 53, 112, 54, 112, 55, 112, 56, 112, 57, 112, 58, 112, 59, 112, 60, 112, 61, 112, 62, 112, 63, 112, 64, 112, 65, 112, 66, 112, 67, 112, 68, 112, 69, 112, 70, 112, 71, 112, 72, 112, 73, 112, 74, 112, 75, 112, 76, 112, 77, 112, 78, 112, 79, 112, 80, 112, 81, 112, 82, 112, 83, 112, 84, 112, 170, 112, 171, 112, 172, 112, 173, 112, 174, 112, 175, 112, 176, 112, 177, 112, 178, 112, 179, 112, 180, 112, 181, 112, 182, 112, 183, 112, 184, 112, 185, 112, 186, 112, 187, 112, 188, 113, 3, 113, 4, 113, 5, 113, 6, 113, 7, 113, 8, 113, 9, 113, 10, 113, 11, 113, 12, 113, 13, 113, 14, 113, 15, 113, 16, 113, 17, 113, 18, 113, 19, 113, 20, 113, 21, 113, 22, 113, 23, 113, 24, 113, 25, 113, 26, 113, 27, 113, 28, 113, 29, 113, 30, 113, 31, 113, 32, 113, 33, 113, 34, 113, 35, 113, 36, 113, 37, 113, 38, 113, 39, 113, 40, 113, 41, 113, 42, 113, 43, 113, 44, 113, 45, 113, 46, 113, 47, 113, 48, 113, 49, 113, 50, 113, 51, 113, 52, 113, 53, 113, 54, 113, 55, 113, 56, 113, 57, 113, 58, 113, 59, 113, 60, 113, 61, 113, 62, 113, 63, 113, 64, 113, 65, 113, 66, 113, 67, 113, 68, 113, 69, 113, 70, 113, 71, 113, 72, 113, 73, 113, 74, 113, 75, 113, 76, 113, 77, 113, 78, 113, 79, 113, 80, 113, 81, 113, 82, 113, 83, 113, 170, 113, 171, 113, 172, 113, 173, 113, 174, 113, 175, 113, 176, 113, 177, 113, 178, 113, 179, 113, 180, 113, 181, 113, 182, 113, 183, 113, 184, 113, 185, 113, 186, 113, 187, 113, 188, 114, 3, 114, 4, 114, 5, 114, 6, 114, 7, 114, 8, 114, 9, 114, 10, 114, 11, 114, 12, 114, 13, 114, 14, 114, 15, 114, 16, 114, 17, 114, 18, 114, 19, 114, 20, 114, 21, 114, 22, 114, 23, 114, 24, 114, 25, 114, 26, 114, 27, 114, 28, 114, 29, 114, 30, 114, 31, 114, 32, 114, 33, 114, 34, 114, 35, 114, 36, 114, 37, 114, 38, 114, 39, 114, 40, 114, 41, 114, 42, 114, 43, 114, 44, 114, 45, 114, 46, 114, 47, 114, 48, 114, 49, 114, 50, 114, 51, 114, 52, 114, 53, 114, 54, 114, 55, 114, 56, 114, 57, 114, 58, 114, 59, 114, 60, 114, 61, 114, 62, 114, 63, 114, 64, 114, 65, 114, 66, 114, 67, 114, 68, 114, 69, 114, 70, 114, 71, 114, 72, 114, 73, 114, 74, 114, 75, 114, 76, 114, 77, 114, 78, 114, 79, 114, 80, 114, 81, 114, 82, 114, 170, 114, 171, 114, 172, 114, 173, 114, 174, 114, 175, 114, 176, 114, 177, 114, 178, 114, 179, 114, 180, 114, 181, 114, 182, 114, 183, 114, 184, 114, 185, 114, 186, 114, 187, 114, 188, 115, 3, 115, 4, 115, 5, 115, 6, 115, 7, 115, 8, 115, 9, 115, 10, 115, 11, 115, 12, 115, 13, 115, 14, 115, 15, 115, 16, 115, 17, 115, 18, 115, 19, 115, 20, 115, 21, 115, 22, 115, 23, 115, 24, 115, 25, 115, 26, 115, 27, 115, 28, 115, 29, 115, 30, 115, 31, 115, 32, 115, 33, 115, 34, 115, 35, 115, 36, 115, 37, 115, 38, 115, 39, 115, 40, 115, 41, 115, 42, 115, 43, 115, 44, 115, 45, 115, 46, 115, 47, 115, 48, 115, 49, 115, 50, 115, 51, 115, 52, 115, 53, 115, 54, 115, 55, 115, 56, 115, 57, 115, 58, 115, 59, 115, 60, 115, 61, 115, 62, 115, 63, 115, 64, 115, 65, 115, 66, 115, 67, 115, 68, 115, 69, 115, 70, 115, 71, 115, 72, 115, 73, 115, 74, 115, 75, 115, 76, 115, 77, 115, 78, 115, 79, 115, 80, 115, 81, 115, 170, 115, 171, 115, 172, 115, 173, 115, 174, 115, 175, 115, 176, 115, 177, 115, 178, 115, 179, 115, 180, 115, 181, 115, 182, 115, 183, 115, 184, 115, 185, 115, 186, 115, 187, 115, 188, 116, 3, 116, 4, 116, 5, 116, 6, 116, 7, 116, 8, 116, 9, 116, 10, 116, 11, 116, 12, 116, 13, 116, 14, 116, 15, 116, 16, 116, 17, 116, 18, 116, 19, 116, 20, 116, 21, 116, 22, 116, 23, 116, 24, 116, 25, 116, 26, 116, 27, 116, 28, 116, 29, 116, 30, 116, 31, 116, 32, 116, 33, 116, 34, 116, 35, 116, 36, 116, 37, 116, 38, 116, 39, 116, 40, 116, 41, 116, 42, 116, 43, 116, 44, 116, 45, 116, 46, 116, 47, 116, 48, 116, 49, 116, 50, 116, 51, 116, 52, 116, 53, 116, 54, 116, 55, 116, 56, 116, 57, 116, 58, 116, 59, 116, 60, 116, 61, 116, 62, 116, 63, 116, 64, 116, 65, 116, 66, 116, 67, 116, 68, 116, 69, 116, 70, 116, 71, 116, 72, 116, 73, 116, 74, 116, 75, 116, 76, 116, 77, 116, 78, 116, 79, 116, 170, 116, 171, 116, 172, 116, 173, 116, 174, 116, 175, 116, 176, 116, 177, 116, 178, 116, 179, 116, 180, 116, 181, 116, 182, 116, 183, 116, 184, 116, 185, 116, 186, 116, 187, 116, 188, 117, 3, 117, 4, 117, 5, 117, 6, 117, 7, 117, 8, 117, 9, 117, 10, 117, 11, 117, 12, 117, 13, 117, 14, 117, 15, 117, 16, 117, 17, 117, 18, 117, 19, 117, 20, 117, 21, 117, 22, 117, 23, 117, 24, 117, 25, 117, 26, 117, 27, 117, 28, 117, 29, 117, 30, 117, 31, 117, 32, 117, 33, 117, 34, 117, 35, 117, 36, 117, 37, 117, 38, 117, 39, 117, 40, 117, 41, 117, 42, 117, 43, 117, 44, 117, 45, 117, 46, 117, 47, 117, 48, 117, 49, 117, 50, 117, 51, 117, 52, 117, 53, 117, 54, 117, 55, 117, 56, 117, 57, 117, 58, 117, 59, 117, 60, 117, 61, 117, 62, 117, 63, 117, 64, 117, 65, 117, 66, 117, 67, 117, 68, 117, 69, 117, 70, 117, 71, 117, 72, 117, 73, 117, 74, 117, 75, 117, 76, 117, 77, 117, 78, 117, 170, 117, 171, 117, 172, 117, 173, 117, 174, 117, 175, 117, 176, 117, 177, 117, 178, 117, 179, 117, 180, 117, 181, 117, 182, 117, 183, 117, 184, 117, 185, 117, 186, 117, 187, 117, 188, 118, 3, 118, 4, 118, 5, 118, 6, 118, 7, 118, 8, 118, 9, 118, 10, 118, 11, 118, 12, 118, 13, 118, 14, 118, 15, 118, 16, 118, 17, 118, 18, 118, 19, 118, 20, 118, 21, 118, 22, 118, 23, 118, 24, 118, 25, 118, 26, 118, 27, 118, 28, 118, 29, 118, 30, 118, 31, 118, 32, 118, 33, 118, 34, 118, 35, 118, 36, 118, 37, 118, 38, 118, 39, 118, 40, 118, 41, 118, 42, 118, 43, 118, 44, 118, 45, 118, 46, 118, 47, 118, 48, 118, 49, 118, 50, 118, 51, 118, 52, 118, 53, 118, 54, 118, 55, 118, 56, 118, 57, 118, 58, 118, 59, 118, 60, 118, 61, 118, 62, 118, 63, 118, 64, 118, 65, 118, 66, 118, 67, 118, 68, 118, 69, 118, 70, 118, 71, 118, 72, 118, 73, 118, 74, 118, 75, 118, 76, 118, 77, 118, 170, 118, 171, 118, 172, 118, 173, 118, 174, 118, 175, 118, 176, 118, 177, 118, 178, 118, 179, 118, 180, 118, 181, 118, 182, 118, 183, 118, 184, 118, 185, 118, 186, 118, 187, 118, 188, 119, 3, 119, 4, 119, 5, 119, 6, 119, 7, 119, 8, 119, 9, 119, 10, 119, 11, 119, 12, 119, 13, 119, 14, 119, 15, 119, 16, 119, 17, 119, 18, 119, 19, 119, 20, 119, 21, 119, 22, 119, 23, 119, 24, 119, 25, 119, 26, 119, 27, 119, 28, 119, 29, 119, 30, 119, 31, 119, 32, 119, 33, 119, 34, 119, 35, 119, 36, 119, 37, 119, 38, 119, 39, 119, 40, 119, 41, 119, 42, 119, 43, 119, 44, 119, 45, 119, 46, 119, 47, 119, 48, 119, 49, 119, 50, 119, 51, 119, 52, 119, 53, 119, 54, 119, 55, 119, 56, 119, 57, 119, 58, 119, 59, 119, 60, 119, 61, 119, 62, 119, 63, 119, 64, 119, 65, 119, 66, 119, 67, 119, 68, 119, 69, 119, 70, 119, 71, 119, 72, 119, 73, 119, 74, 119, 75, 119, 76, 119, 77, 119, 170, 119, 171, 119, 172, 119, 173, 119, 174, 119, 175, 119, 176, 119, 177, 119, 178, 119, 179, 119, 180, 119, 181, 119, 182, 119, 183, 119, 184, 119, 185, 119, 186, 119, 187, 119, 188, 120, 3, 120, 4, 120, 5, 120, 6, 120, 7, 120, 8, 120, 9, 120, 10, 120, 11, 120, 12, 120, 13, 120, 14, 120, 15, 120, 16, 120, 17, 120, 18, 120, 19, 120, 20, 120, 21, 120, 22, 120, 23, 120, 24, 120, 25, 120, 26, 120, 27, 120, 28, 120, 29, 120, 30, 120, 31, 120, 32, 120, 33, 120, 34, 120, 35, 120, 36, 120, 37, 120, 38, 120, 39, 120, 40, 120, 41, 120, 42, 120, 43, 120, 44, 120, 45, 120, 46, 120, 47, 120, 48, 120, 49, 120, 50, 120, 51, 120, 52, 120, 53, 120, 54, 120, 55, 120, 56, 120, 57, 120, 58, 120, 59, 120, 60, 120, 61, 120, 62, 120, 63, 120, 64, 120, 65, 120, 66, 120, 67, 120, 68, 120, 69, 120, 70, 120, 71, 120, 72, 120, 73, 120, 74, 120, 75, 120, 76, 120, 170, 120, 171, 120, 172, 120, 173, 120, 174, 120, 175, 120, 176, 120, 177, 120, 178, 120, 179, 120, 180, 120, 181, 120, 182, 120, 183, 120, 184, 120, 185, 120, 186, 120, 187, 120, 188, 121, 3, 121, 4, 121, 5, 121, 6, 121, 7, 121, 8, 121, 9, 121, 10, 121, 11, 121, 12, 121, 13, 121, 14, 121, 15, 121, 16, 121, 17, 121, 18, 121, 19, 121, 20, 121, 21, 121, 22, 121, 23, 121, 24, 121, 25, 121, 26, 121, 27, 121, 28, 121, 29, 121, 30, 121, 31, 121, 32, 121, 33, 121, 34, 121, 35, 121, 36, 121, 37, 121, 38, 121, 39, 121, 40, 121, 41, 121, 42, 121, 43, 121, 44, 121, 45, 121, 46, 121, 47, 121, 48, 121, 49, 121, 50, 121, 51, 121, 52, 121, 53, 121, 54, 121, 55, 121, 56, 121, 57, 121, 58, 121, 59, 121, 60, 121, 61, 121, 62, 121, 63, 121, 64, 121, 65, 121, 66, 121, 67, 121, 68, 121, 69, 121, 70, 121, 71, 121, 72, 121, 73, 121, 74, 121, 75, 121, 170, 121, 171, 121, 172, 121, 173, 121, 174, 121, 175, 121, 176, 121, 177, 121, 178, 121, 179, 121, 180, 121, 181, 121, 182, 121, 183, 121, 184, 121, 185, 121, 186, 121, 187, 121, 188, 122, 3, 122, 4, 122, 5, 122, 6, 122, 7, 122, 8, 122, 9, 122, 10, 122, 11, 122, 12, 122, 13, 122, 14, 122, 15, 122, 16, 122, 17, 122, 18, 122, 19, 122, 20, 122, 21, 122, 22, 122, 23, 122, 24, 122, 25, 122, 26, 122, 27, 122, 28, 122, 29, 122, 30, 122, 31, 122, 32, 122, 33, 122, 34, 122, 35, 122, 36, 122, 37, 122, 38, 122, 39, 122, 40, 122, 41, 122, 42, 122, 43, 122, 44, 122, 45, 122, 46, 122, 47, 122, 48, 122, 49, 122, 50, 122, 51, 122, 52, 122, 53, 122, 54, 122, 55, 122, 56, 122, 57, 122, 58, 122, 59, 122, 60, 122, 61, 122, 62, 122, 63, 122, 64, 122, 65, 122, 66, 122, 67, 122, 68, 122, 69, 122, 70, 122, 71, 122, 72, 122, 73, 122, 74, 122, 75, 122, 171, 122, 172, 122, 173, 122, 174, 122, 175, 122, 176, 122, 177, 122, 178, 122, 179, 122, 180, 122, 181, 122, 182, 122, 183, 122, 184, 122, 185, 122, 186, 122, 187, 122, 188, 123, 3, 123, 4, 123, 5, 123, 6, 123, 7, 123, 8, 123, 9, 123, 10, 123, 11, 123, 12, 123, 13, 123, 14, 123, 15, 123, 16, 123, 17, 123, 18, 123, 19, 123, 20, 123, 21, 123, 22, 123, 23, 123, 24, 123, 25, 123, 26, 123, 27, 123, 28, 123, 29, 123, 30, 123, 31, 123, 32, 123, 33, 123, 34, 123, 35, 123, 36, 123, 37, 123, 38, 123, 39, 123, 40, 123, 41, 123, 42, 123, 43, 123, 44, 123, 45, 123, 46, 123, 47, 123, 48, 123, 49, 123, 50, 123, 51, 123, 52, 123, 53, 123, 54, 123, 55, 123, 56, 123, 57, 123, 58, 123, 59, 123, 60, 123, 61, 123, 62, 123, 63, 123, 64, 123, 65, 123, 66, 123, 67, 123, 68, 123, 69, 123, 70, 123, 71, 123, 72, 123, 73, 123, 74, 123, 171, 123, 172, 123, 173, 123, 174, 123, 175, 123, 176, 123, 177, 123, 178, 123, 179, 123, 180, 123, 181, 123, 182, 123, 183, 123, 184, 123, 185, 123, 186, 123, 187, 123, 188, 124, 3, 124, 4, 124, 5, 124, 6, 124, 7, 124, 8, 124, 9, 124, 10, 124, 11, 124, 12, 124, 13, 124, 14, 124, 15, 124, 16, 124, 17, 124, 18, 124, 19, 124, 20, 124, 21, 124, 22, 124, 23, 124, 24, 124, 25, 124, 26, 124, 27, 124, 28, 124, 29, 124, 30, 124, 31, 124, 32, 124, 33, 124, 34, 124, 35, 124, 36, 124, 37, 124, 38, 124, 39, 124, 40, 124, 41, 124, 42, 124, 43, 124, 44, 124, 45, 124, 46, 124, 47, 124, 48, 124, 49, 124, 50, 124, 51, 124, 52, 124, 53, 124, 54, 124, 55, 124, 56, 124, 57, 124, 58, 124, 59, 124, 60, 124, 61, 124, 62, 124, 63, 124, 64, 124, 65, 124, 66, 124, 67, 124, 68, 124, 69, 124, 70, 124, 71, 124, 72, 124, 73, 124, 74, 124, 171, 124, 172, 124, 173, 124, 174, 124, 175, 124, 176, 124, 177, 124, 178, 124, 179, 124, 180, 124, 181, 124, 182, 124, 183, 124, 184, 124, 185, 124, 186, 124, 187, 124, 188, 125, 3, 125, 4, 125, 5, 125, 6, 125, 7, 125, 8, 125, 9, 125, 10, 125, 11, 125, 12, 125, 13, 125, 14, 125, 15, 125, 16, 125, 17, 125, 18, 125, 19, 125, 20, 125, 21, 125, 22, 125, 23, 125, 24, 125, 25, 125, 26, 125, 27, 125, 28, 125, 29, 125, 30, 125, 31, 125, 32, 125, 33, 125, 34, 125, 35, 125, 36, 125, 37, 125, 38, 125, 39, 125, 40, 125, 41, 125, 42, 125, 43, 125, 44, 125, 45, 125, 46, 125, 47, 125, 48, 125, 49, 125, 50, 125, 51, 125, 52, 125, 53, 125, 54, 125, 55, 125, 56, 125, 57, 125, 58, 125, 59, 125, 60, 125, 61, 125, 62, 125, 63, 125, 64, 125, 65, 125, 66, 125, 67, 125, 68, 125, 69, 125, 70, 125, 71, 125, 72, 125, 73, 125, 74, 125, 171, 125, 172, 125, 173, 125, 174, 125, 175, 125, 176, 125, 177, 125, 178, 125, 179, 125, 180, 125, 181, 125, 182, 125, 183, 125, 184, 125, 185, 125, 186, 125, 187, 125, 188, 126, 3, 126, 4, 126, 5, 126, 6, 126, 7, 126, 8, 126, 9, 126, 10, 126, 11, 126, 12, 126, 13, 126, 14, 126, 15, 126, 16, 126, 17, 126, 18, 126, 19, 126, 20, 126, 21, 126, 22, 126, 23, 126, 24, 126, 25, 126, 26, 126, 27, 126, 28, 126, 29, 126, 30, 126, 31, 126, 32, 126, 33, 126, 34, 126, 35, 126, 36, 126, 37, 126, 38, 126, 39, 126, 40, 126, 41, 126, 42, 126, 43, 126, 44, 126, 45, 126, 46, 126, 47, 126, 48, 126, 49, 126, 50, 126, 51, 126, 52, 126, 53, 126, 54, 126, 55, 126, 56, 126, 57, 126, 58, 126, 59, 126, 60, 126, 61, 126, 62, 126, 63, 126, 64, 126, 65, 126, 66, 126, 67, 126, 68, 126, 69, 126, 70, 126, 71, 126, 72, 126, 73, 126, 171, 126, 172, 126, 173, 126, 174, 126, 175, 126, 176, 126, 177, 126, 178, 126, 179, 126, 180, 126, 181, 126, 182, 126, 183, 126, 184, 126, 185, 126, 186, 126, 187, 126, 188, 127, 3, 127, 4, 127, 5, 127, 6, 127, 7, 127, 8, 127, 9, 127, 10, 127, 11, 127, 12, 127, 13, 127, 14, 127, 15, 127, 16, 127, 17, 127, 18, 127, 19, 127, 20, 127, 21, 127, 22, 127, 23, 127, 24, 127, 25, 127, 26, 127, 27, 127, 28, 127, 29, 127, 30, 127, 31, 127, 32, 127, 33, 127, 34, 127, 35, 127, 36, 127, 37, 127, 38, 127, 39, 127, 40, 127, 41, 127, 42, 127, 43, 127, 44, 127, 45, 127, 46, 127, 47, 127, 48, 127, 49, 127, 50, 127, 51, 127, 52, 127, 53, 127, 54, 127, 55, 127, 56, 127, 57, 127, 58, 127, 59, 127, 60, 127, 61, 127, 62, 127, 63, 127, 64, 127, 65, 127, 66, 127, 67, 127, 68, 127, 69, 127, 70, 127, 71, 127, 72, 127, 73, 127, 171, 127, 172, 127, 173, 127, 174, 127, 175, 127, 176, 127, 177, 127, 178, 127, 179, 127, 180, 127, 181, 127, 182, 127, 183, 127, 184, 127, 185, 127, 186, 127, 187, 127, 188, 128, 3, 128, 4, 128, 5, 128, 6, 128, 7, 128, 8, 128, 9, 128, 10, 128, 11, 128, 12, 128, 13, 128, 14, 128, 15, 128, 16, 128, 17, 128, 18, 128, 19, 128, 20, 128, 21, 128, 22, 128, 23, 128, 24, 128, 25, 128, 26, 128, 27, 128, 28, 128, 29, 128, 30, 128, 31, 128, 32, 128, 33, 128, 34, 128, 35, 128, 36, 128, 37, 128, 38, 128, 39, 128, 40, 128, 41, 128, 42, 128, 43, 128, 44, 128, 45, 128, 46, 128, 47, 128, 48, 128, 49, 128, 50, 128, 51, 128, 52, 128, 53, 128, 54, 128, 55, 128, 56, 128, 57, 128, 58, 128, 59, 128, 60, 128, 61, 128, 62, 128, 63, 128, 64, 128, 65, 128, 66, 128, 67, 128, 68, 128, 69, 128, 70, 128, 71, 128, 72, 128, 73, 128, 171, 128, 172, 128, 173, 128, 174, 128, 175, 128, 176, 128, 177, 128, 178, 128, 179, 128, 180, 128, 181, 128, 182, 128, 183, 128, 184, 128, 185, 128, 186, 128, 187, 128, 188, 129, 3, 129, 4, 129, 5, 129, 6, 129, 7, 129, 8, 129, 9, 129, 10, 129, 11, 129, 12, 129, 13, 129, 14, 129, 15, 129, 16, 129, 17, 129, 18, 129, 19, 129, 20, 129, 21, 129, 22, 129, 23, 129, 24, 129, 25, 129, 26, 129, 27, 129, 28, 129, 29, 129, 30, 129, 31, 129, 32, 129, 33, 129, 34, 129, 35, 129, 36, 129, 37, 129, 38, 129, 39, 129, 40, 129, 41, 129, 42, 129, 43, 129, 44, 129, 45, 129, 46, 129, 47, 129, 48, 129, 49, 129, 50, 129, 51, 129, 52, 129, 53, 129, 54, 129, 55, 129, 56, 129, 57, 129, 58, 129, 59, 129, 60, 129, 61, 129, 62, 129, 63, 129, 64, 129, 65, 129, 66, 129, 67, 129, 68, 129, 69, 129, 70, 129, 71, 129, 72, 129, 171, 129, 172, 129, 173, 129, 174, 129, 175, 129, 176, 129, 177, 129, 178, 129, 179, 129, 180, 129, 181, 129, 182, 129, 183, 129, 184, 129, 185, 129, 186, 129, 187, 129, 188, 130, 3, 130, 4, 130, 5, 130, 6, 130, 7, 130, 8, 130, 9, 130, 10, 130, 11, 130, 12, 130, 13, 130, 14, 130, 15, 130, 16, 130, 17, 130, 18, 130, 19, 130, 20, 130, 21, 130, 22, 130, 23, 130, 24, 130, 25, 130, 26, 130, 27, 130, 28, 130, 29, 130, 30, 130, 31, 130, 32, 130, 33, 130, 34, 130, 35, 130, 36, 130, 37, 130, 38, 130, 39, 130, 40, 130, 41, 130, 42, 130, 43, 130, 44, 130, 45, 130, 46, 130, 47, 130, 48, 130, 49, 130, 50, 130, 51, 130, 52, 130, 53, 130, 54, 130, 55, 130, 56, 130, 57, 130, 58, 130, 59, 130, 60, 130, 61, 130, 62, 130, 63, 130, 64, 130, 65, 130, 66, 130, 67, 130, 68, 130, 69, 130, 70, 130, 71, 130, 72, 130, 171, 130, 172, 130, 173, 130, 174, 130, 175, 130, 176, 130, 177, 130, 178, 130, 179, 130, 180, 130, 181, 130, 182, 130, 183, 130, 184, 130, 185, 130, 186, 130, 187, 130, 188, 131, 3, 131, 4, 131, 5, 131, 6, 131, 7, 131, 8, 131, 9, 131, 10, 131, 11, 131, 12, 131, 13, 131, 14, 131, 15, 131, 16, 131, 17, 131, 18, 131, 19, 131, 20, 131, 21, 131, 22, 131, 23, 131, 24, 131, 25, 131, 26, 131, 27, 131, 28, 131, 29, 131, 30, 131, 31, 131, 32, 131, 33, 131, 34, 131, 35, 131, 36, 131, 37, 131, 38, 131, 39, 131, 40, 131, 41, 131, 42, 131, 43, 131, 44, 131, 45, 131, 46, 131, 47, 131, 48, 131, 49, 131, 50, 131, 51, 131, 52, 131, 53, 131, 54, 131, 55, 131, 56, 131, 57, 131, 58, 131, 59, 131, 60, 131, 61, 131, 62, 131, 63, 131, 64, 131, 65, 131, 66, 131, 67, 131, 68, 131, 69, 131, 70, 131, 71, 131, 171, 131, 172, 131, 173, 131, 174, 131, 175, 131, 176, 131, 177, 131, 178, 131, 179, 131, 180, 131, 181, 131, 182, 131, 183, 131, 184, 131, 185, 131, 186, 131, 187, 131, 188, 132, 3, 132, 4, 132, 5, 132, 6, 132, 7, 132, 8, 132, 9, 132, 10, 132, 11, 132, 12, 132, 13, 132, 14, 132, 15, 132, 16, 132, 17, 132, 18, 132, 19, 132, 20, 132, 21, 132, 22, 132, 23, 132, 24, 132, 25, 132, 26, 132, 27, 132, 28, 132, 29, 132, 30, 132, 31, 132, 32, 132, 33, 132, 34, 132, 35, 132, 36, 132, 37, 132, 38, 132, 39, 132, 40, 132, 41, 132, 42, 132, 43, 132, 44, 132, 45, 132, 46, 132, 47, 132, 48, 132, 49, 132, 50, 132, 51, 132, 52, 132, 53, 132, 54, 132, 55, 132, 56, 132, 57, 132, 58, 132, 59, 132, 60, 132, 61, 132, 62, 132, 63, 132, 64, 132, 65, 132, 66, 132, 67, 132, 68, 132, 69, 132, 70, 132, 171, 132, 172, 132, 173, 132, 174, 132, 175, 132, 176, 132, 177, 132, 178, 132, 179, 132, 180, 132, 181, 132, 182, 132, 183, 132, 184, 132, 185, 132, 186, 132, 187, 132, 188, 133, 3, 133, 4, 133, 5, 133, 6, 133, 7, 133, 8, 133, 9, 133, 10, 133, 11, 133, 12, 133, 13, 133, 14, 133, 15, 133, 16, 133, 17, 133, 18, 133, 19, 133, 20, 133, 21, 133, 22, 133, 23, 133, 24, 133, 25, 133, 26, 133, 27, 133, 28, 133, 29, 133, 30, 133, 31, 133, 32, 133, 33, 133, 34, 133, 35, 133, 36, 133, 37, 133, 38, 133, 39, 133, 40, 133, 41, 133, 42, 133, 43, 133, 44, 133, 45, 133, 46, 133, 47, 133, 48, 133, 49, 133, 50, 133, 51, 133, 52, 133, 53, 133, 54, 133, 55, 133, 56, 133, 57, 133, 58, 133, 59, 133, 60, 133, 61, 133, 62, 133, 63, 133, 64, 133, 65, 133, 66, 133, 67, 133, 68, 133, 69, 133, 70, 133, 171, 133, 172, 133, 173, 133, 174, 133, 175, 133, 176, 133, 177, 133, 178, 133, 179, 133, 180, 133, 181, 133, 182, 133, 183, 133, 184, 133, 185, 133, 186, 133, 187, 133, 188, 134, 3, 134, 4, 134, 5, 134, 6, 134, 7, 134, 8, 134, 9, 134, 10, 134, 11, 134, 12, 134, 13, 134, 14, 134, 15, 134, 16, 134, 17, 134, 18, 134, 19, 134, 20, 134, 21, 134, 22, 134, 23, 134, 24, 134, 25, 134, 26, 134, 27, 134, 28, 134, 29, 134, 30, 134, 31, 134, 32, 134, 33, 134, 34, 134, 35, 134, 36, 134, 37, 134, 38, 134, 39, 134, 40, 134, 41, 134, 42, 134, 43, 134, 44, 134, 45, 134, 46, 134, 47, 134, 48, 134, 49, 134, 50, 134, 51, 134, 52, 134, 53, 134, 54, 134, 55, 134, 56, 134, 57, 134, 58, 134, 59, 134, 60, 134, 61, 134, 62, 134, 63, 134, 64, 134, 65, 134, 66, 134, 67, 134, 68, 134, 69, 134, 171, 134, 172, 134, 173, 134, 174, 134, 175, 134, 176, 134, 177, 134, 178, 134, 179, 134, 180, 134, 181, 134, 182, 134, 183, 134, 184, 134, 185, 134, 186, 134, 187, 134, 188, 135, 3, 135, 4, 135, 5, 135, 6, 135, 7, 135, 8, 135, 9, 135, 10, 135, 11, 135, 12, 135, 13, 135, 14, 135, 15, 135, 16, 135, 17, 135, 18, 135, 19, 135, 20, 135, 21, 135, 22, 135, 23, 135, 24, 135, 25, 135, 26, 135, 27, 135, 28, 135, 29, 135, 30, 135, 31, 135, 32, 135, 33, 135, 34, 135, 35, 135, 36, 135, 37, 135, 38, 135, 39, 135, 40, 135, 41, 135, 42, 135, 43, 135, 44, 135, 45, 135, 46, 135, 47, 135, 48, 135, 49, 135, 50, 135, 51, 135, 52, 135, 53, 135, 54, 135, 55, 135, 56, 135, 57, 135, 58, 135, 59, 135, 60, 135, 61, 135, 62, 135, 63, 135, 64, 135, 65, 135, 66, 135, 67, 135, 68, 135, 171, 135, 172, 135, 173, 135, 174, 135, 175, 135, 176, 135, 177, 135, 178, 135, 179, 135, 180, 135, 181, 135, 182, 135, 183, 135, 184, 135, 185, 135, 186, 135, 187, 135, 188, 136, 3, 136, 4, 136, 5, 136, 6, 136, 7, 136, 8, 136, 9, 136, 10, 136, 11, 136, 12, 136, 13, 136, 14, 136, 15, 136, 16, 136, 17, 136, 18, 136, 19, 136, 20, 136, 21, 136, 22, 136, 23, 136, 24, 136, 25, 136, 26, 136, 27, 136, 28, 136, 29, 136, 30, 136, 31, 136, 32, 136, 33, 136, 34, 136, 35, 136, 36, 136, 37, 136, 38, 136, 39, 136, 40, 136, 41, 136, 42, 136, 43, 136, 44, 136, 45, 136, 46, 136, 47, 136, 48, 136, 49, 136, 50, 136, 51, 136, 52, 136, 53, 136, 54, 136, 55, 136, 56, 136, 57, 136, 58, 136, 59, 136, 60, 136, 61, 136, 62, 136, 63, 136, 64, 136, 65, 136, 66, 136, 67, 136, 171, 136, 172, 136, 173, 136, 174, 136, 175, 136, 176, 136, 177, 136, 178, 136, 179, 136, 180, 136, 181, 136, 182, 136, 183, 136, 184, 136, 185, 136, 186, 136, 187, 136, 188, 137, 3, 137, 4, 137, 5, 137, 6, 137, 7, 137, 8, 137, 9, 137, 10, 137, 11, 137, 12, 137, 13, 137, 14, 137, 15, 137, 16, 137, 17, 137, 18, 137, 19, 137, 20, 137, 21, 137, 22, 137, 23, 137, 24, 137, 25, 137, 26, 137, 27, 137, 28, 137, 29, 137, 30, 137, 31, 137, 32, 137, 33, 137, 34, 137, 35, 137, 36, 137, 37, 137, 38, 137, 39, 137, 40, 137, 41, 137, 42, 137, 43, 137, 44, 137, 45, 137, 46, 137, 47, 137, 48, 137, 49, 137, 50, 137, 51, 137, 52, 137, 53, 137, 54, 137, 55, 137, 56, 137, 57, 137, 58, 137, 59, 137, 60, 137, 61, 137, 62, 137, 63, 137, 64, 137, 65, 137, 66, 137, 171, 137, 172, 137, 173, 137, 174, 137, 175, 137, 176, 137, 177, 137, 178, 137, 179, 137, 180, 137, 181, 137, 182, 137, 183, 137, 184, 137, 185, 137, 186, 137, 187, 137, 188, 138, 3, 138, 4, 138, 5, 138, 6, 138, 7, 138, 8, 138, 9, 138, 10, 138, 11, 138, 12, 138, 13, 138, 14, 138, 15, 138, 16, 138, 17, 138, 18, 138, 19, 138, 20, 138, 21, 138, 22, 138, 23, 138, 24, 138, 25, 138, 26, 138, 27, 138, 28, 138, 29, 138, 30, 138, 31, 138, 32, 138, 33, 138, 34, 138, 35, 138, 36, 138, 37, 138, 38, 138, 39, 138, 40, 138, 41, 138, 42, 138, 43, 138, 44, 138, 45, 138, 46, 138, 47, 138, 48, 138, 49, 138, 50, 138, 51, 138, 52, 138, 53, 138, 54, 138, 55, 138, 56, 138, 57, 138, 58, 138, 59, 138, 60, 138, 61, 138, 62, 138, 63, 138, 64, 138, 65, 138, 66, 138, 171, 138, 172, 138, 173, 138, 174, 138, 175, 138, 176, 138, 177, 138, 178, 138, 179, 138, 180, 138, 181, 138, 182, 138, 183, 138, 184, 138, 185, 138, 186, 138, 187, 138, 188, 139, 3, 139, 4, 139, 5, 139, 6, 139, 7, 139, 8, 139, 9, 139, 10, 139, 11, 139, 12, 139, 13, 139, 14, 139, 15, 139, 16, 139, 17, 139, 18, 139, 19, 139, 20, 139, 21, 139, 22, 139, 23, 139, 24, 139, 25, 139, 26, 139, 27, 139, 28, 139, 29, 139, 30, 139, 31, 139, 32, 139, 33, 139, 34, 139, 35, 139, 36, 139, 37, 139, 38, 139, 39, 139, 40, 139, 41, 139, 42, 139, 43, 139, 44, 139, 45, 139, 46, 139, 47, 139, 48, 139, 49, 139, 50, 139, 51, 139, 52, 139, 53, 139, 54, 139, 55, 139, 56, 139, 57, 139, 58, 139, 59, 139, 60, 139, 61, 139, 62, 139, 63, 139, 64, 139, 65, 139, 171, 139, 172, 139, 173, 139, 174, 139, 175, 139, 176, 139, 177, 139, 178, 139, 179, 139, 180, 139, 181, 139, 182, 139, 183, 139, 184, 139, 185, 139, 186, 139, 187, 139, 188, 140, 3, 140, 4, 140, 5, 140, 6, 140, 7, 140, 8, 140, 9, 140, 10, 140, 11, 140, 12, 140, 13, 140, 14, 140, 15, 140, 16, 140, 17, 140, 18, 140, 19, 140, 20, 140, 21, 140, 22, 140, 23, 140, 24, 140, 25, 140, 26, 140, 27, 140, 28, 140, 29, 140, 30, 140, 31, 140, 32, 140, 33, 140, 34, 140, 35, 140, 36, 140, 37, 140, 38, 140, 39, 140, 40, 140, 41, 140, 42, 140, 43, 140, 44, 140, 45, 140, 46, 140, 47, 140, 48, 140, 49, 140, 50, 140, 51, 140, 52, 140, 53, 140, 54, 140, 55, 140, 56, 140, 57, 140, 58, 140, 59, 140, 60, 140, 61, 140, 62, 140, 63, 140, 64, 140, 171, 140, 172, 140, 173, 140, 174, 140, 175, 140, 176, 140, 177, 140, 178, 140, 179, 140, 180, 140, 181, 140, 182, 140, 183, 140, 184, 140, 185, 140, 186, 140, 187, 140, 188, 141, 3, 141, 4, 141, 5, 141, 6, 141, 7, 141, 8, 141, 9, 141, 10, 141, 11, 141, 12, 141, 13, 141, 14, 141, 15, 141, 16, 141, 17, 141, 18, 141, 19, 141, 20, 141, 21, 141, 22, 141, 23, 141, 24, 141, 25, 141, 26, 141, 27, 141, 28, 141, 29, 141, 30, 141, 31, 141, 32, 141, 33, 141, 34, 141, 35, 141, 36, 141, 37, 141, 38, 141, 39, 141, 40, 141, 41, 141, 42, 141, 43, 141, 44, 141, 45, 141, 46, 141, 47, 141, 48, 141, 49, 141, 50, 141, 51, 141, 52, 141, 53, 141, 54, 141, 55, 141, 56, 141, 57, 141, 58, 141, 59, 141, 60, 141, 61, 141, 62, 141, 63, 141, 171, 141, 172, 141, 173, 141, 174, 141, 175, 141, 176, 141, 177, 141, 178, 141, 179, 141, 180, 141, 181, 141, 182, 141, 183, 141, 184, 141, 185, 141, 186, 141, 187, 141, 188, 142, 3, 142, 4, 142, 5, 142, 6, 142, 7, 142, 8, 142, 9, 142, 10, 142, 11, 142, 12, 142, 13, 142, 14, 142, 15, 142, 16, 142, 17, 142, 18, 142, 19, 142, 20, 142, 21, 142, 22, 142, 23, 142, 24, 142, 25, 142, 26, 142, 27, 142, 28, 142, 29, 142, 30, 142, 31, 142, 32, 142, 33, 142, 34, 142, 35, 142, 36, 142, 37, 142, 38, 142, 39, 142, 40, 142, 41, 142, 42, 142, 43, 142, 44, 142, 45, 142, 46, 142, 47, 142, 48, 142, 49, 142, 50, 142, 51, 142, 52, 142, 53, 142, 54, 142, 55, 142, 56, 142, 57, 142, 58, 142, 59, 142, 60, 142, 61, 142, 62, 142, 171, 142, 172, 142, 173, 142, 174, 142, 175, 142, 176, 142, 177, 142, 178, 142, 179, 142, 180, 142, 181, 142, 182, 142, 183, 142, 184, 142, 185, 142, 186, 142, 187, 142, 188, 143, 3, 143, 4, 143, 5, 143, 6, 143, 7, 143, 8, 143, 9, 143, 10, 143, 11, 143, 12, 143, 13, 143, 14, 143, 15, 143, 16, 143, 17, 143, 18, 143, 19, 143, 20, 143, 21, 143, 22, 143, 23, 143, 24, 143, 25, 143, 26, 143, 27, 143, 28, 143, 29, 143, 30, 143, 31, 143, 32, 143, 33, 143, 34, 143, 35, 143, 36, 143, 37, 143, 38, 143, 39, 143, 40, 143, 41, 143, 42, 143, 43, 143, 44, 143, 45, 143, 46, 143, 47, 143, 48, 143, 49, 143, 50, 143, 51, 143, 52, 143, 53, 143, 54, 143, 55, 143, 56, 143, 57, 143, 58, 143, 59, 143, 60, 143, 61, 143, 171, 143, 172, 143, 173, 143, 174, 143, 175, 143, 176, 143, 177, 143, 178, 143, 179, 143, 180, 143, 181, 143, 182, 143, 183, 143, 184, 143, 185, 143, 186, 143, 187, 143, 188, 144, 3, 144, 4, 144, 5, 144, 6, 144, 7, 144, 8, 144, 9, 144, 10, 144, 11, 144, 12, 144, 13, 144, 14, 144, 15, 144, 16, 144, 17, 144, 18, 144, 19, 144, 20, 144, 21, 144, 22, 144, 23, 144, 24, 144, 25, 144, 26, 144, 27, 144, 28, 144, 29, 144, 30, 144, 31, 144, 32, 144, 33, 144, 34, 144, 35, 144, 36, 144, 37, 144, 38, 144, 39, 144, 40, 144, 41, 144, 42, 144, 43, 144, 44, 144, 45, 144, 46, 144, 47, 144, 48, 144, 49, 144, 50, 144, 51, 144, 52, 144, 53, 144, 54, 144, 55, 144, 56, 144, 57, 144, 58, 144, 59, 144, 60, 144, 171, 144, 172, 144, 173, 144, 174, 144, 175, 144, 176, 144, 177, 144, 178, 144, 179, 144, 180, 144, 181, 144, 182, 144, 183, 144, 184, 144, 185, 144, 186, 144, 187, 144, 188, 145, 3, 145, 4, 145, 5, 145, 6, 145, 7, 145, 8, 145, 9, 145, 10, 145, 11, 145, 12, 145, 13, 145, 14, 145, 15, 145, 16, 145, 17, 145, 18, 145, 19, 145, 20, 145, 21, 145, 22, 145, 23, 145, 24, 145, 25, 145, 26, 145, 27, 145, 28, 145, 29, 145, 30, 145, 31, 145, 32, 145, 33, 145, 34, 145, 35, 145, 36, 145, 37, 145, 38, 145, 39, 145, 40, 145, 41, 145, 42, 145, 43, 145, 44, 145, 45, 145, 46, 145, 47, 145, 48, 145, 49, 145, 50, 145, 51, 145, 52, 145, 53, 145, 54, 145, 55, 145, 56, 145, 57, 145, 58, 145, 59, 145, 171, 145, 172, 145, 173, 145, 174, 145, 175, 145, 176, 145, 177, 145, 178, 145, 179, 145, 180, 145, 181, 145, 182, 145, 183, 145, 184, 145, 185, 145, 186, 145, 187, 145, 188, 146, 3, 146, 4, 146, 5, 146, 6, 146, 7, 146, 8, 146, 9, 146, 10, 146, 11, 146, 12, 146, 13, 146, 14, 146, 15, 146, 16, 146, 17, 146, 18, 146, 19, 146, 20, 146, 21, 146, 22, 146, 23, 146, 24, 146, 25, 146, 26, 146, 27, 146, 28, 146, 29, 146, 30, 146, 31, 146, 32, 146, 33, 146, 34, 146, 35, 146, 36, 146, 37, 146, 38, 146, 39, 146, 40, 146, 41, 146, 42, 146, 43, 146, 44, 146, 45, 146, 46, 146, 47, 146, 48, 146, 49, 146, 50, 146, 51, 146, 52, 146, 53, 146, 54, 146, 55, 146, 56, 146, 57, 146, 58, 146, 171, 146, 172, 146, 173, 146, 174, 146, 175, 146, 176, 146, 177, 146, 178, 146, 179, 146, 180, 146, 181, 146, 182, 146, 183, 146, 184, 146, 185, 146, 186, 146, 187, 146, 188, 147, 3, 147, 4, 147, 5, 147, 6, 147, 7, 147, 8, 147, 9, 147, 10, 147, 11, 147, 12, 147, 13, 147, 14, 147, 15, 147, 16, 147, 17, 147, 18, 147, 19, 147, 20, 147, 21, 147, 22, 147, 23, 147, 24, 147, 25, 147, 26, 147, 27, 147, 28, 147, 29, 147, 30, 147, 31, 147, 32, 147, 33, 147, 34, 147, 35, 147, 36, 147, 37, 147, 38, 147, 39, 147, 40, 147, 41, 147, 42, 147, 43, 147, 44, 147, 45, 147, 46, 147, 47, 147, 48, 147, 49, 147, 50, 147, 51, 147, 52, 147, 53, 147, 54, 147, 55, 147, 56, 147, 171, 147, 172, 147, 173, 147, 174, 147, 175, 147, 176, 147, 177, 147, 178, 147, 179, 147, 180, 147, 181, 147, 182, 147, 183, 147, 184, 147, 185, 147, 186, 147, 187, 147, 188, 148, 3, 148, 4, 148, 5, 148, 6, 148, 7, 148, 8, 148, 9, 148, 10, 148, 11, 148, 12, 148, 13, 148, 14, 148, 15, 148, 16, 148, 17, 148, 18, 148, 19, 148, 20, 148, 21, 148, 22, 148, 23, 148, 24, 148, 25, 148, 26, 148, 27, 148, 28, 148, 29, 148, 30, 148, 31, 148, 32, 148, 33, 148, 34, 148, 35, 148, 36, 148, 37, 148, 38, 148, 39, 148, 40, 148, 41, 148, 42, 148, 43, 148, 44, 148, 45, 148, 46, 148, 47, 148, 48, 148, 49, 148, 50, 148, 51, 148, 52, 148, 53, 148, 171, 148, 172, 148, 173, 148, 174, 148, 175, 148, 176, 148, 177, 148, 178, 148, 179, 148, 180, 148, 181, 148, 182, 148, 183, 148, 184, 148, 185, 148, 186, 148, 187, 148, 188, 149, 3, 149, 4, 149, 5, 149, 6, 149, 7, 149, 8, 149, 9, 149, 10, 149, 11, 149, 12, 149, 13, 149, 14, 149, 15, 149, 16, 149, 17, 149, 18, 149, 19, 149, 20, 149, 21, 149, 22, 149, 23, 149, 24, 149, 25, 149, 26, 149, 27, 149, 28, 149, 29, 149, 30, 149, 31, 149, 32, 149, 33, 149, 34, 149, 35, 149, 36, 149, 37, 149, 38, 149, 39, 149, 40, 149, 41, 149, 42, 149, 43, 149, 44, 149, 45, 149, 46, 149, 47, 149, 48, 149, 49, 149, 50, 149, 171, 149, 172, 149, 173, 149, 174, 149, 175, 149, 176, 149, 177, 149, 178, 149, 179, 149, 180, 149, 181, 149, 182, 149, 183, 149, 184, 149, 185, 149, 186, 149, 187, 149, 188, 150, 3, 150, 4, 150, 5, 150, 6, 150, 7, 150, 8, 150, 9, 150, 10, 150, 11, 150, 12, 150, 13, 150, 14, 150, 15, 150, 16, 150, 17, 150, 18, 150, 19, 150, 20, 150, 21, 150, 22, 150, 23, 150, 24, 150, 25, 150, 26, 150, 27, 150, 28, 150, 29, 150, 30, 150, 31, 150, 32, 150, 33, 150, 34, 150, 35, 150, 36, 150, 37, 150, 38, 150, 39, 150, 40, 150, 41, 150, 42, 150, 43, 150, 44, 150, 45, 150, 46, 150, 47, 150, 171, 150, 172, 150, 173, 150, 174, 150, 175, 150, 176, 150, 177, 150, 178, 150, 179, 150, 180, 150, 181, 150, 182, 150, 183, 150, 184, 150, 185, 150, 186, 150, 187, 150, 188, 151, 3, 151, 4, 151, 5, 151, 6, 151, 7, 151, 8, 151, 9, 151, 10, 151, 11, 151, 12, 151, 13, 151, 14, 151, 15, 151, 16, 151, 17, 151, 18, 151, 19, 151, 20, 151, 21, 151, 22, 151, 23, 151, 24, 151, 25, 151, 26, 151, 27, 151, 28, 151, 29, 151, 30, 151, 31, 151, 32, 151, 33, 151, 34, 151, 35, 151, 36, 151, 37, 151, 38, 151, 39, 151, 40, 151, 41, 151, 42, 151, 43, 151, 44, 151, 45, 151, 46, 151, 171, 151, 172, 151, 173, 151, 174, 151, 175, 151, 176, 151, 177, 151, 178, 151, 179, 151, 180, 151, 181, 151, 182, 151, 183, 151, 184, 151, 185, 151, 186, 151, 187, 151, 188, 152, 3, 152, 4, 152, 5, 152, 6, 152, 7, 152, 8, 152, 9, 152, 10, 152, 11, 152, 12, 152, 13, 152, 14, 152, 15, 152, 16, 152, 17, 152, 18, 152, 19, 152, 20, 152, 21, 152, 22, 152, 23, 152, 24, 152, 25, 152, 26, 152, 27, 152, 28, 152, 29, 152, 30, 152, 31, 152, 32, 152, 33, 152, 34, 152, 35, 152, 36, 152, 37, 152, 38, 152, 39, 152, 40, 152, 41, 152, 42, 152, 43, 152, 44, 152, 45, 152, 46, 152, 171, 152, 172, 152, 173, 152, 174, 152, 175, 152, 176, 152, 177, 152, 178, 152, 179, 152, 180, 152, 181, 152, 182, 152, 183, 152, 184, 152, 185, 152, 186, 152, 187, 152, 188, 153, 3, 153, 4, 153, 5, 153, 6, 153, 7, 153, 8, 153, 9, 153, 10, 153, 11, 153, 12, 153, 13, 153, 14, 153, 15, 153, 16, 153, 17, 153, 18, 153, 19, 153, 20, 153, 21, 153, 22, 153, 23, 153, 24, 153, 25, 153, 26, 153, 27, 153, 28, 153, 29, 153, 30, 153, 31, 153, 32, 153, 33, 153, 34, 153, 35, 153, 36, 153, 37, 153, 38, 153, 39, 153, 40, 153, 41, 153, 42, 153, 43, 153, 44, 153, 45, 153, 171, 153, 172, 153, 173, 153, 174, 153, 175, 153, 176, 153, 177, 153, 178, 153, 179, 153, 180, 153, 181, 153, 182, 153, 183, 153, 184, 153, 185, 153, 186, 153, 187, 153, 188, 154, 3, 154, 4, 154, 5, 154, 6, 154, 7, 154, 8, 154, 9, 154, 10, 154, 11, 154, 12, 154, 13, 154, 14, 154, 15, 154, 16, 154, 17, 154, 18, 154, 19, 154, 20, 154, 21, 154, 22, 154, 23, 154, 24, 154, 25, 154, 26, 154, 27, 154, 28, 154, 29, 154, 30, 154, 31, 154, 32, 154, 33, 154, 34, 154, 35, 154, 36, 154, 37, 154, 38, 154, 39, 154, 40, 154, 41, 154, 42, 154, 43, 154, 44, 154, 45, 154, 171, 154, 172, 154, 173, 154, 174, 154, 175, 154, 176, 154, 177, 154, 178, 154, 179, 154, 180, 154, 181, 154, 182, 154, 183, 154, 184, 154, 185, 154, 186, 154, 187, 154, 188, 155, 3, 155, 4, 155, 5, 155, 6, 155, 7, 155, 8, 155, 9, 155, 10, 155, 11, 155, 12, 155, 13, 155, 14, 155, 15, 155, 16, 155, 17, 155, 18, 155, 19, 155, 20, 155, 21, 155, 22, 155, 23, 155, 24, 155, 25, 155, 26, 155, 27, 155, 28, 155, 29, 155, 30, 155, 31, 155, 32, 155, 33, 155, 34, 155, 35, 155, 36, 155, 37, 155, 38, 155, 39, 155, 40, 155, 41, 155, 42, 155, 43, 155, 44, 155, 45, 155, 171, 155, 172, 155, 173, 155, 174, 155, 175, 155, 176, 155, 177, 155, 178, 155, 179, 155, 180, 155, 181, 155, 182, 155, 183, 155, 184, 155, 185, 155, 186, 155, 187, 155, 188, 156, 3, 156, 4, 156, 5, 156, 6, 156, 7, 156, 8, 156, 9, 156, 10, 156, 11, 156, 12, 156, 13, 156, 14, 156, 15, 156, 16, 156, 17, 156, 18, 156, 19, 156, 20, 156, 21, 156, 22, 156, 23, 156, 24, 156, 25, 156, 26, 156, 27, 156, 28, 156, 29, 156, 30, 156, 31, 156, 32, 156, 33, 156, 34, 156, 35, 156, 36, 156, 37, 156, 38, 156, 39, 156, 40, 156, 41, 156, 42, 156, 43, 156, 44, 156, 45, 156, 171, 156, 172, 156, 173, 156, 174, 156, 175, 156, 176, 156, 177, 156, 178, 156, 179, 156, 180, 156, 181, 156, 182, 156, 183, 156, 184, 156, 185, 156, 186, 156, 187, 156, 188, 157, 3, 157, 4, 157, 5, 157, 6, 157, 7, 157, 8, 157, 9, 157, 10, 157, 11, 157, 12, 157, 13, 157, 14, 157, 15, 157, 16, 157, 17, 157, 18, 157, 19, 157, 20, 157, 21, 157, 22, 157, 23, 157, 24, 157, 25, 157, 26, 157, 27, 157, 28, 157, 29, 157, 30, 157, 31, 157, 32, 157, 33, 157, 34, 157, 35, 157, 36, 157, 37, 157, 38, 157, 39, 157, 40, 157, 41, 157, 42, 157, 43, 157, 44, 157, 171, 157, 172, 157, 173, 157, 174, 157, 175, 157, 176, 157, 177, 157, 178, 157, 179, 157, 180, 157, 181, 157, 182, 157, 183, 157, 184, 157, 185, 157, 186, 157, 187, 157, 188, 158, 3, 158, 4, 158, 5, 158, 6, 158, 7, 158, 8, 158, 9, 158, 10, 158, 11, 158, 12, 158, 13, 158, 14, 158, 15, 158, 16, 158, 17, 158, 18, 158, 19, 158, 20, 158, 21, 158, 22, 158, 23, 158, 24, 158, 25, 158, 26, 158, 27, 158, 28, 158, 29, 158, 30, 158, 31, 158, 32, 158, 33, 158, 34, 158, 35, 158, 36, 158, 37, 158, 38, 158, 39, 158, 40, 158, 41, 158, 42, 158, 43, 158, 44, 158, 171, 158, 172, 158, 173, 158, 174, 158, 175, 158, 176, 158, 177, 158, 178, 158, 179, 158, 180, 158, 181, 158, 182, 158, 183, 158, 184, 158, 185, 158, 186, 158, 187, 158, 188, 159, 3, 159, 4, 159, 5, 159, 6, 159, 7, 159, 8, 159, 9, 159, 10, 159, 11, 159, 12, 159, 13, 159, 14, 159, 15, 159, 16, 159, 17, 159, 18, 159, 19, 159, 20, 159, 21, 159, 22, 159, 23, 159, 24, 159, 25, 159, 26, 159, 27, 159, 28, 159, 29, 159, 30, 159, 31, 159, 32, 159, 33, 159, 34, 159, 35, 159, 36, 159, 37, 159, 38, 159, 39, 159, 40, 159, 41, 159, 42, 159, 43, 159, 44, 159, 171, 159, 172, 159, 173, 159, 174, 159, 175, 159, 176, 159, 177, 159, 178, 159, 179, 159, 180, 159, 181, 159, 182, 159, 183, 159, 184, 159, 185, 159, 186, 159, 187, 159, 188, 160, 3, 160, 4, 160, 5, 160, 6, 160, 7, 160, 8, 160, 9, 160, 10, 160, 11, 160, 12, 160, 13, 160, 14, 160, 15, 160, 16, 160, 17, 160, 18, 160, 19, 160, 20, 160, 21, 160, 22, 160, 23, 160, 24, 160, 25, 160, 26, 160, 27, 160, 28, 160, 29, 160, 30, 160, 31, 160, 32, 160, 33, 160, 34, 160, 35, 160, 36, 160, 37, 160, 38, 160, 39, 160, 40, 160, 41, 160, 42, 160, 43, 160, 44, 160, 45, 160, 171, 160, 172, 160, 173, 160, 174, 160, 175, 160, 176, 160, 177, 160, 178, 160, 179, 160, 180, 160, 181, 160, 182, 160, 183, 160, 184, 160, 185, 160, 186, 160, 187, 160, 188, 161, 3, 161, 4, 161, 5, 161, 6, 161, 7, 161, 8, 161, 9, 161, 10, 161, 11, 161, 12, 161, 13, 161, 14, 161, 15, 161, 16, 161, 17, 161, 18, 161, 19, 161, 20, 161, 21, 161, 22, 161, 23, 161, 24, 161, 25, 161, 26, 161, 27, 161, 28, 161, 29, 161, 30, 161, 31, 161, 32, 161, 33, 161, 34, 161, 35, 161, 36, 161, 37, 161, 38, 161, 39, 161, 40, 161, 41, 161, 42, 161, 43, 161, 44, 161, 45, 161, 171, 161, 172, 161, 173, 161, 174, 161, 175, 161, 176, 161, 177, 161, 178, 161, 179, 161, 180, 161, 181, 161, 182, 161, 183, 161, 184, 161, 185, 161, 186, 161, 187, 161, 188, 162, 3, 162, 4, 162, 5, 162, 6, 162, 7, 162, 8, 162, 9, 162, 10, 162, 11, 162, 12, 162, 13, 162, 14, 162, 15, 162, 16, 162, 17, 162, 18, 162, 19, 162, 20, 162, 21, 162, 22, 162, 23, 162, 24, 162, 25, 162, 26, 162, 27, 162, 28, 162, 29, 162, 30, 162, 31, 162, 32, 162, 33, 162, 34, 162, 35, 162, 36, 162, 37, 162, 38, 162, 39, 162, 40, 162, 41, 162, 42, 162, 43, 162, 44, 162, 45, 162, 171, 162, 172, 162, 173, 162, 174, 162, 175, 162, 176, 162, 177, 162, 178, 162, 179, 162, 180, 162, 181, 162, 182, 162, 183, 162, 184, 162, 185, 162, 186, 162, 187, 162, 188, 163, 3, 163, 4, 163, 5, 163, 6, 163, 7, 163, 8, 163, 9, 163, 10, 163, 11, 163, 12, 163, 13, 163, 14, 163, 15, 163, 16, 163, 17, 163, 18, 163, 19, 163, 20, 163, 21, 163, 22, 163, 23, 163, 24, 163, 25, 163, 26, 163, 27, 163, 28, 163, 29, 163, 30, 163, 31, 163, 32, 163, 33, 163, 34, 163, 35, 163, 36, 163, 37, 163, 38, 163, 39, 163, 40, 163, 41, 163, 42, 163, 43, 163, 44, 163, 45, 163, 171, 163, 172, 163, 173, 163, 174, 163, 175, 163, 176, 163, 177, 163, 178, 163, 179, 163, 180, 163, 181, 163, 182, 163, 183, 163, 184, 163, 185, 163, 186, 163, 187, 163, 188, 164, 3, 164, 4, 164, 5, 164, 6, 164, 7, 164, 8, 164, 9, 164, 10, 164, 11, 164, 12, 164, 13, 164, 14, 164, 15, 164, 16, 164, 17, 164, 18, 164, 19, 164, 20, 164, 21, 164, 22, 164, 23, 164, 24, 164, 25, 164, 26, 164, 27, 164, 28, 164, 29, 164, 30, 164, 31, 164, 32, 164, 33, 164, 34, 164, 35, 164, 36, 164, 37, 164, 38, 164, 39, 164, 40, 164, 41, 164, 42, 164, 43, 164, 44, 164, 45, 164, 171, 164, 172, 164, 173, 164, 174, 164, 175, 164, 176, 164, 177, 164, 178, 164, 179, 164, 180, 164, 181, 164, 182, 164, 183, 164, 184, 164, 185, 164, 186, 164, 187, 164, 188, 165, 3, 165, 4, 165, 5, 165, 6, 165, 7, 165, 8, 165, 9, 165, 10, 165, 11, 165, 12, 165, 13, 165, 14, 165, 15, 165, 16, 165, 17, 165, 18, 165, 19, 165, 20, 165, 21, 165, 22, 165, 23, 165, 24, 165, 25, 165, 26, 165, 27, 165, 28, 165, 29, 165, 30, 165, 31, 165, 32, 165, 33, 165, 34, 165, 35, 165, 36, 165, 37, 165, 38, 165, 39, 165, 40, 165, 41, 165, 42, 165, 43, 165, 44, 165, 45, 165, 171, 165, 172, 165, 173, 165, 174, 165, 175, 165, 176, 165, 177, 165, 178, 165, 179, 165, 180, 165, 181, 165, 182, 165, 183, 165, 184, 165, 185, 165, 186, 165, 187, 165, 188, 166, 3, 166, 4, 166, 5, 166, 6, 166, 7, 166, 8, 166, 9, 166, 10, 166, 11, 166, 12, 166, 13, 166, 14, 166, 15, 166, 16, 166, 17, 166, 18, 166, 19, 166, 20, 166, 21, 166, 22, 166, 23, 166, 24, 166, 25, 166, 26, 166, 27, 166, 28, 166, 29, 166, 30, 166, 31, 166, 32, 166, 33, 166, 34, 166, 35, 166, 36, 166, 37, 166, 38, 166, 39, 166, 40, 166, 41, 166, 42, 166, 43, 166, 44, 166, 45, 166, 171, 166, 172, 166, 173, 166, 174, 166, 175, 166, 176, 166, 177, 166, 178, 166, 179, 166, 180, 166, 181, 166, 182, 166, 183, 166, 184, 166, 185, 166, 186, 166, 187, 166, 188, 167, 3, 167, 4, 167, 5, 167, 6, 167, 7, 167, 8, 167, 9, 167, 10, 167, 11, 167, 12, 167, 13, 167, 14, 167, 15, 167, 16, 167, 17, 167, 18, 167, 19, 167, 20, 167, 21, 167, 22, 167, 23, 167, 24, 167, 25, 167, 26, 167, 27, 167, 28, 167, 29, 167, 30, 167, 31, 167, 32, 167, 33, 167, 34, 167, 35, 167, 36, 167, 37, 167, 38, 167, 39, 167, 40, 167, 41, 167, 42, 167, 43, 167, 44, 167, 45, 167, 46, 167, 171, 167, 172, 167, 173, 167, 174, 167, 175, 167, 176, 167, 177, 167, 178, 167, 179, 167, 180, 167, 181, 167, 182, 167, 183, 167, 184, 167, 185, 167, 186, 167, 187, 167, 188, 168, 3, 168, 4, 168, 5, 168, 6, 168, 7, 168, 8, 168, 9, 168, 10, 168, 11, 168, 12, 168, 13, 168, 14, 168, 15, 168, 16, 168, 17, 168, 18, 168, 19, 168, 20, 168, 21, 168, 22, 168, 23, 168, 24, 168, 25, 168, 26, 168, 27, 168, 28, 168, 29, 168, 30, 168, 31, 168, 32, 168, 33, 168, 34, 168, 35, 168, 36, 168, 37, 168, 38, 168, 39, 168, 40, 168, 41, 168, 42, 168, 43, 168, 44, 168, 45, 168, 46, 168, 47, 168, 171, 168, 172, 168, 173, 168, 174, 168, 175, 168, 176, 168, 177, 168, 178, 168, 179, 168, 180, 168, 181, 168, 182, 168, 183, 168, 184, 168, 185, 168, 186, 168, 187, 168, 188, 169, 3, 169, 4, 169, 5, 169, 6, 169, 7, 169, 8, 169, 9, 169, 10, 169, 11, 169, 12, 169, 13, 169, 14, 169, 15, 169, 16, 169, 17, 169, 18, 169, 19, 169, 20, 169, 21, 169, 22, 169, 23, 169, 24, 169, 25, 169, 26, 169, 27, 169, 28, 169, 29, 169, 30, 169, 31, 169, 32, 169, 33, 169, 34, 169, 35, 169, 36, 169, 37, 169, 38, 169, 39, 169, 40, 169, 41, 169, 42, 169, 43, 169, 44, 169, 45, 169, 46, 169, 47, 169, 48, 169, 171, 169, 172, 169, 173, 169, 174, 169, 175, 169, 176, 169, 177, 169, 178, 169, 179, 169, 180, 169, 181, 169, 182, 169, 183, 169, 184, 169, 185, 169, 186, 169, 187, 169, 188, 170, 3, 170, 4, 170, 5, 170, 6, 170, 7, 170, 8, 170, 9, 170, 10, 170, 11, 170, 12, 170, 13, 170, 14, 170, 15, 170, 16, 170, 17, 170, 18, 170, 19, 170, 20, 170, 21, 170, 22, 170, 23, 170, 24, 170, 25, 170, 26, 170, 27, 170, 28, 170, 29, 170, 30, 170, 31, 170, 32, 170, 33, 170, 34, 170, 35, 170, 36, 170, 37, 170, 38, 170, 39, 170, 40, 170, 41, 170, 42, 170, 43, 170, 44, 170, 45, 170, 46, 170, 47, 170, 48, 170, 171, 170, 172, 170, 173, 170, 174, 170, 175, 170, 176, 170, 177, 170, 178, 170, 179, 170, 180, 170, 181, 170, 182, 170, 183, 170, 184, 170, 185, 170, 186, 170, 187, 170, 188, 171, 3, 171, 4, 171, 5, 171, 6, 171, 7, 171, 8, 171, 9, 171, 10, 171, 11, 171, 12, 171, 13, 171, 14, 171, 15, 171, 16, 171, 17, 171, 18, 171, 19, 171, 20, 171, 21, 171, 22, 171, 23, 171, 24, 171, 25, 171, 26, 171, 27, 171, 28, 171, 29, 171, 30, 171, 31, 171, 32, 171, 33, 171, 34, 171, 35, 171, 36, 171, 37, 171, 38, 171, 39, 171, 40, 171, 41, 171, 42, 171, 43, 171, 44, 171, 45, 171, 46, 171, 47, 171, 48, 171, 49, 171, 171, 171, 172, 171, 173, 171, 174, 171, 175, 171, 176, 171, 177, 171, 178, 171, 179, 171, 180, 171, 181, 171, 182, 171, 183, 171, 184, 171, 185, 171, 186, 171, 187, 171, 188, 172, 3, 172, 4, 172, 5, 172, 6, 172, 7, 172, 8, 172, 9, 172, 10, 172, 11, 172, 12, 172, 13, 172, 14, 172, 15, 172, 16, 172, 17, 172, 18, 172, 19, 172, 20, 172, 21, 172, 22, 172, 23, 172, 24, 172, 25, 172, 26, 172, 27, 172, 28, 172, 29, 172, 30, 172, 31, 172, 32, 172, 33, 172, 34, 172, 35, 172, 36, 172, 37, 172, 38, 172, 39, 172, 40, 172, 41, 172, 42, 172, 43, 172, 44, 172, 45, 172, 46, 172, 47, 172, 48, 172, 49, 172, 50, 172, 171, 172, 172, 172, 173, 172, 174, 172, 175, 172, 176, 172, 177, 172, 178, 172, 179, 172, 180, 172, 181, 172, 182, 172, 183, 172, 184, 172, 185, 172, 186, 172, 187, 172, 188, 173, 3, 173, 4, 173, 5, 173, 6, 173, 7, 173, 8, 173, 9, 173, 10, 173, 11, 173, 12, 173, 13, 173, 14, 173, 15, 173, 16, 173, 17, 173, 18, 173, 19, 173, 20, 173, 21, 173, 22, 173, 23, 173, 24, 173, 25, 173, 26, 173, 27, 173, 28, 173, 29, 173, 30, 173, 31, 173, 32, 173, 33, 173, 34, 173, 35, 173, 36, 173, 37, 173, 38, 173, 39, 173, 40, 173, 41, 173, 42, 173, 43, 173, 44, 173, 45, 173, 46, 173, 47, 173, 48, 173, 49, 173, 50, 173, 51, 173, 171, 173, 172, 173, 173, 173, 174, 173, 175, 173, 176, 173, 177, 173, 178, 173, 179, 173, 180, 173, 181, 173, 182, 173, 183, 173, 184, 173, 185, 173, 186, 173, 187, 173, 188, 174, 3, 174, 4, 174, 5, 174, 6, 174, 7, 174, 8, 174, 9, 174, 10, 174, 11, 174, 12, 174, 13, 174, 14, 174, 15, 174, 16, 174, 17, 174, 18, 174, 19, 174, 20, 174, 21, 174, 22, 174, 23, 174, 24, 174, 25, 174, 26, 174, 27, 174, 28, 174, 29, 174, 30, 174, 31, 174, 32, 174, 33, 174, 34, 174, 35, 174, 36, 174, 37, 174, 38, 174, 39, 174, 40, 174, 41, 174, 42, 174, 43, 174, 44, 174, 45, 174, 46, 174, 47, 174, 48, 174, 49, 174, 50, 174, 51, 174, 52, 174, 171, 174, 172, 174, 173, 174, 174, 174, 175, 174, 176, 174, 177, 174, 178, 174, 179, 174, 180, 174, 181, 174, 182, 174, 183, 174, 184, 174, 185, 174, 186, 174, 187, 174, 188, 175, 3, 175, 4, 175, 5, 175, 6, 175, 7, 175, 8, 175, 9, 175, 10, 175, 11, 175, 12, 175, 13, 175, 14, 175, 15, 175, 16, 175, 17, 175, 18, 175, 19, 175, 20, 175, 21, 175, 22, 175, 23, 175, 24, 175, 25, 175, 26, 175, 27, 175, 28, 175, 29, 175, 30, 175, 31, 175, 32, 175, 33, 175, 34, 175, 35, 175, 36, 175, 37, 175, 38, 175, 39, 175, 40, 175, 41, 175, 42, 175, 43, 175, 44, 175, 45, 175, 46, 175, 47, 175, 48, 175, 49, 175, 50, 175, 51, 175, 52, 175, 171, 175, 172, 175, 173, 175, 174, 175, 175, 175, 176, 175, 177, 175, 178, 175, 179, 175, 180, 175, 181, 175, 182, 175, 183, 175, 184, 175, 185, 175, 186, 175, 187, 175, 188, 176, 3, 176, 4, 176, 5, 176, 6, 176, 7, 176, 8, 176, 9, 176, 10, 176, 11, 176, 12, 176, 13, 176, 14, 176, 15, 176, 16, 176, 17, 176, 18, 176, 19, 176, 20, 176, 21, 176, 22, 176, 23, 176, 24, 176, 25, 176, 26, 176, 27, 176, 28, 176, 29, 176, 30, 176, 31, 176, 32, 176, 33, 176, 34, 176, 35, 176, 36, 176, 37, 176, 38, 176, 39, 176, 40, 176, 41, 176, 42, 176, 43, 176, 44, 176, 45, 176, 46, 176, 47, 176, 48, 176, 49, 176, 50, 176, 51, 176, 52, 176, 53, 176, 171, 176, 172, 176, 173, 176, 174, 176, 175, 176, 176, 176, 177, 176, 178, 176, 179, 176, 180, 176, 181, 176, 182, 176, 183, 176, 184, 176, 185, 176, 186, 176, 187, 176, 188, 177, 3, 177, 4, 177, 5, 177, 6, 177, 7, 177, 8, 177, 9, 177, 10, 177, 11, 177, 12, 177, 13, 177, 14, 177, 15, 177, 16, 177, 17, 177, 18, 177, 19, 177, 20, 177, 21, 177, 22, 177, 23, 177, 24, 177, 25, 177, 26, 177, 27, 177, 28, 177, 29, 177, 30, 177, 31, 177, 32, 177, 33, 177, 34, 177, 35, 177, 36, 177, 37, 177, 38, 177, 39, 177, 40, 177, 41, 177, 42, 177, 43, 177, 44, 177, 45, 177, 46, 177, 47, 177, 48, 177, 49, 177, 50, 177, 51, 177, 52, 177, 53, 177, 54, 177, 171, 177, 172, 177, 173, 177, 174, 177, 175, 177, 176, 177, 177, 177, 178, 177, 179, 177, 180, 177, 181, 177, 182, 177, 183, 177, 184, 177, 185, 177, 186, 177, 187, 177, 188, 178, 3, 178, 4, 178, 5, 178, 6, 178, 7, 178, 8, 178, 9, 178, 10, 178, 11, 178, 12, 178, 13, 178, 14, 178, 15, 178, 16, 178, 17, 178, 18, 178, 19, 178, 20, 178, 21, 178, 22, 178, 23, 178, 24, 178, 25, 178, 26, 178, 27, 178, 28, 178, 29, 178, 30, 178, 31, 178, 32, 178, 33, 178, 34, 178, 35, 178, 36, 178, 37, 178, 38, 178, 39, 178, 40, 178, 41, 178, 42, 178, 43, 178, 44, 178, 45, 178, 46, 178, 47, 178, 48, 178, 49, 178, 50, 178, 51, 178, 52, 178, 53, 178, 54, 178, 171, 178, 172, 178, 173, 178, 174, 178, 175, 178, 176, 178, 177, 178, 178, 178, 179, 178, 180, 178, 181, 178, 182, 178, 183, 178, 184, 178, 185, 178, 186, 178, 187, 178, 188, 179, 3, 179, 4, 179, 5, 179, 6, 179, 7, 179, 8, 179, 9, 179, 10, 179, 11, 179, 12, 179, 13, 179, 14, 179, 15, 179, 16, 179, 17, 179, 18, 179, 19, 179, 20, 179, 21, 179, 22, 179, 23, 179, 24, 179, 25, 179, 26, 179, 27, 179, 28, 179, 29, 179, 30, 179, 31, 179, 32, 179, 33, 179, 34, 179, 35, 179, 36, 179, 37, 179, 38, 179, 39, 179, 40, 179, 41, 179, 42, 179, 43, 179, 44, 179, 45, 179, 46, 179, 47, 179, 48, 179, 49, 179, 50, 179, 51, 179, 52, 179, 53, 179, 54, 179, 171, 179, 172, 179, 173, 179, 174, 179, 175, 179, 176, 179, 177, 179, 178, 179, 179, 179, 180, 179, 181, 179, 182, 179, 183, 179, 184, 179, 185, 179, 186, 179, 187, 179, 188, 180, 3, 180, 4, 180, 5, 180, 6, 180, 7, 180, 8, 180, 9, 180, 10, 180, 11, 180, 12, 180, 13, 180, 14, 180, 15, 180, 16, 180, 17, 180, 18, 180, 19, 180, 20, 180, 21, 180, 22, 180, 23, 180, 24, 180, 25, 180, 26, 180, 27, 180, 28, 180, 29, 180, 30, 180, 31, 180, 32, 180, 33, 180, 34, 180, 35, 180, 36, 180, 37, 180, 38, 180, 39, 180, 40, 180, 41, 180, 42, 180, 43, 180, 44, 180, 45, 180, 46, 180, 47, 180, 48, 180, 49, 180, 50, 180, 51, 180, 52, 180, 53, 180, 54, 180, 171, 180, 172, 180, 173, 180, 174, 180, 175, 180, 176, 180, 177, 180, 178, 180, 179, 180, 180, 180, 181, 180, 182, 180, 183, 180, 184, 180, 185, 180, 186, 180, 187, 180, 188, 181, 3, 181, 4, 181, 5, 181, 6, 181, 7, 181, 8, 181, 9, 181, 10, 181, 11, 181, 12, 181, 13, 181, 14, 181, 15, 181, 16, 181, 17, 181, 18, 181, 19, 181, 20, 181, 21, 181, 22, 181, 23, 181, 24, 181, 25, 181, 26, 181, 27, 181, 28, 181, 29, 181, 30, 181, 31, 181, 32, 181, 33, 181, 34, 181, 35, 181, 36, 181, 37, 181, 38, 181, 39, 181, 40, 181, 41, 181, 42, 181, 43, 181, 44, 181, 45, 181, 46, 181, 47, 181, 48, 181, 49, 181, 50, 181, 51, 181, 52, 181, 53, 181, 54, 181, 171, 181, 172, 181, 173, 181, 174, 181, 175, 181, 176, 181, 177, 181, 178, 181, 179, 181, 180, 181, 181, 181, 182, 181, 183, 181, 184, 181, 185, 181, 186, 181, 187, 181, 188, 182, 3, 182, 4, 182, 5, 182, 6, 182, 7, 182, 8, 182, 9, 182, 10, 182, 11, 182, 12, 182, 13, 182, 14, 182, 15, 182, 16, 182, 17, 182, 18, 182, 19, 182, 20, 182, 21, 182, 22, 182, 23, 182, 24, 182, 25, 182, 26, 182, 27, 182, 28, 182, 29, 182, 30, 182, 31, 182, 32, 182, 33, 182, 34, 182, 35, 182, 36, 182, 37, 182, 38, 182, 39, 182, 40, 182, 41, 182, 42, 182, 43, 182, 44, 182, 45, 182, 46, 182, 47, 182, 48, 182, 49, 182, 50, 182, 51, 182, 52, 182, 53, 182, 54, 182, 171, 182, 172, 182, 173, 182, 174, 182, 175, 182, 176, 182, 177, 182, 178, 182, 179, 182, 180, 182, 181, 182, 182, 182, 183, 182, 184, 182, 185, 182, 186, 182, 187, 182, 188, 183, 3, 183, 4, 183, 5, 183, 6, 183, 7, 183, 8, 183, 9, 183, 10, 183, 11, 183, 12, 183, 13, 183, 14, 183, 15, 183, 16, 183, 17, 183, 18, 183, 19, 183, 20, 183, 21, 183, 22, 183, 23, 183, 24, 183, 25, 183, 26, 183, 27, 183, 28, 183, 29, 183, 30, 183, 31, 183, 32, 183, 33, 183, 34, 183, 35, 183, 36, 183, 37, 183, 38, 183, 39, 183, 40, 183, 41, 183, 42, 183, 43, 183, 44, 183, 45, 183, 46, 183, 47, 183, 48, 183, 49, 183, 50, 183, 51, 183, 52, 183, 53, 183, 54, 183, 171, 183, 172, 183, 173, 183, 174, 183, 175, 183, 176, 183, 177, 183, 178, 183, 179, 183, 180, 183, 181, 183, 182, 183, 183, 183, 184, 183, 185, 183, 186, 183, 187, 183, 188, 184, 3, 184, 4, 184, 5, 184, 6, 184, 7, 184, 8, 184, 9, 184, 10, 184, 11, 184, 12, 184, 13, 184, 14, 184, 15, 184, 16, 184, 17, 184, 18, 184, 19, 184, 20, 184, 21, 184, 22, 184, 23, 184, 24, 184, 25, 184, 26, 184, 27, 184, 28, 184, 29, 184, 30, 184, 31, 184, 32, 184, 33, 184, 34, 184, 35, 184, 36, 184, 37, 184, 38, 184, 39, 184, 40, 184, 41, 184, 42, 184, 43, 184, 44, 184, 45, 184, 46, 184, 47, 184, 48, 184, 49, 184, 50, 184, 51, 184, 52, 184, 53, 184, 54, 184, 171, 184, 172, 184, 173, 184, 174, 184, 175, 184, 176, 184, 177, 184, 178, 184, 179, 184, 180, 184, 181, 184, 182, 184, 183, 184, 184, 184, 185, 184, 186, 184, 187, 184, 188, 185, 3, 185, 4, 185, 5, 185, 6, 185, 7, 185, 8, 185, 9, 185, 10, 185, 11, 185, 12, 185, 13, 185, 14, 185, 15, 185, 16, 185, 17, 185, 18, 185, 19, 185, 20, 185, 21, 185, 22, 185, 23, 185, 24, 185, 25, 185, 26, 185, 27, 185, 28, 185, 29, 185, 30, 185, 31, 185, 32, 185, 33, 185, 34, 185, 35, 185, 36, 185, 37, 185, 38, 185, 39, 185, 40, 185, 41, 185, 42, 185, 43, 185, 44, 185, 45, 185, 46, 185, 47, 185, 48, 185, 49, 185, 50, 185, 51, 185, 52, 185, 53, 185, 54, 185, 171, 185, 172, 185, 173, 185, 174, 185, 175, 185, 176, 185, 177, 185, 178, 185, 179, 185, 180, 185, 181, 185, 182, 185, 183, 185, 184, 185, 185, 185, 186, 185, 187, 185, 188, 186, 3, 186, 4, 186, 5, 186, 6, 186, 7, 186, 8, 186, 9, 186, 10, 186, 11, 186, 12, 186, 13, 186, 14, 186, 15, 186, 16, 186, 17, 186, 18, 186, 19, 186, 20, 186, 21, 186, 22, 186, 23, 186, 24, 186, 25, 186, 26, 186, 27, 186, 28, 186, 29, 186, 30, 186, 31, 186, 32, 186, 33, 186, 34, 186, 35, 186, 36, 186, 37, 186, 38, 186, 39, 186, 40, 186, 41, 186, 42, 186, 43, 186, 44, 186, 45, 186, 46, 186, 47, 186, 48, 186, 49, 186, 50, 186, 51, 186, 52, 186, 53, 186, 54, 186, 171, 186, 172, 186, 173, 186, 174, 186, 175, 186, 176, 186, 177, 186, 178, 186, 179, 186, 180, 186, 181, 186, 182, 186, 183, 186, 184, 186, 185, 186, 186, 186, 187, 186, 188, 187, 3, 187, 4, 187, 5, 187, 6, 187, 7, 187, 8, 187, 9, 187, 10, 187, 11, 187, 12, 187, 13, 187, 14, 187, 15, 187, 16, 187, 17, 187, 18, 187, 19, 187, 20, 187, 21, 187, 22, 187, 23, 187, 24, 187, 25, 187, 26, 187, 27, 187, 28, 187, 29, 187, 30, 187, 31, 187, 32, 187, 33, 187, 34, 187, 35, 187, 36, 187, 37, 187, 38, 187, 39, 187, 40, 187, 41, 187, 42, 187, 43, 187, 44, 187, 45, 187, 46, 187, 47, 187, 48, 187, 49, 187, 50, 187, 51, 187, 52, 187, 53, 187, 54, 187, 171, 187, 172, 187, 173, 187, 174, 187, 175, 187, 176, 187, 177, 187, 178, 187, 179, 187, 180, 187, 181, 187, 182, 187, 183, 187, 184, 187, 185, 187, 186, 187, 187, 187, 188, 188, 3, 188, 4, 188, 5, 188, 6, 188, 7, 188, 8, 188, 9, 188, 10, 188, 11, 188, 12, 188, 13, 188, 14, 188, 15, 188, 16, 188, 17, 188, 18, 188, 19, 188, 20, 188, 21, 188, 22, 188, 23, 188, 24, 188, 25, 188, 26, 188, 27, 188, 28, 188, 29, 188, 30, 188, 31, 188, 32, 188, 33, 188, 34, 188, 35, 188, 36, 188, 37, 188, 38, 188, 39, 188, 40, 188, 41, 188, 42, 188, 43, 188, 44, 188, 45, 188, 46, 188, 47, 188, 48, 188, 49, 188, 50, 188, 51, 188, 52, 188, 53, 188, 54, 188, 171, 188, 172, 188, 173, 188, 174, 188, 175, 188, 176, 188, 177, 188, 178, 188, 179, 188, 180, 188, 181, 188, 182, 188, 183, 188, 184, 188, 185, 188, 186, 188, 187, 188, 188, 189, 3, 189, 4, 189, 5, 189, 6, 189, 7, 189, 8, 189, 9, 189, 10, 189, 11, 189, 12, 189, 13, 189, 14, 189, 15, 189, 16, 189, 17, 189, 18, 189, 19, 189, 20, 189, 21, 189, 22, 189, 23, 189, 24, 189, 25, 189, 26, 189, 27, 189, 28, 189, 29, 189, 30, 189, 31, 189, 32, 189, 33, 189, 34, 189, 35, 189, 36, 189, 37, 189, 38, 189, 39, 189, 40, 189, 41, 189, 42, 189, 43, 189, 44, 189, 45, 189, 46, 189, 47, 189, 48, 189, 49, 189, 50, 189, 51, 189, 52, 189, 53, 189, 54, 189, 55, 189, 171, 189, 172, 189, 173, 189, 174, 189, 175, 189, 176, 189, 177, 189, 178, 189, 179, 189, 180, 189, 181, 189, 182, 189, 183, 189, 184, 189, 185, 189, 186, 189, 187, 189, 188, 190, 3, 190, 4, 190, 5, 190, 6, 190, 7, 190, 8, 190, 9, 190, 10, 190, 11, 190, 12, 190, 13, 190, 14, 190, 15, 190, 16, 190, 17, 190, 18, 190, 19, 190, 20, 190, 21, 190, 22, 190, 23, 190, 24, 190, 25, 190, 26, 190, 27, 190, 28, 190, 29, 190, 30, 190, 31, 190, 32, 190, 33, 190, 34, 190, 35, 190, 36, 190, 37, 190, 38, 190, 39, 190, 40, 190, 41, 190, 42, 190, 43, 190, 44, 190, 45, 190, 46, 190, 47, 190, 48, 190, 49, 190, 50, 190, 51, 190, 52, 190, 53, 190, 54, 190, 55, 190, 171, 190, 172, 190, 173, 190, 174, 190, 175, 190, 176, 190, 177, 190, 178, 190, 179, 190, 180, 190, 181, 190, 182, 190, 183, 190, 184, 190, 185, 190, 186, 190, 187, 190, 188, 191, 3, 191, 4, 191, 5, 191, 6, 191, 7, 191, 8, 191, 9, 191, 10, 191, 11, 191, 12, 191, 13, 191, 14, 191, 15, 191, 16, 191, 17, 191, 18, 191, 19, 191, 20, 191, 21, 191, 22, 191, 23, 191, 24, 191, 25, 191, 26, 191, 27, 191, 28, 191, 29, 191, 30, 191, 31, 191, 32, 191, 33, 191, 34, 191, 35, 191, 36, 191, 37, 191, 38, 191, 39, 191, 40, 191, 41, 191, 42, 191, 43, 191, 44, 191, 45, 191, 46, 191, 47, 191, 48, 191, 49, 191, 50, 191, 51, 191, 52, 191, 53, 191, 54, 191, 55, 191, 171, 191, 172, 191, 173, 191, 174, 191, 175, 191, 176, 191, 177, 191, 178, 191, 179, 191, 180, 191, 181, 191, 182, 191, 183, 191, 184, 191, 185, 191, 186, 191, 187, 191, 188, 192, 3, 192, 4, 192, 5, 192, 6, 192, 7, 192, 8, 192, 9, 192, 10, 192, 11, 192, 12, 192, 13, 192, 14, 192, 15, 192, 16, 192, 17, 192, 18, 192, 19, 192, 20, 192, 21, 192, 22, 192, 23, 192, 24, 192, 25, 192, 26, 192, 27, 192, 28, 192, 29, 192, 30, 192, 31, 192, 32, 192, 33, 192, 34, 192, 35, 192, 36, 192, 37, 192, 38, 192, 39, 192, 40, 192, 41, 192, 42, 192, 43, 192, 44, 192, 45, 192, 46, 192, 47, 192, 48, 192, 49, 192, 50, 192, 51, 192, 52, 192, 53, 192, 54, 192, 55, 192, 171, 192, 172, 192, 173, 192, 174, 192, 175, 192, 176, 192, 177, 192, 178, 192, 179, 192, 180, 192, 181, 192, 182, 192, 183, 192, 184, 192, 185, 192, 186, 192, 187, 192, 188, 193, 3, 193, 4, 193, 5, 193, 6, 193, 7, 193, 8, 193, 9, 193, 10, 193, 11, 193, 12, 193, 13, 193, 14, 193, 15, 193, 16, 193, 17, 193, 18, 193, 19, 193, 20, 193, 21, 193, 22, 193, 23, 193, 24, 193, 25, 193, 26, 193, 27, 193, 28, 193, 29, 193, 30, 193, 31, 193, 32, 193, 33, 193, 34, 193, 35, 193, 36, 193, 37, 193, 38, 193, 39, 193, 40, 193, 41, 193, 42, 193, 43, 193, 44, 193, 45, 193, 46, 193, 47, 193, 48, 193, 49, 193, 50, 193, 51, 193, 52, 193, 53, 193, 54, 193, 55, 193, 171, 193, 172, 193, 173, 193, 174, 193, 175, 193, 176, 193, 177, 193, 178, 193, 179, 193, 180, 193, 181, 193, 182, 193, 183, 193, 184, 193, 185, 193, 186, 193, 187, 193, 188, 194, 3, 194, 4, 194, 5, 194, 6, 194, 7, 194, 8, 194, 9, 194, 10, 194, 11, 194, 12, 194, 13, 194, 14, 194, 15, 194, 16, 194, 17, 194, 18, 194, 19, 194, 20, 194, 21, 194, 22, 194, 23, 194, 24, 194, 25, 194, 26, 194, 27, 194, 28, 194, 29, 194, 30, 194, 31, 194, 32, 194, 33, 194, 34, 194, 35, 194, 36, 194, 37, 194, 38, 194, 39, 194, 40, 194, 41, 194, 42, 194, 43, 194, 44, 194, 45, 194, 46, 194, 47, 194, 48, 194, 49, 194, 50, 194, 51, 194, 52, 194, 53, 194, 54, 194, 55, 194, 56, 194, 171, 194, 172, 194, 173, 194, 174, 194, 175, 194, 176, 194, 177, 194, 178, 194, 179, 194, 180, 194, 181, 194, 182, 194, 183, 194, 184, 194, 185, 194, 186, 194, 187, 194, 188, 195, 3, 195, 4, 195, 5, 195, 6, 195, 7, 195, 8, 195, 9, 195, 10, 195, 11, 195, 12, 195, 13, 195, 14, 195, 15, 195, 16, 195, 17, 195, 18, 195, 19, 195, 20, 195, 21, 195, 22, 195, 23, 195, 24, 195, 25, 195, 26, 195, 27, 195, 28, 195, 29, 195, 30, 195, 31, 195, 32, 195, 33, 195, 34, 195, 35, 195, 36, 195, 37, 195, 38, 195, 39, 195, 40, 195, 41, 195, 42, 195, 43, 195, 44, 195, 45, 195, 46, 195, 47, 195, 48, 195, 49, 195, 50, 195, 51, 195, 52, 195, 53, 195, 54, 195, 55, 195, 56, 195, 171, 195, 172, 195, 173, 195, 174, 195, 175, 195, 176, 195, 177, 195, 178, 195, 179, 195, 180, 195, 181, 195, 182, 195, 183, 195, 184, 195, 185, 195, 186, 195, 187, 195, 188, 196, 3, 196, 4, 196, 5, 196, 6, 196, 7, 196, 8, 196, 9, 196, 10, 196, 11, 196, 12, 196, 13, 196, 14, 196, 15, 196, 16, 196, 17, 196, 18, 196, 19, 196, 20, 196, 21, 196, 22, 196, 23, 196, 24, 196, 25, 196, 26, 196, 27, 196, 28, 196, 29, 196, 30, 196, 31, 196, 32, 196, 33, 196, 34, 196, 35, 196, 36, 196, 37, 196, 38, 196, 39, 196, 40, 196, 41, 196, 42, 196, 43, 196, 44, 196, 45, 196, 46, 196, 47, 196, 48, 196, 49, 196, 50, 196, 51, 196, 52, 196, 53, 196, 54, 196, 55, 196, 56, 196, 171, 196, 172, 196, 173, 196, 174, 196, 175, 196, 176, 196, 177, 196, 178, 196, 179, 196, 180, 196, 181, 196, 182, 196, 183, 196, 184, 196, 185, 196, 186, 196, 187, 196, 188, 197, 3, 197, 4, 197, 5, 197, 6, 197, 7, 197, 8, 197, 9, 197, 10, 197, 11, 197, 12, 197, 13, 197, 14, 197, 15, 197, 16, 197, 17, 197, 18, 197, 19, 197, 20, 197, 21, 197, 22, 197, 23, 197, 24, 197, 25, 197, 26, 197, 27, 197, 28, 197, 29, 197, 30, 197, 31, 197, 32, 197, 33, 197, 34, 197, 35, 197, 36, 197, 37, 197, 38, 197, 39, 197, 40, 197, 41, 197, 42, 197, 43, 197, 44, 197, 45, 197, 46, 197, 47, 197, 48, 197, 49, 197, 50, 197, 51, 197, 52, 197, 53, 197, 54, 197, 55, 197, 56, 197, 171, 197, 172, 197, 173, 197, 174, 197, 175, 197, 176, 197, 177, 197, 178, 197, 179, 197, 180, 197, 181, 197, 182, 197, 183, 197, 184, 197, 185, 197, 186, 197, 187, 197, 188, 198, 3, 198, 4, 198, 5, 198, 6, 198, 7, 198, 8, 198, 9, 198, 10, 198, 11, 198, 12, 198, 13, 198, 14, 198, 15, 198, 16, 198, 17, 198, 18, 198, 19, 198, 20, 198, 21, 198, 22, 198, 23, 198, 24, 198, 25, 198, 26, 198, 27, 198, 28, 198, 29, 198, 30, 198, 31, 198, 32, 198, 33, 198, 34, 198, 35, 198, 36, 198, 37, 198, 38, 198, 39, 198, 40, 198, 41, 198, 42, 198, 43, 198, 44, 198, 45, 198, 46, 198, 47, 198, 48, 198, 49, 198, 50, 198, 51, 198, 52, 198, 53, 198, 54, 198, 55, 198, 56, 198, 57, 198, 170, 198, 171, 198, 172, 198, 173, 198, 174, 198, 175, 198, 176, 198, 177, 198, 178, 198, 179, 198, 180, 198, 181, 198, 182, 198, 183, 198, 184, 198, 185, 198, 186, 198, 187, 198, 188, 199, 3, 199, 4, 199, 5, 199, 6, 199, 7, 199, 8, 199, 9, 199, 10, 199, 11, 199, 12, 199, 13, 199, 14, 199, 15, 199, 16, 199, 17, 199, 18, 199, 19, 199, 20, 199, 21, 199, 22, 199, 23, 199, 24, 199, 25, 199, 26, 199, 27, 199, 28, 199, 29, 199, 30, 199, 31, 199, 32, 199, 33, 199, 34, 199, 35, 199, 36, 199, 37, 199, 38, 199, 39, 199, 40, 199, 41, 199, 42, 199, 43, 199, 44, 199, 45, 199, 46, 199, 47, 199, 48, 199, 49, 199, 50, 199, 51, 199, 52, 199, 53, 199, 54, 199, 55, 199, 56, 199, 57, 199, 58, 199, 59, 199, 60, 199, 170, 199, 171, 199, 172, 199, 173, 199, 174, 199, 175, 199, 176, 199, 177, 199, 178, 199, 179, 199, 180, 199, 181, 199, 182, 199, 183, 199, 184, 199, 185, 199, 186, 199, 187, 199, 188, 200, 3, 200, 4, 200, 5, 200, 6, 200, 7, 200, 8, 200, 9, 200, 10, 200, 11, 200, 12, 200, 13, 200, 14, 200, 15, 200, 16, 200, 17, 200, 18, 200, 19, 200, 20, 200, 21, 200, 22, 200, 23, 200, 24, 200, 25, 200, 26, 200, 27, 200, 28, 200, 29, 200, 30, 200, 31, 200, 32, 200, 33, 200, 34, 200, 35, 200, 36, 200, 37, 200, 38, 200, 39, 200, 40, 200, 41, 200, 42, 200, 43, 200, 44, 200, 45, 200, 46, 200, 47, 200, 48, 200, 49, 200, 50, 200, 51, 200, 52, 200, 53, 200, 54, 200, 55, 200, 56, 200, 57, 200, 58, 200, 59, 200, 60, 200, 61, 200, 62, 200, 63, 200, 170, 200, 171, 200, 172, 200, 173, 200, 174, 200, 175, 200, 176, 200, 177, 200, 178, 200, 179, 200, 180, 200, 181, 200, 182, 200, 183, 200, 184, 200, 185, 200, 186, 200, 187, 200, 188, 201, 3, 201, 4, 201, 5, 201, 6, 201, 7, 201, 8, 201, 9, 201, 10, 201, 11, 201, 12, 201, 13, 201, 14, 201, 15, 201, 16, 201, 17, 201, 18, 201, 19, 201, 20, 201, 21, 201, 22, 201, 23, 201, 24, 201, 25, 201, 26, 201, 27, 201, 28, 201, 29, 201, 30, 201, 31, 201, 32, 201, 33, 201, 34, 201, 35, 201, 36, 201, 37, 201, 38, 201, 39, 201, 40, 201, 41, 201, 42, 201, 43, 201, 44, 201, 45, 201, 46, 201, 47, 201, 48, 201, 49, 201, 50, 201, 51, 201, 52, 201, 53, 201, 54, 201, 55, 201, 56, 201, 57, 201, 58, 201, 59, 201, 60, 201, 61, 201, 62, 201, 63, 201, 64, 201, 65, 201, 66, 201, 170, 201, 171, 201, 172, 201, 173, 201, 174, 201, 175, 201, 176, 201, 177, 201, 178, 201, 179, 201, 180, 201, 181, 201, 182, 201, 183, 201, 184, 201, 185, 201, 186, 201, 187, 201, 188, 202, 3, 202, 4, 202, 5, 202, 6, 202, 7, 202, 8, 202, 9, 202, 10, 202, 11, 202, 12, 202, 13, 202, 14, 202, 15, 202, 16, 202, 17, 202, 18, 202, 19, 202, 20, 202, 21, 202, 22, 202, 23, 202, 24, 202, 25, 202, 26, 202, 27, 202, 28, 202, 29, 202, 30, 202, 31, 202, 32, 202, 33, 202, 34, 202, 35, 202, 36, 202, 37, 202, 38, 202, 39, 202, 40, 202, 41, 202, 42, 202, 43, 202, 44, 202, 45, 202, 46, 202, 47, 202, 48, 202, 49, 202, 50, 202, 51, 202, 52, 202, 53, 202, 54, 202, 55, 202, 56, 202, 57, 202, 58, 202, 59, 202, 60, 202, 61, 202, 62, 202, 63, 202, 64, 202, 65, 202, 66, 202, 67, 202, 68, 202, 69, 202, 70, 202, 170, 202, 171, 202, 172, 202, 173, 202, 174, 202, 175, 202, 176, 202, 177, 202, 178, 202, 179, 202, 180, 202, 181, 202, 182, 202, 183, 202, 184, 202, 185, 202, 186, 202, 187, 202, 188, 203, 3, 203, 4, 203, 5, 203, 6, 203, 7, 203, 8, 203, 9, 203, 10, 203, 11, 203, 12, 203, 13, 203, 14, 203, 15, 203, 16, 203, 17, 203, 18, 203, 19, 203, 20, 203, 21, 203, 22, 203, 23, 203, 24, 203, 25, 203, 26, 203, 27, 203, 28, 203, 29, 203, 30, 203, 31, 203, 32, 203, 33, 203, 34, 203, 35, 203, 36, 203, 37, 203, 38, 203, 39, 203, 40, 203, 41, 203, 42, 203, 43, 203, 44, 203, 45, 203, 46, 203, 47, 203, 48, 203, 49, 203, 50, 203, 51, 203, 52, 203, 53, 203, 54, 203, 55, 203, 56, 203, 57, 203, 58, 203, 59, 203, 60, 203, 61, 203, 62, 203, 63, 203, 64, 203, 65, 203, 66, 203, 67, 203, 68, 203, 69, 203, 70, 203, 71, 203, 72, 203, 73, 203, 74, 203, 75, 203, 170, 203, 171, 203, 172, 203, 173, 203, 174, 203, 175, 203, 176, 203, 177, 203, 178, 203, 179, 203, 180, 203, 181, 203, 182, 203, 183, 203, 184, 203, 185, 203, 186, 203, 187, 203, 188, 204, 3, 204, 4, 204, 5, 204, 6, 204, 7, 204, 8, 204, 9, 204, 10, 204, 11, 204, 12, 204, 13, 204, 14, 204, 15, 204, 16, 204, 17, 204, 18, 204, 19, 204, 20, 204, 21, 204, 22, 204, 23, 204, 24, 204, 25, 204, 26, 204, 27, 204, 28, 204, 29, 204, 30, 204, 31, 204, 32, 204, 33, 204, 34, 204, 35, 204, 36, 204, 37, 204, 38, 204, 39, 204, 40, 204, 41, 204, 42, 204, 43, 204, 44, 204, 45, 204, 46, 204, 47, 204, 48, 204, 49, 204, 50, 204, 51, 204, 52, 204, 53, 204, 54, 204, 55, 204, 56, 204, 57, 204, 58, 204, 59, 204, 60, 204, 61, 204, 62, 204, 63, 204, 64, 204, 65, 204, 66, 204, 67, 204, 68, 204, 69, 204, 70, 204, 71, 204, 72, 204, 73, 204, 74, 204, 75, 204, 76, 204, 77, 204, 78, 204, 79, 204, 170, 204, 171, 204, 172, 204, 173, 204, 174, 204, 175, 204, 176, 204, 177, 204, 178, 204, 179, 204, 180, 204, 181, 204, 182, 204, 183, 204, 184, 204, 185, 204, 186, 204, 187, 204, 188, 205, 3, 205, 4, 205, 5, 205, 6, 205, 7, 205, 8, 205, 9, 205, 10, 205, 11, 205, 12, 205, 13, 205, 14, 205, 15, 205, 16, 205, 17, 205, 18, 205, 19, 205, 20, 205, 21, 205, 22, 205, 23, 205, 24, 205, 25, 205, 26, 205, 27, 205, 28, 205, 29, 205, 30, 205, 31, 205, 32, 205, 33, 205, 34, 205, 35, 205, 36, 205, 37, 205, 38, 205, 39, 205, 40, 205, 41, 205, 42, 205, 43, 205, 44, 205, 45, 205, 46, 205, 47, 205, 48, 205, 49, 205, 50, 205, 51, 205, 52, 205, 53, 205, 54, 205, 55, 205, 56, 205, 57, 205, 58, 205, 59, 205, 60, 205, 61, 205, 62, 205, 63, 205, 64, 205, 65, 205, 66, 205, 67, 205, 68, 205, 69, 205, 70, 205, 71, 205, 72, 205, 73, 205, 74, 205, 75, 205, 76, 205, 77, 205, 78, 205, 79, 205, 80, 205, 81, 205, 82, 205, 83, 205, 84, 205, 85, 205, 86, 205, 87, 205, 170, 205, 171, 205, 172, 205, 173, 205, 174, 205, 175, 205, 176, 205, 177, 205, 178, 205, 179, 205, 180, 205, 181, 205, 182, 205, 183, 205, 184, 205, 185, 205, 186, 205, 187, 205, 188, 206, 3, 206, 4, 206, 5, 206, 6, 206, 7, 206, 8, 206, 9, 206, 10, 206, 11, 206, 12, 206, 13, 206, 14, 206, 15, 206, 16, 206, 17, 206, 18, 206, 19, 206, 20, 206, 21, 206, 22, 206, 23, 206, 24, 206, 25, 206, 26, 206, 27, 206, 28, 206, 29, 206, 30, 206, 31, 206, 32, 206, 33, 206, 34, 206, 35, 206, 36, 206, 37, 206, 38, 206, 39, 206, 40, 206, 41, 206, 42, 206, 43, 206, 44, 206, 45, 206, 46, 206, 47, 206, 48, 206, 49, 206, 50, 206, 51, 206, 52, 206, 53, 206, 54, 206, 55, 206, 56, 206, 57, 206, 58, 206, 59, 206, 60, 206, 61, 206, 62, 206, 63, 206, 64, 206, 65, 206, 66, 206, 67, 206, 68, 206, 69, 206, 70, 206, 71, 206, 72, 206, 73, 206, 74, 206, 75, 206, 76, 206, 77, 206, 78, 206, 79, 206, 80, 206, 81, 206, 82, 206, 83, 206, 84, 206, 85, 206, 86, 206, 87, 206, 88, 206, 89, 206, 170, 206, 171, 206, 172, 206, 173, 206, 174, 206, 175, 206, 176, 206, 177, 206, 178, 206, 179, 206, 180, 206, 181, 206, 182, 206, 183, 206, 184, 206, 185, 206, 186, 206, 187, 206, 188, 207, 3, 207, 4, 207, 5, 207, 6, 207, 7, 207, 8, 207, 9, 207, 10, 207, 11, 207, 12, 207, 13, 207, 14, 207, 15, 207, 16, 207, 17, 207, 18, 207, 19, 207, 20, 207, 21, 207, 22, 207, 23, 207, 24, 207, 25, 207, 26, 207, 27, 207, 28, 207, 29, 207, 30, 207, 31, 207, 32, 207, 33, 207, 34, 207, 35, 207, 36, 207, 37, 207, 38, 207, 39, 207, 40, 207, 41, 207, 42, 207, 43, 207, 44, 207, 45, 207, 46, 207, 47, 207, 48, 207, 49, 207, 50, 207, 51, 207, 52, 207, 53, 207, 54, 207, 55, 207, 56, 207, 57, 207, 58, 207, 59, 207, 60, 207, 61, 207, 62, 207, 63, 207, 64, 207, 65, 207, 66, 207, 67, 207, 68, 207, 69, 207, 70, 207, 71, 207, 72, 207, 73, 207, 74, 207, 75, 207, 76, 207, 77, 207, 78, 207, 79, 207, 80, 207, 81, 207, 82, 207, 83, 207, 84, 207, 85, 207, 86, 207, 87, 207, 88, 207, 89, 207, 90, 207, 170, 207, 171, 207, 172, 207, 173, 207, 174, 207, 175, 207, 176, 207, 177, 207, 178, 207, 179, 207, 180, 207, 181, 207, 182, 207, 183, 207, 184, 207, 185, 207, 186, 207, 187, 207, 188, 208, 3, 208, 4, 208, 5, 208, 6, 208, 7, 208, 8, 208, 9, 208, 10, 208, 11, 208, 12, 208, 13, 208, 14, 208, 15, 208, 16, 208, 17, 208, 18, 208, 19, 208, 20, 208, 21, 208, 22, 208, 23, 208, 24, 208, 25, 208, 26, 208, 27, 208, 28, 208, 29, 208, 30, 208, 31, 208, 32, 208, 33, 208, 34, 208, 35, 208, 36, 208, 37, 208, 38, 208, 39, 208, 40, 208, 41, 208, 42, 208, 43, 208, 44, 208, 45, 208, 46, 208, 47, 208, 48, 208, 49, 208, 50, 208, 51, 208, 52, 208, 53, 208, 54, 208, 55, 208, 56, 208, 57, 208, 58, 208, 59, 208, 60, 208, 61, 208, 62, 208, 63, 208, 64, 208, 65, 208, 66, 208, 67, 208, 68, 208, 69, 208, 70, 208, 71, 208, 72, 208, 73, 208, 74, 208, 75, 208, 76, 208, 77, 208, 78, 208, 79, 208, 80, 208, 81, 208, 82, 208, 83, 208, 84, 208, 85, 208, 86, 208, 87, 208, 88, 208, 89, 208, 90, 208, 91, 208, 170, 208, 171, 208, 172, 208, 173, 208, 174, 208, 175, 208, 176, 208, 177, 208, 178, 208, 179, 208, 180, 208, 181, 208, 182, 208, 183, 208, 184, 208, 185, 208, 186, 208, 187, 208, 188, 209, 3, 209, 4, 209, 5, 209, 6, 209, 7, 209, 8, 209, 9, 209, 10, 209, 11, 209, 12, 209, 13, 209, 14, 209, 15, 209, 16, 209, 17, 209, 18, 209, 19, 209, 20, 209, 21, 209, 22, 209, 23, 209, 24, 209, 25, 209, 26, 209, 27, 209, 28, 209, 29, 209, 30, 209, 31, 209, 32, 209, 33, 209, 34, 209, 35, 209, 36, 209, 37, 209, 38, 209, 39, 209, 40, 209, 41, 209, 42, 209, 43, 209, 44, 209, 45, 209, 46, 209, 47, 209, 48, 209, 49, 209, 50, 209, 51, 209, 52, 209, 53, 209, 54, 209, 55, 209, 56, 209, 57, 209, 58, 209, 59, 209, 60, 209, 61, 209, 62, 209, 63, 209, 64, 209, 65, 209, 66, 209, 67, 209, 68, 209, 69, 209, 70, 209, 71, 209, 72, 209, 73, 209, 74, 209, 75, 209, 76, 209, 77, 209, 78, 209, 79, 209, 80, 209, 81, 209, 82, 209, 83, 209, 84, 209, 85, 209, 86, 209, 87, 209, 88, 209, 89, 209, 90, 209, 91, 209, 169, 209, 170, 209, 171, 209, 172, 209, 173, 209, 174, 209, 175, 209, 176, 209, 177, 209, 178, 209, 179, 209, 180, 209, 181, 209, 182, 209, 183, 209, 184, 209, 185, 209, 186, 209, 187, 209, 188, 210, 3, 210, 4, 210, 5, 210, 6, 210, 7, 210, 8, 210, 9, 210, 10, 210, 11, 210, 12, 210, 13, 210, 14, 210, 15, 210, 16, 210, 17, 210, 18, 210, 19, 210, 20, 210, 21, 210, 22, 210, 23, 210, 24, 210, 25, 210, 26, 210, 27, 210, 28, 210, 29, 210, 30, 210, 31, 210, 32, 210, 33, 210, 34, 210, 35, 210, 36, 210, 37, 210, 38, 210, 39, 210, 40, 210, 41, 210, 42, 210, 43, 210, 44, 210, 45, 210, 46, 210, 47, 210, 48, 210, 49, 210, 50, 210, 51, 210, 52, 210, 53, 210, 54, 210, 55, 210, 56, 210, 57, 210, 58, 210, 59, 210, 60, 210, 61, 210, 62, 210, 63, 210, 64, 210, 65, 210, 66, 210, 67, 210, 68, 210, 69, 210, 70, 210, 71, 210, 72, 210, 73, 210, 74, 210, 75, 210, 76, 210, 77, 210, 78, 210, 79, 210, 80, 210, 81, 210, 82, 210, 83, 210, 84, 210, 85, 210, 86, 210, 87, 210, 88, 210, 89, 210, 90, 210, 91, 210, 92, 210, 169, 210, 170, 210, 171, 210, 172, 210, 173, 210, 174, 210, 175, 210, 176, 210, 177, 210, 178, 210, 179, 210, 180, 210, 181, 210, 182, 210, 183, 210, 184, 210, 185, 210, 186, 210, 187, 210, 188, 211, 3, 211, 4, 211, 5, 211, 6, 211, 7, 211, 8, 211, 9, 211, 10, 211, 11, 211, 12, 211, 13, 211, 14, 211, 15, 211, 16, 211, 17, 211, 18, 211, 19, 211, 20, 211, 21, 211, 22, 211, 23, 211, 24, 211, 25, 211, 26, 211, 27, 211, 28, 211, 29, 211, 30, 211, 31, 211, 32, 211, 33, 211, 34, 211, 35, 211, 36, 211, 37, 211, 38, 211, 39, 211, 40, 211, 41, 211, 42, 211, 43, 211, 44, 211, 45, 211, 46, 211, 47, 211, 48, 211, 49, 211, 50, 211, 51, 211, 52, 211, 53, 211, 54, 211, 55, 211, 56, 211, 57, 211, 58, 211, 59, 211, 60, 211, 61, 211, 62, 211, 63, 211, 64, 211, 65, 211, 66, 211, 67, 211, 68, 211, 69, 211, 70, 211, 71, 211, 72, 211, 73, 211, 74, 211, 75, 211, 76, 211, 77, 211, 78, 211, 79, 211, 80, 211, 81, 211, 82, 211, 83, 211, 84, 211, 85, 211, 86, 211, 87, 211, 88, 211, 89, 211, 90, 211, 91, 211, 92, 211, 93, 211, 169, 211, 170, 211, 171, 211, 172, 211, 173, 211, 174, 211, 175, 211, 176, 211, 177, 211, 178, 211, 179, 211, 180, 211, 181, 211, 182, 211, 183, 211, 184, 211, 185, 211, 186, 211, 187, 211, 188, 212, 3, 212, 4, 212, 5, 212, 6, 212, 7, 212, 8, 212, 9, 212, 10, 212, 11, 212, 12, 212, 13, 212, 14, 212, 15, 212, 16, 212, 17, 212, 18, 212, 19, 212, 20, 212, 21, 212, 22, 212, 23, 212, 24, 212, 25, 212, 26, 212, 27, 212, 28, 212, 29, 212, 30, 212, 31, 212, 32, 212, 33, 212, 34, 212, 35, 212, 36, 212, 37, 212, 38, 212, 39, 212, 40, 212, 41, 212, 42, 212, 43, 212, 44, 212, 45, 212, 46, 212, 47, 212, 48, 212, 49, 212, 50, 212, 51, 212, 52, 212, 53, 212, 54, 212, 55, 212, 56, 212, 57, 212, 58, 212, 59, 212, 60, 212, 61, 212, 62, 212, 63, 212, 64, 212, 65, 212, 66, 212, 67, 212, 68, 212, 69, 212, 70, 212, 71, 212, 72, 212, 73, 212, 74, 212, 75, 212, 76, 212, 77, 212, 78, 212, 79, 212, 80, 212, 81, 212, 82, 212, 83, 212, 84, 212, 85, 212, 86, 212, 87, 212, 88, 212, 89, 212, 90, 212, 91, 212, 92, 212, 93, 212, 94, 212, 169, 212, 170, 212, 171, 212, 172, 212, 173, 212, 174, 212, 175, 212, 176, 212, 177, 212, 178, 212, 179, 212, 180, 212, 181, 212, 182, 212, 183, 212, 184, 212, 185, 212, 186, 212, 187, 212, 188, 213, 3, 213, 4, 213, 5, 213, 6, 213, 7, 213, 8, 213, 9, 213, 10, 213, 11, 213, 12, 213, 13, 213, 14, 213, 15, 213, 16, 213, 17, 213, 18, 213, 19, 213, 20, 213, 21, 213, 22, 213, 23, 213, 24, 213, 25, 213, 26, 213, 27, 213, 28, 213, 29, 213, 30, 213, 31, 213, 32, 213, 33, 213, 34, 213, 35, 213, 36, 213, 37, 213, 38, 213, 39, 213, 40, 213, 41, 213, 42, 213, 43, 213, 44, 213, 45, 213, 46, 213, 47, 213, 48, 213, 49, 213, 50, 213, 51, 213, 52, 213, 53, 213, 54, 213, 55, 213, 56, 213, 57, 213, 58, 213, 59, 213, 60, 213, 61, 213, 62, 213, 63, 213, 64, 213, 65, 213, 66, 213, 67, 213, 68, 213, 69, 213, 70, 213, 71, 213, 72, 213, 73, 213, 74, 213, 75, 213, 76, 213, 77, 213, 78, 213, 79, 213, 80, 213, 81, 213, 82, 213, 83, 213, 84, 213, 85, 213, 86, 213, 87, 213, 88, 213, 89, 213, 90, 213, 91, 213, 92, 213, 93, 213, 94, 213, 95, 213, 169, 213, 170, 213, 171, 213, 172, 213, 173, 213, 174, 213, 175, 213, 176, 213, 177, 213, 178, 213, 179, 213, 180, 213, 181, 213, 182, 213, 183, 213, 184, 213, 185, 213, 186, 213, 187, 213, 188, 214, 3, 214, 4, 214, 5, 214, 6, 214, 7, 214, 8, 214, 9, 214, 10, 214, 11, 214, 12, 214, 13, 214, 14, 214, 15, 214, 16, 214, 17, 214, 18, 214, 19, 214, 20, 214, 21, 214, 22, 214, 23, 214, 24, 214, 25, 214, 26, 214, 27, 214, 28, 214, 29, 214, 30, 214, 31, 214, 32, 214, 33, 214, 34, 214, 35, 214, 36, 214, 37, 214, 38, 214, 39, 214, 40, 214, 41, 214, 42, 214, 43, 214, 44, 214, 45, 214, 46, 214, 47, 214, 48, 214, 49, 214, 50, 214, 51, 214, 52, 214, 53, 214, 54, 214, 55, 214, 56, 214, 57, 214, 58, 214, 59, 214, 60, 214, 61, 214, 62, 214, 63, 214, 64, 214, 65, 214, 66, 214, 67, 214, 68, 214, 69, 214, 70, 214, 71, 214, 72, 214, 73, 214, 74, 214, 75, 214, 76, 214, 77, 214, 78, 214, 79, 214, 80, 214, 81, 214, 82, 214, 83, 214, 84, 214, 85, 214, 86, 214, 87, 214, 88, 214, 89, 214, 90, 214, 91, 214, 92, 214, 93, 214, 94, 214, 95, 214, 169, 214, 170, 214, 171, 214, 172, 214, 173, 214, 174, 214, 175, 214, 176, 214, 177, 214, 178, 214, 179, 214, 180, 214, 181, 214, 182, 214, 183, 214, 184, 214, 185, 214, 186, 214, 187, 214, 188, 215, 3, 215, 4, 215, 5, 215, 6, 215, 7, 215, 8, 215, 9, 215, 10, 215, 11, 215, 12, 215, 13, 215, 14, 215, 15, 215, 16, 215, 17, 215, 18, 215, 19, 215, 20, 215, 21, 215, 22, 215, 23, 215, 24, 215, 25, 215, 26, 215, 27, 215, 28, 215, 29, 215, 30, 215, 31, 215, 32, 215, 33, 215, 34, 215, 35, 215, 36, 215, 37, 215, 38, 215, 39, 215, 40, 215, 41, 215, 42, 215, 43, 215, 44, 215, 45, 215, 46, 215, 47, 215, 48, 215, 49, 215, 50, 215, 51, 215, 52, 215, 53, 215, 54, 215, 55, 215, 56, 215, 57, 215, 58, 215, 59, 215, 60, 215, 61, 215, 62, 215, 63, 215, 64, 215, 65, 215, 66, 215, 67, 215, 68, 215, 69, 215, 70, 215, 71, 215, 72, 215, 73, 215, 74, 215, 75, 215, 76, 215, 77, 215, 78, 215, 79, 215, 80, 215, 81, 215, 82, 215, 83, 215, 84, 215, 85, 215, 86, 215, 87, 215, 88, 215, 89, 215, 90, 215, 91, 215, 92, 215, 93, 215, 94, 215, 95, 215, 96, 215, 169, 215, 170, 215, 171, 215, 172, 215, 173, 215, 174, 215, 175, 215, 176, 215, 177, 215, 178, 215, 179, 215, 180, 215, 181, 215, 182, 215, 183, 215, 184, 215, 185, 215, 186, 215, 187, 215, 188, 216, 3, 216, 4, 216, 5, 216, 6, 216, 7, 216, 8, 216, 9, 216, 10, 216, 11, 216, 12, 216, 13, 216, 14, 216, 15, 216, 16, 216, 17, 216, 18, 216, 19, 216, 20, 216, 21, 216, 22, 216, 23, 216, 24, 216, 25, 216, 26, 216, 27, 216, 28, 216, 29, 216, 30, 216, 31, 216, 32, 216, 33, 216, 34, 216, 35, 216, 36, 216, 37, 216, 38, 216, 39, 216, 40, 216, 41, 216, 42, 216, 43, 216, 44, 216, 45, 216, 46, 216, 47, 216, 48, 216, 49, 216, 50, 216, 51, 216, 52, 216, 53, 216, 54, 216, 55, 216, 56, 216, 57, 216, 58, 216, 59, 216, 60, 216, 61, 216, 62, 216, 63, 216, 64, 216, 65, 216, 66, 216, 67, 216, 68, 216, 69, 216, 70, 216, 71, 216, 72, 216, 73, 216, 74, 216, 75, 216, 76, 216, 77, 216, 78, 216, 79, 216, 80, 216, 81, 216, 82, 216, 83, 216, 84, 216, 85, 216, 86, 216, 87, 216, 88, 216, 89, 216, 90, 216, 91, 216, 92, 216, 93, 216, 94, 216, 95, 216, 96, 216, 97, 216, 169, 216, 170, 216, 171, 216, 172, 216, 173, 216, 174, 216, 175, 216, 176, 216, 177, 216, 178, 216, 179, 216, 180, 216, 181, 216, 182, 216, 183, 216, 184, 216, 185, 216, 186, 216, 187, 216, 188, 217, 3, 217, 4, 217, 5, 217, 6, 217, 7, 217, 8, 217, 9, 217, 10, 217, 11, 217, 12, 217, 13, 217, 14, 217, 15, 217, 16, 217, 17, 217, 18, 217, 19, 217, 20, 217, 21, 217, 22, 217, 23, 217, 24, 217, 25, 217, 26, 217, 27, 217, 28, 217, 29, 217, 30, 217, 31, 217, 32, 217, 33, 217, 34, 217, 35, 217, 36, 217, 37, 217, 38, 217, 39, 217, 40, 217, 41, 217, 42, 217, 43, 217, 44, 217, 45, 217, 46, 217, 47, 217, 48, 217, 49, 217, 50, 217, 51, 217, 52, 217, 53, 217, 54, 217, 55, 217, 56, 217, 57, 217, 58, 217, 59, 217, 60, 217, 61, 217, 62, 217, 63, 217, 64, 217, 65, 217, 66, 217, 67, 217, 68, 217, 69, 217, 70, 217, 71, 217, 72, 217, 73, 217, 74, 217, 75, 217, 76, 217, 77, 217, 78, 217, 79, 217, 80, 217, 81, 217, 82, 217, 83, 217, 84, 217, 85, 217, 86, 217, 87, 217, 88, 217, 89, 217, 90, 217, 91, 217, 92, 217, 93, 217, 94, 217, 95, 217, 96, 217, 97, 217, 169, 217, 170, 217, 171, 217, 172, 217, 173, 217, 174, 217, 175, 217, 176, 217, 177, 217, 178, 217, 179, 217, 180, 217, 181, 217, 182, 217, 183, 217, 184, 217, 185, 217, 186, 217, 187, 217, 188, 218, 3, 218, 4, 218, 5, 218, 6, 218, 7, 218, 8, 218, 9, 218, 10, 218, 11, 218, 12, 218, 13, 218, 14, 218, 15, 218, 16, 218, 17, 218, 18, 218, 19, 218, 20, 218, 21, 218, 22, 218, 23, 218, 24, 218, 25, 218, 26, 218, 27, 218, 28, 218, 29, 218, 30, 218, 31, 218, 32, 218, 33, 218, 34, 218, 35, 218, 36, 218, 37, 218, 38, 218, 39, 218, 40, 218, 41, 218, 42, 218, 43, 218, 44, 218, 45, 218, 46, 218, 47, 218, 48, 218, 49, 218, 50, 218, 51, 218, 52, 218, 53, 218, 54, 218, 55, 218, 56, 218, 57, 218, 58, 218, 59, 218, 60, 218, 61, 218, 62, 218, 63, 218, 64, 218, 65, 218, 66, 218, 67, 218, 68, 218, 69, 218, 70, 218, 71, 218, 72, 218, 73, 218, 74, 218, 75, 218, 76, 218, 77, 218, 78, 218, 79, 218, 80, 218, 81, 218, 82, 218, 83, 218, 84, 218, 85, 218, 86, 218, 87, 218, 88, 218, 89, 218, 90, 218, 91, 218, 92, 218, 93, 218, 94, 218, 95, 218, 96, 218, 97, 218, 98, 218, 169, 218, 170, 218, 171, 218, 172, 218, 173, 218, 174, 218, 175, 218, 176, 218, 177, 218, 178, 218, 179, 218, 180, 218, 181, 218, 182, 218, 183, 218, 184, 218, 185, 218, 186, 218, 187, 218, 188, 219, 3, 219, 4, 219, 5, 219, 6, 219, 7, 219, 8, 219, 9, 219, 10, 219, 11, 219, 12, 219, 13, 219, 14, 219, 15, 219, 16, 219, 17, 219, 18, 219, 19, 219, 20, 219, 21, 219, 22, 219, 23, 219, 24, 219, 25, 219, 26, 219, 27, 219, 28, 219, 29, 219, 30, 219, 31, 219, 32, 219, 33, 219, 34, 219, 35, 219, 36, 219, 37, 219, 38, 219, 39, 219, 40, 219, 41, 219, 42, 219, 43, 219, 44, 219, 45, 219, 46, 219, 47, 219, 48, 219, 49, 219, 50, 219, 51, 219, 52, 219, 53, 219, 54, 219, 55, 219, 56, 219, 57, 219, 58, 219, 59, 219, 60, 219, 61, 219, 62, 219, 63, 219, 64, 219, 65, 219, 66, 219, 67, 219, 68, 219, 69, 219, 70, 219, 71, 219, 72, 219, 73, 219, 74, 219, 75, 219, 76, 219, 77, 219, 78, 219, 79, 219, 80, 219, 81, 219, 82, 219, 83, 219, 84, 219, 85, 219, 86, 219, 87, 219, 88, 219, 89, 219, 90, 219, 91, 219, 92, 219, 93, 219, 94, 219, 95, 219, 96, 219, 97, 219, 98, 219, 99, 219, 168, 219, 169, 219, 170, 219, 171, 219, 172, 219, 173, 219, 174, 219, 175, 219, 176, 219, 177, 219, 178, 219, 179, 219, 180, 219, 181, 219, 182, 219, 183, 219, 184, 219, 185, 219, 186, 219, 187, 219, 188, 220, 3, 220, 4, 220, 5, 220, 6, 220, 7, 220, 8, 220, 9, 220, 10, 220, 11, 220, 12, 220, 13, 220, 14, 220, 15, 220, 16, 220, 17, 220, 18, 220, 19, 220, 20, 220, 21, 220, 22, 220, 23, 220, 24, 220, 25, 220, 26, 220, 27, 220, 28, 220, 29, 220, 30, 220, 31, 220, 32, 220, 33, 220, 34, 220, 35, 220, 36, 220, 37, 220, 38, 220, 39, 220, 40, 220, 41, 220, 42, 220, 43, 220, 44, 220, 45, 220, 46, 220, 47, 220, 48, 220, 49, 220, 50, 220, 51, 220, 52, 220, 53, 220, 54, 220, 55, 220, 56, 220, 57, 220, 58, 220, 59, 220, 60, 220, 61, 220, 62, 220, 63, 220, 64, 220, 65, 220, 66, 220, 67, 220, 68, 220, 69, 220, 70, 220, 71, 220, 72, 220, 73, 220, 74, 220, 75, 220, 76, 220, 77, 220, 78, 220, 79, 220, 80, 220, 81, 220, 82, 220, 83, 220, 84, 220, 85, 220, 86, 220, 87, 220, 88, 220, 89, 220, 90, 220, 91, 220, 92, 220, 93, 220, 94, 220, 95, 220, 96, 220, 97, 220, 98, 220, 99, 220, 168, 220, 169, 220, 170, 220, 171, 220, 172, 220, 173, 220, 174, 220, 175, 220, 176, 220, 177, 220, 178, 220, 179, 220, 180, 220, 181, 220, 182, 220, 183, 220, 184, 220, 185, 220, 186, 220, 187, 220, 188, 221, 3, 221, 4, 221, 5, 221, 6, 221, 7, 221, 8, 221, 9, 221, 10, 221, 11, 221, 12, 221, 13, 221, 14, 221, 15, 221, 16, 221, 17, 221, 18, 221, 19, 221, 20, 221, 21, 221, 22, 221, 23, 221, 24, 221, 25, 221, 26, 221, 27, 221, 28, 221, 29, 221, 30, 221, 31, 221, 32, 221, 33, 221, 34, 221, 35, 221, 36, 221, 37, 221, 38, 221, 39, 221, 40, 221, 41, 221, 42, 221, 43, 221, 44, 221, 45, 221, 46, 221, 47, 221, 48, 221, 49, 221, 50, 221, 51, 221, 52, 221, 53, 221, 54, 221, 55, 221, 56, 221, 57, 221, 58, 221, 59, 221, 60, 221, 61, 221, 62, 221, 63, 221, 64, 221, 65, 221, 66, 221, 67, 221, 68, 221, 69, 221, 70, 221, 71, 221, 72, 221, 73, 221, 74, 221, 75, 221, 76, 221, 77, 221, 78, 221, 79, 221, 80, 221, 81, 221, 82, 221, 83, 221, 84, 221, 85, 221, 86, 221, 87, 221, 88, 221, 89, 221, 90, 221, 91, 221, 92, 221, 93, 221, 94, 221, 95, 221, 96, 221, 97, 221, 98, 221, 99, 221, 100, 221, 168, 221, 169, 221, 170, 221, 171, 221, 172, 221, 173, 221, 174, 221, 175, 221, 176, 221, 177, 221, 178, 221, 179, 221, 180, 221, 181, 221, 182, 221, 183, 221, 184, 221, 185, 221, 186, 221, 187, 221, 188, 222, 3, 222, 4, 222, 5, 222, 6, 222, 7, 222, 8, 222, 9, 222, 10, 222, 11, 222, 12, 222, 13, 222, 14, 222, 15, 222, 16, 222, 17, 222, 18, 222, 19, 222, 20, 222, 21, 222, 22, 222, 23, 222, 24, 222, 25, 222, 26, 222, 27, 222, 28, 222, 29, 222, 30, 222, 31, 222, 32, 222, 33, 222, 34, 222, 35, 222, 36, 222, 37, 222, 38, 222, 39, 222, 40, 222, 41, 222, 42, 222, 43, 222, 44, 222, 45, 222, 46, 222, 47, 222, 48, 222, 49, 222, 50, 222, 51, 222, 52, 222, 53, 222, 54, 222, 55, 222, 56, 222, 57, 222, 58, 222, 59, 222, 60, 222, 61, 222, 62, 222, 63, 222, 64, 222, 65, 222, 66, 222, 67, 222, 68, 222, 69, 222, 70, 222, 71, 222, 72, 222, 73, 222, 74, 222, 75, 222, 76, 222, 77, 222, 78, 222, 79, 222, 80, 222, 81, 222, 82, 222, 83, 222, 84, 222, 85, 222, 86, 222, 87, 222, 88, 222, 89, 222, 90, 222, 91, 222, 92, 222, 93, 222, 94, 222, 95, 222, 96, 222, 97, 222, 98, 222, 99, 222, 100, 222, 101, 222, 168, 222, 169, 222, 170, 222, 171, 222, 172, 222, 173, 222, 174, 222, 175, 222, 176, 222, 177, 222, 178, 222, 179, 222, 180, 222, 181, 222, 182, 222, 183, 222, 184, 222, 185, 222, 186, 222, 187, 222, 188, 223, 3, 223, 4, 223, 5, 223, 6, 223, 7, 223, 8, 223, 9, 223, 10, 223, 11, 223, 12, 223, 13, 223, 14, 223, 15, 223, 16, 223, 17, 223, 18, 223, 19, 223, 20, 223, 21, 223, 22, 223, 23, 223, 24, 223, 25, 223, 26, 223, 27, 223, 28, 223, 29, 223, 30, 223, 31, 223, 32, 223, 33, 223, 34, 223, 35, 223, 36, 223, 37, 223, 38, 223, 39, 223, 40, 223, 41, 223, 42, 223, 43, 223, 44, 223, 45, 223, 46, 223, 47, 223, 48, 223, 49, 223, 50, 223, 51, 223, 52, 223, 53, 223, 54, 223, 55, 223, 56, 223, 57, 223, 58, 223, 59, 223, 60, 223, 61, 223, 62, 223, 63, 223, 64, 223, 65, 223, 66, 223, 67, 223, 68, 223, 69, 223, 70, 223, 71, 223, 72, 223, 73, 223, 74, 223, 75, 223, 76, 223, 77, 223, 78, 223, 79, 223, 80, 223, 81, 223, 82, 223, 83, 223, 84, 223, 85, 223, 86, 223, 87, 223, 88, 223, 89, 223, 90, 223, 91, 223, 92, 223, 93, 223, 94, 223, 95, 223, 96, 223, 97, 223, 98, 223, 99, 223, 100, 223, 101, 223, 168, 223, 169, 223, 170, 223, 171, 223, 172, 223, 173, 223, 174, 223, 175, 223, 176, 223, 177, 223, 178, 223, 179, 223, 180, 223, 181, 223, 182, 223, 183, 223, 184, 223, 185, 223, 186, 223, 187, 223, 188, 224, 3, 224, 4, 224, 5, 224, 6, 224, 7, 224, 8, 224, 9, 224, 10, 224, 11, 224, 12, 224, 13, 224, 14, 224, 15, 224, 16, 224, 17, 224, 18, 224, 19, 224, 20, 224, 21, 224, 22, 224, 23, 224, 24, 224, 25, 224, 26, 224, 27, 224, 28, 224, 29, 224, 30, 224, 31, 224, 32, 224, 33, 224, 34, 224, 35, 224, 36, 224, 37, 224, 38, 224, 39, 224, 40, 224, 41, 224, 42, 224, 43, 224, 44, 224, 45, 224, 46, 224, 47, 224, 48, 224, 49, 224, 50, 224, 51, 224, 52, 224, 53, 224, 54, 224, 55, 224, 56, 224, 57, 224, 58, 224, 59, 224, 60, 224, 61, 224, 62, 224, 63, 224, 64, 224, 65, 224, 66, 224, 67, 224, 68, 224, 69, 224, 70, 224, 71, 224, 72, 224, 73, 224, 74, 224, 75, 224, 76, 224, 77, 224, 78, 224, 79, 224, 80, 224, 81, 224, 82, 224, 83, 224, 84, 224, 85, 224, 86, 224, 87, 224, 88, 224, 89, 224, 90, 224, 91, 224, 92, 224, 93, 224, 94, 224, 95, 224, 96, 224, 97, 224, 98, 224, 99, 224, 100, 224, 101, 224, 102, 224, 168, 224, 169, 224, 170, 224, 171, 224, 172, 224, 173, 224, 174, 224, 175, 224, 176, 224, 177, 224, 178, 224, 179, 224, 180, 224, 181, 224, 182, 224, 183, 224, 184, 224, 185, 224, 186, 224, 187, 224, 188, 225, 3, 225, 4, 225, 5, 225, 6, 225, 7, 225, 8, 225, 9, 225, 10, 225, 11, 225, 12, 225, 13, 225, 14, 225, 15, 225, 16, 225, 17, 225, 18, 225, 19, 225, 20, 225, 21, 225, 22, 225, 23, 225, 24, 225, 25, 225, 26, 225, 27, 225, 28, 225, 29, 225, 30, 225, 31, 225, 32, 225, 33, 225, 34, 225, 35, 225, 36, 225, 37, 225, 38, 225, 39, 225, 40, 225, 41, 225, 42, 225, 43, 225, 44, 225, 45, 225, 46, 225, 47, 225, 48, 225, 49, 225, 50, 225, 51, 225, 52, 225, 53, 225, 54, 225, 55, 225, 56, 225, 57, 225, 58, 225, 59, 225, 60, 225, 61, 225, 62, 225, 63, 225, 64, 225, 65, 225, 66, 225, 67, 225, 68, 225, 69, 225, 70, 225, 71, 225, 72, 225, 73, 225, 74, 225, 75, 225, 76, 225, 77, 225, 78, 225, 79, 225, 80, 225, 81, 225, 82, 225, 83, 225, 84, 225, 85, 225, 86, 225, 87, 225, 88, 225, 89, 225, 90, 225, 91, 225, 92, 225, 93, 225, 94, 225, 95, 225, 96, 225, 97, 225, 98, 225, 99, 225, 100, 225, 101, 225, 102, 225, 103, 225, 124, 225, 125, 225, 126, 225, 127, 225, 168, 225, 169, 225, 170, 225, 171, 225, 172, 225, 173, 225, 174, 225, 175, 225, 176, 225, 177, 225, 178, 225, 179, 225, 180, 225, 181, 225, 182, 225, 183, 225, 184, 225, 185, 225, 186, 225, 187, 225, 188, 226, 3, 226, 4, 226, 5, 226, 6, 226, 7, 226, 8, 226, 9, 226, 10, 226, 11, 226, 12, 226, 13, 226, 14, 226, 15, 226, 16, 226, 17, 226, 18, 226, 19, 226, 20, 226, 21, 226, 22, 226, 23, 226, 24, 226, 25, 226, 26, 226, 27, 226, 28, 226, 29, 226, 30, 226, 31, 226, 32, 226, 33, 226, 34, 226, 35, 226, 36, 226, 37, 226, 38, 226, 39, 226, 40, 226, 41, 226, 42, 226, 43, 226, 44, 226, 45, 226, 46, 226, 47, 226, 48, 226, 49, 226, 50, 226, 51, 226, 52, 226, 53, 226, 54, 226, 55, 226, 56, 226, 57, 226, 58, 226, 59, 226, 60, 226, 61, 226, 62, 226, 63, 226, 64, 226, 65, 226, 66, 226, 67, 226, 68, 226, 69, 226, 70, 226, 71, 226, 72, 226, 73, 226, 74, 226, 75, 226, 76, 226, 77, 226, 78, 226, 79, 226, 80, 226, 81, 226, 82, 226, 83, 226, 84, 226, 85, 226, 86, 226, 87, 226, 88, 226, 89, 226, 90, 226, 91, 226, 92, 226, 93, 226, 94, 226, 95, 226, 96, 226, 97, 226, 98, 226, 99, 226, 100, 226, 101, 226, 102, 226, 103, 226, 104, 226, 105, 226, 106, 226, 118, 226, 119, 226, 120, 226, 121, 226, 122, 226, 123, 226, 124, 226, 125, 226, 126, 226, 127, 226, 128, 226, 129, 226, 167, 226, 168, 226, 169, 226, 170, 226, 171, 226, 172, 226, 173, 226, 174, 226, 175, 226, 176, 226, 177, 226, 178, 226, 179, 226, 180, 226, 181, 226, 182, 226, 183, 226, 184, 226, 185, 226, 186, 226, 187, 226, 188, 227, 3, 227, 4, 227, 5, 227, 6, 227, 7, 227, 8, 227, 9, 227, 10, 227, 11, 227, 12, 227, 13, 227, 14, 227, 15, 227, 16, 227, 17, 227, 18, 227, 19, 227, 20, 227, 21, 227, 22, 227, 23, 227, 24, 227, 25, 227, 26, 227, 27, 227, 28, 227, 29, 227, 30, 227, 31, 227, 32, 227, 33, 227, 34, 227, 35, 227, 36, 227, 37, 227, 38, 227, 39, 227, 40, 227, 41, 227, 42, 227, 43, 227, 44, 227, 45, 227, 46, 227, 47, 227, 48, 227, 49, 227, 50, 227, 51, 227, 52, 227, 53, 227, 54, 227, 55, 227, 56, 227, 57, 227, 58, 227, 59, 227, 60, 227, 61, 227, 62, 227, 63, 227, 64, 227, 65, 227, 66, 227, 67, 227, 68, 227, 69, 227, 70, 227, 71, 227, 72, 227, 73, 227, 74, 227, 75, 227, 76, 227, 77, 227, 78, 227, 79, 227, 80, 227, 81, 227, 82, 227, 83, 227, 84, 227, 85, 227, 86, 227, 87, 227, 88, 227, 89, 227, 90, 227, 91, 227, 92, 227, 93, 227, 94, 227, 95, 227, 96, 227, 97, 227, 98, 227, 99, 227, 100, 227, 101, 227, 102, 227, 103, 227, 104, 227, 105, 227, 106, 227, 107, 227, 108, 227, 109, 227, 115, 227, 116, 227, 117, 227, 118, 227, 119, 227, 120, 227, 121, 227, 122, 227, 123, 227, 124, 227, 125, 227, 126, 227, 127, 227, 128, 227, 129, 227, 130, 227, 131, 227, 167, 227, 168, 227, 169, 227, 170, 227, 171, 227, 172, 227, 173, 227, 174, 227, 175, 227, 176, 227, 177, 227, 178, 227, 179, 227, 180, 227, 181, 227, 182, 227, 183, 227, 184, 227, 185, 227, 186, 227, 187, 227, 188, 228, 3, 228, 4, 228, 5, 228, 6, 228, 7, 228, 8, 228, 9, 228, 10, 228, 11, 228, 12, 228, 13, 228, 14, 228, 15, 228, 16, 228, 17, 228, 18, 228, 19, 228, 20, 228, 21, 228, 22, 228, 23, 228, 24, 228, 25, 228, 26, 228, 27, 228, 28, 228, 29, 228, 30, 228, 31, 228, 32, 228, 33, 228, 34, 228, 35, 228, 36, 228, 37, 228, 38, 228, 39, 228, 40, 228, 41, 228, 42, 228, 43, 228, 44, 228, 45, 228, 46, 228, 47, 228, 48, 228, 49, 228, 50, 228, 51, 228, 52, 228, 53, 228, 54, 228, 55, 228, 56, 228, 57, 228, 58, 228, 59, 228, 60, 228, 61, 228, 62, 228, 63, 228, 64, 228, 65, 228, 66, 228, 67, 228, 68, 228, 69, 228, 70, 228, 71, 228, 72, 228, 73, 228, 74, 228, 75, 228, 76, 228, 77, 228, 78, 228, 79, 228, 80, 228, 81, 228, 82, 228, 83, 228, 84, 228, 85, 228, 86, 228, 87, 228, 88, 228, 89, 228, 90, 228, 91, 228, 92, 228, 93, 228, 94, 228, 95, 228, 96, 228, 97, 228, 98, 228, 99, 228, 100, 228, 101, 228, 102, 228, 103, 228, 104, 228, 105, 228, 106, 228, 107, 228, 108, 228, 109, 228, 110, 228, 111, 228, 112, 228, 113, 228, 114, 228, 115, 228, 116, 228, 117, 228, 118, 228, 119, 228, 120, 228, 121, 228, 122, 228, 123, 228, 124, 228, 125, 228, 126, 228, 127, 228, 128, 228, 129, 228, 130, 228, 131, 228, 132, 228, 133, 228, 166, 228, 167, 228, 168, 228, 169, 228, 170, 228, 171, 228, 172, 228, 173, 228, 174, 228, 175, 228, 176, 228, 177, 228, 178, 228, 179, 228, 180, 228, 181, 228, 182, 228, 183, 228, 184, 228, 185, 228, 186, 228, 187, 228, 188, 229, 3, 229, 4, 229, 5, 229, 6, 229, 7, 229, 8, 229, 9, 229, 10, 229, 11, 229, 12, 229, 13, 229, 14, 229, 15, 229, 16, 229, 17, 229, 18, 229, 19, 229, 20, 229, 21, 229, 22, 229, 23, 229, 24, 229, 25, 229, 26, 229, 27, 229, 28, 229, 29, 229, 30, 229, 31, 229, 32, 229, 33, 229, 34, 229, 35, 229, 36, 229, 37, 229, 38, 229, 39, 229, 40, 229, 41, 229, 42, 229, 43, 229, 44, 229, 45, 229, 46, 229, 47, 229, 48, 229, 49, 229, 50, 229, 51, 229, 52, 229, 53, 229, 54, 229, 55, 229, 56, 229, 57, 229, 58, 229, 59, 229, 60, 229, 61, 229, 62, 229, 63, 229, 64, 229, 65, 229, 66, 229, 67, 229, 68, 229, 69, 229, 70, 229, 71, 229, 72, 229, 73, 229, 74, 229, 75, 229, 76, 229, 77, 229, 78, 229, 79, 229, 80, 229, 81, 229, 82, 229, 83, 229, 84, 229, 85, 229, 86, 229, 87, 229, 88, 229, 89, 229, 90, 229, 91, 229, 92, 229, 93, 229, 94, 229, 95, 229, 96, 229, 97, 229, 98, 229, 99, 229, 100, 229, 101, 229, 102, 229, 103, 229, 104, 229, 105, 229, 106, 229, 107, 229, 108, 229, 109, 229, 110, 229, 111, 229, 112, 229, 113, 229, 114, 229, 115, 229, 116, 229, 117, 229, 118, 229, 119, 229, 120, 229, 121, 229, 122, 229, 123, 229, 124, 229, 125, 229, 126, 229, 127, 229, 128, 229, 129, 229, 130, 229, 131, 229, 132, 229, 133, 229, 134, 229, 135, 229, 166, 229, 167, 229, 168, 229, 169, 229, 170, 229, 171, 229, 172, 229, 173, 229, 174, 229, 175, 229, 176, 229, 177, 229, 178, 229, 179, 229, 180, 229, 181, 229, 182, 229, 183, 229, 184, 229, 185, 229, 186, 229, 187, 229, 188, 230, 3, 230, 4, 230, 5, 230, 6, 230, 7, 230, 8, 230, 9, 230, 10, 230, 11, 230, 12, 230, 13, 230, 14, 230, 15, 230, 16, 230, 17, 230, 18, 230, 19, 230, 20, 230, 21, 230, 22, 230, 23, 230, 24, 230, 25, 230, 26, 230, 27, 230, 28, 230, 29, 230, 30, 230, 31, 230, 32, 230, 33, 230, 34, 230, 35, 230, 36, 230, 37, 230, 38, 230, 39, 230, 40, 230, 41, 230, 42, 230, 43, 230, 44, 230, 45, 230, 46, 230, 47, 230, 48, 230, 49, 230, 50, 230, 51, 230, 52, 230, 53, 230, 54, 230, 55, 230, 56, 230, 57, 230, 58, 230, 59, 230, 60, 230, 61, 230, 62, 230, 63, 230, 64, 230, 65, 230, 66, 230, 67, 230, 68, 230, 69, 230, 70, 230, 71, 230, 72, 230, 73, 230, 74, 230, 75, 230, 76, 230, 77, 230, 78, 230, 79, 230, 80, 230, 81, 230, 82, 230, 83, 230, 84, 230, 85, 230, 86, 230, 87, 230, 88, 230, 89, 230, 90, 230, 91, 230, 92, 230, 93, 230, 94, 230, 95, 230, 96, 230, 97, 230, 98, 230, 99, 230, 100, 230, 101, 230, 102, 230, 103, 230, 104, 230, 105, 230, 106, 230, 107, 230, 108, 230, 109, 230, 110, 230, 111, 230, 112, 230, 113, 230, 114, 230, 115, 230, 116, 230, 117, 230, 118, 230, 119, 230, 120, 230, 121, 230, 122, 230, 123, 230, 124, 230, 125, 230, 126, 230, 127, 230, 128, 230, 129, 230, 130, 230, 131, 230, 132, 230, 133, 230, 134, 230, 135, 230, 136, 230, 137, 230, 165, 230, 166, 230, 167, 230, 168, 230, 169, 230, 170, 230, 171, 230, 172, 230, 173, 230, 174, 230, 175, 230, 176, 230, 177, 230, 178, 230, 179, 230, 180, 230, 181, 230, 182, 230, 183, 230, 184, 230, 185, 230, 186, 230, 187, 230, 188, 231, 3, 231, 4, 231, 5, 231, 6, 231, 7, 231, 8, 231, 9, 231, 10, 231, 11, 231, 12, 231, 13, 231, 14, 231, 15, 231, 16, 231, 17, 231, 18, 231, 19, 231, 20, 231, 21, 231, 22, 231, 23, 231, 24, 231, 25, 231, 26, 231, 27, 231, 28, 231, 29, 231, 30, 231, 31, 231, 32, 231, 33, 231, 34, 231, 35, 231, 36, 231, 37, 231, 38, 231, 39, 231, 40, 231, 41, 231, 42, 231, 43, 231, 44, 231, 45, 231, 46, 231, 47, 231, 48, 231, 49, 231, 50, 231, 51, 231, 52, 231, 53, 231, 54, 231, 55, 231, 56, 231, 57, 231, 58, 231, 59, 231, 60, 231, 61, 231, 62, 231, 63, 231, 64, 231, 65, 231, 66, 231, 67, 231, 68, 231, 69, 231, 70, 231, 71, 231, 72, 231, 73, 231, 74, 231, 75, 231, 76, 231, 77, 231, 78, 231, 79, 231, 80, 231, 81, 231, 82, 231, 83, 231, 84, 231, 85, 231, 86, 231, 87, 231, 88, 231, 89, 231, 90, 231, 91, 231, 92, 231, 93, 231, 94, 231, 95, 231, 96, 231, 97, 231, 98, 231, 99, 231, 100, 231, 101, 231, 102, 231, 103, 231, 104, 231, 105, 231, 106, 231, 107, 231, 108, 231, 109, 231, 110, 231, 111, 231, 112, 231, 113, 231, 114, 231, 115, 231, 116, 231, 117, 231, 118, 231, 119, 231, 120, 231, 121, 231, 122, 231, 123, 231, 124, 231, 125, 231, 126, 231, 127, 231, 128, 231, 129, 231, 130, 231, 131, 231, 132, 231, 133, 231, 134, 231, 135, 231, 136, 231, 137, 231, 138, 231, 139, 231, 164, 231, 165, 231, 166, 231, 167, 231, 168, 231, 169, 231, 170, 231, 171, 231, 172, 231, 173, 231, 174, 231, 175, 231, 176, 231, 177, 231, 178, 231, 179, 231, 180, 231, 181, 231, 182, 231, 183, 231, 184, 231, 185, 231, 186, 231, 187, 231, 188, 232, 3, 232, 4, 232, 5, 232, 6, 232, 7, 232, 8, 232, 9, 232, 10, 232, 11, 232, 12, 232, 13, 232, 14, 232, 15, 232, 16, 232, 17, 232, 18, 232, 19, 232, 20, 232, 21, 232, 22, 232, 23, 232, 24, 232, 25, 232, 26, 232, 27, 232, 28, 232, 29, 232, 30, 232, 31, 232, 32, 232, 33, 232, 34, 232, 35, 232, 36, 232, 37, 232, 38, 232, 39, 232, 40, 232, 41, 232, 42, 232, 43, 232, 44, 232, 45, 232, 46, 232, 47, 232, 48, 232, 49, 232, 50, 232, 51, 232, 52, 232, 53, 232, 54, 232, 55, 232, 56, 232, 57, 232, 58, 232, 59, 232, 60, 232, 61, 232, 62, 232, 63, 232, 64, 232, 65, 232, 66, 232, 67, 232, 68, 232, 69, 232, 70, 232, 71, 232, 72, 232, 73, 232, 74, 232, 75, 232, 76, 232, 77, 232, 78, 232, 79, 232, 80, 232, 81, 232, 82, 232, 83, 232, 84, 232, 85, 232, 86, 232, 87, 232, 88, 232, 89, 232, 90, 232, 91, 232, 92, 232, 93, 232, 94, 232, 95, 232, 96, 232, 97, 232, 98, 232, 99, 232, 100, 232, 101, 232, 102, 232, 103, 232, 104, 232, 105, 232, 106, 232, 107, 232, 108, 232, 109, 232, 110, 232, 111, 232, 112, 232, 113, 232, 114, 232, 115, 232, 116, 232, 117, 232, 118, 232, 119, 232, 120, 232, 121, 232, 122, 232, 123, 232, 124, 232, 125, 232, 126, 232, 127, 232, 128, 232, 129, 232, 130, 232, 131, 232, 132, 232, 133, 232, 134, 232, 135, 232, 136, 232, 137, 232, 138, 232, 139, 232, 140, 232, 141, 232, 142, 232, 164, 232, 165, 232, 166, 232, 167, 232, 168, 232, 169, 232, 170, 232, 171, 232, 172, 232, 173, 232, 174, 232, 175, 232, 176, 232, 177, 232, 178, 232, 179, 232, 180, 232, 181, 232, 182, 232, 183, 232, 184, 232, 185, 232, 186, 232, 187, 232, 188, 233, 3, 233, 4, 233, 5, 233, 6, 233, 7, 233, 8, 233, 9, 233, 10, 233, 11, 233, 12, 233, 13, 233, 14, 233, 15, 233, 16, 233, 17, 233, 18, 233, 19, 233, 20, 233, 21, 233, 22, 233, 23, 233, 24, 233, 25, 233, 26, 233, 27, 233, 28, 233, 29, 233, 30, 233, 31, 233, 32, 233, 33, 233, 34, 233, 35, 233, 36, 233, 37, 233, 38, 233, 39, 233, 40, 233, 41, 233, 42, 233, 43, 233, 44, 233, 45, 233, 46, 233, 47, 233, 48, 233, 49, 233, 50, 233, 51, 233, 52, 233, 53, 233, 54, 233, 55, 233, 56, 233, 57, 233, 58, 233, 59, 233, 60, 233, 61, 233, 62, 233, 63, 233, 64, 233, 65, 233, 66, 233, 67, 233, 68, 233, 69, 233, 70, 233, 71, 233, 72, 233, 73, 233, 74, 233, 75, 233, 76, 233, 77, 233, 78, 233, 79, 233, 80, 233, 81, 233, 82, 233, 83, 233, 84, 233, 85, 233, 86, 233, 87, 233, 88, 233, 89, 233, 90, 233, 91, 233, 92, 233, 93, 233, 94, 233, 95, 233, 96, 233, 97, 233, 98, 233, 99, 233, 100, 233, 101, 233, 102, 233, 103, 233, 104, 233, 105, 233, 106, 233, 107, 233, 108, 233, 109, 233, 110, 233, 111, 233, 112, 233, 113, 233, 114, 233, 115, 233, 116, 233, 117, 233, 118, 233, 119, 233, 120, 233, 121, 233, 122, 233, 123, 233, 124, 233, 125, 233, 126, 233, 127, 233, 128, 233, 129, 233, 130, 233, 131, 233, 132, 233, 133, 233, 134, 233, 135, 233, 136, 233, 137, 233, 138, 233, 139, 233, 140, 233, 141, 233, 142, 233, 143, 233, 144, 233, 145, 233, 163, 233, 164, 233, 165, 233, 166, 233, 167, 233, 168, 233, 169, 233, 170, 233, 171, 233, 172, 233, 173, 233, 174, 233, 175, 233, 176, 233, 177, 233, 178, 233, 179, 233, 180, 233, 181, 233, 182, 233, 183, 233, 184, 233, 185, 233, 186, 233, 187, 233, 188, 234, 3, 234, 4, 234, 5, 234, 6, 234, 7, 234, 8, 234, 9, 234, 10, 234, 11, 234, 12, 234, 13, 234, 14, 234, 15, 234, 16, 234, 17, 234, 18, 234, 19, 234, 20, 234, 21, 234, 22, 234, 23, 234, 24, 234, 25, 234, 26, 234, 27, 234, 28, 234, 29, 234, 30, 234, 31, 234, 32, 234, 33, 234, 34, 234, 35, 234, 36, 234, 37, 234, 38, 234, 39, 234, 40, 234, 41, 234, 42, 234, 43, 234, 44, 234, 45, 234, 46, 234, 47, 234, 48, 234, 49, 234, 50, 234, 51, 234, 52, 234, 53, 234, 54, 234, 55, 234, 56, 234, 57, 234, 58, 234, 59, 234, 60, 234, 61, 234, 62, 234, 63, 234, 64, 234, 65, 234, 66, 234, 67, 234, 68, 234, 69, 234, 70, 234, 71, 234, 72, 234, 73, 234, 74, 234, 75, 234, 76, 234, 77, 234, 78, 234, 79, 234, 80, 234, 81, 234, 82, 234, 83, 234, 84, 234, 85, 234, 86, 234, 87, 234, 88, 234, 89, 234, 90, 234, 91, 234, 92, 234, 93, 234, 94, 234, 95, 234, 96, 234, 97, 234, 98, 234, 99, 234, 100, 234, 101, 234, 102, 234, 103, 234, 104, 234, 105, 234, 106, 234, 107, 234, 108, 234, 109, 234, 110, 234, 111, 234, 112, 234, 113, 234, 114, 234, 115, 234, 116, 234, 117, 234, 118, 234, 119, 234, 120, 234, 121, 234, 122, 234, 123, 234, 124, 234, 125, 234, 126, 234, 127, 234, 128, 234, 129, 234, 130, 234, 131, 234, 132, 234, 133, 234, 134, 234, 135, 234, 136, 234, 137, 234, 138, 234, 139, 234, 140, 234, 141, 234, 142, 234, 143, 234, 144, 234, 145, 234, 146, 234, 147, 234, 148, 234, 160, 234, 161, 234, 162, 234, 163, 234, 164, 234, 165, 234, 166, 234, 167, 234, 168, 234, 169, 234, 170, 234, 171, 234, 172, 234, 173, 234, 174, 234, 175, 234, 176, 234, 177, 234, 178, 234, 179, 234, 180, 234, 181, 234, 182, 234, 183, 234, 184, 234, 185, 234, 186, 234, 187, 234, 188, 235, 3, 235, 4, 235, 5, 235, 6, 235, 7, 235, 8, 235, 9, 235, 10, 235, 11, 235, 12, 235, 13, 235, 14, 235, 15, 235, 16, 235, 17, 235, 18, 235, 19, 235, 20, 235, 21, 235, 22, 235, 23, 235, 24, 235, 25, 235, 26, 235, 27, 235, 28, 235, 29, 235, 30, 235, 31, 235, 32, 235, 33, 235, 34, 235, 35, 235, 36, 235, 37, 235, 38, 235, 39, 235, 40, 235, 41, 235, 42, 235, 43, 235, 44, 235, 45, 235, 46, 235, 47, 235, 48, 235, 49, 235, 50, 235, 51, 235, 52, 235, 53, 235, 54, 235, 55, 235, 56, 235, 57, 235, 58, 235, 59, 235, 60, 235, 61, 235, 62, 235, 63, 235, 64, 235, 65, 235, 66, 235, 67, 235, 68, 235, 69, 235, 70, 235, 71, 235, 72, 235, 73, 235, 74, 235, 75, 235, 76, 235, 77, 235, 78, 235, 79, 235, 80, 235, 81, 235, 82, 235, 83, 235, 84, 235, 85, 235, 86, 235, 87, 235, 88, 235, 89, 235, 90, 235, 91, 235, 92, 235, 93, 235, 94, 235, 95, 235, 96, 235, 97, 235, 98, 235, 99, 235, 100, 235, 101, 235, 102, 235, 103, 235, 104, 235, 105, 235, 106, 235, 107, 235, 108, 235, 109, 235, 110, 235, 111, 235, 112, 235, 113, 235, 114, 235, 115, 235, 116, 235, 117, 235, 118, 235, 119, 235, 120, 235, 121, 235, 122, 235, 123, 235, 124, 235, 125, 235, 126, 235, 127, 235, 128, 235, 129, 235, 130, 235, 131, 235, 132, 235, 133, 235, 134, 235, 135, 235, 136, 235, 137, 235, 138, 235, 139, 235, 140, 235, 141, 235, 142, 235, 143, 235, 144, 235, 145, 235, 146, 235, 147, 235, 148, 235, 149, 235, 150, 235, 151, 235, 152, 235, 153, 235, 154, 235, 155, 235, 156, 235, 157, 235, 158, 235, 159, 235, 160, 235, 161, 235, 162, 235, 163, 235, 164, 235, 165, 235, 166, 235, 167, 235, 168, 235, 169, 235, 170, 235, 171, 235, 172, 235, 173, 235, 174, 235, 175, 235, 176, 235, 177, 235, 178, 235, 179, 235, 180, 235, 181, 235, 182, 235, 183, 235, 184, 235, 185, 235, 186, 235, 187, 235, 188, 236, 3, 236, 4, 236, 5, 236, 6, 236, 7, 236, 8, 236, 9, 236, 10, 236, 11, 236, 12, 236, 13, 236, 14, 236, 15, 236, 16, 236, 17, 236, 18, 236, 19, 236, 20, 236, 21, 236, 22, 236, 23, 236, 24, 236, 25, 236, 26, 236, 27, 236, 28, 236, 29, 236, 30, 236, 31, 236, 32, 236, 33, 236, 34, 236, 35, 236, 36, 236, 37, 236, 38, 236, 39, 236, 40, 236, 41, 236, 42, 236, 43, 236, 44, 236, 45, 236, 46, 236, 47, 236, 48, 236, 49, 236, 50, 236, 51, 236, 52, 236, 53, 236, 54, 236, 55, 236, 56, 236, 57, 236, 58, 236, 59, 236, 60, 236, 61, 236, 62, 236, 63, 236, 64, 236, 65, 236, 66, 236, 67, 236, 68, 236, 69, 236, 70, 236, 71, 236, 72, 236, 73, 236, 74, 236, 75, 236, 76, 236, 77, 236, 78, 236, 79, 236, 80, 236, 81, 236, 82, 236, 83, 236, 84, 236, 85, 236, 86, 236, 87, 236, 88, 236, 89, 236, 90, 236, 91, 236, 92, 236, 93, 236, 94, 236, 95, 236, 96, 236, 97, 236, 98, 236, 99, 236, 100, 236, 101, 236, 102, 236, 103, 236, 104, 236, 105, 236, 106, 236, 107, 236, 108, 236, 109, 236, 110, 236, 111, 236, 112, 236, 113, 236, 114, 236, 115, 236, 116, 236, 117, 236, 118, 236, 119, 236, 120, 236, 121, 236, 122, 236, 123, 236, 124, 236, 125, 236, 126, 236, 127, 236, 128, 236, 129, 236, 130, 236, 131, 236, 132, 236, 133, 236, 134, 236, 135, 236, 136, 236, 137, 236, 138, 236, 139, 236, 140, 236, 141, 236, 142, 236, 143, 236, 144, 236, 145, 236, 146, 236, 147, 236, 148, 236, 149, 236, 150, 236, 151, 236, 152, 236, 153, 236, 154, 236, 155, 236, 156, 236, 157, 236, 158, 236, 159, 236, 160, 236, 161, 236, 162, 236, 163, 236, 164, 236, 165, 236, 166, 236, 167, 236, 168, 236, 169, 236, 170, 236, 171, 236, 172, 236, 173, 236, 174, 236, 175, 236, 176, 236, 177, 236, 178, 236, 179, 236, 180, 236, 181, 236, 182, 236, 183, 236, 184, 236, 185, 236, 186, 236, 187, 236, 188, 237, 3, 237, 4, 237, 5, 237, 6, 237, 7, 237, 8, 237, 9, 237, 10, 237, 11, 237, 12, 237, 13, 237, 14, 237, 15, 237, 16, 237, 17, 237, 18, 237, 19, 237, 20, 237, 21, 237, 22, 237, 23, 237, 24, 237, 25, 237, 26, 237, 27, 237, 28, 237, 29, 237, 30, 237, 31, 237, 32, 237, 33, 237, 34, 237, 35, 237, 36, 237, 37, 237, 38, 237, 39, 237, 40, 237, 41, 237, 42, 237, 43, 237, 44, 237, 45, 237, 46, 237, 47, 237, 48, 237, 49, 237, 50, 237, 51, 237, 52, 237, 53, 237, 54, 237, 55, 237, 56, 237, 57, 237, 58, 237, 59, 237, 60, 237, 61, 237, 62, 237, 63, 237, 64, 237, 65, 237, 66, 237, 67, 237, 68, 237, 69, 237, 70, 237, 71, 237, 72, 237, 73, 237, 74, 237, 75, 237, 76, 237, 77, 237, 78, 237, 79, 237, 80, 237, 81, 237, 82, 237, 83, 237, 84, 237, 85, 237, 86, 237, 87, 237, 88, 237, 89, 237, 90, 237, 91, 237, 92, 237, 93, 237, 94, 237, 95, 237, 96, 237, 97, 237, 98, 237, 99, 237, 100, 237, 101, 237, 102, 237, 103, 237, 104, 237, 105, 237, 106, 237, 107, 237, 108, 237, 109, 237, 110, 237, 111, 237, 112, 237, 113, 237, 114, 237, 115, 237, 116, 237, 117, 237, 118, 237, 119, 237, 120, 237, 121, 237, 122, 237, 123, 237, 124, 237, 125, 237, 126, 237, 127, 237, 128, 237, 129, 237, 130, 237, 131, 237, 132, 237, 133, 237, 134, 237, 135, 237, 136, 237, 137, 237, 138, 237, 139, 237, 140, 237, 141, 237, 142, 237, 143, 237, 144, 237, 145, 237, 146, 237, 147, 237, 148, 237, 149, 237, 150, 237, 151, 237, 152, 237, 153, 237, 154, 237, 155, 237, 156, 237, 157, 237, 158, 237, 159, 237, 160, 237, 161, 237, 162, 237, 163, 237, 164, 237, 165, 237, 166, 237, 167, 237, 168, 237, 169, 237, 170, 237, 171, 237, 172, 237, 173, 237, 174, 237, 175, 237, 176, 237, 177, 237, 178, 237, 179, 237, 180, 237, 181, 237, 182, 237, 183, 237, 184, 237, 185, 237, 186, 237, 187, 237, 188, 238, 3, 238, 4, 238, 5, 238, 6, 238, 7, 238, 8, 238, 9, 238, 10, 238, 11, 238, 12, 238, 13, 238, 14, 238, 15, 238, 16, 238, 17, 238, 18, 238, 19, 238, 20, 238, 21, 238, 22, 238, 23, 238, 24, 238, 25, 238, 26, 238, 27, 238, 28, 238, 29, 238, 30, 238, 31, 238, 32, 238, 33, 238, 34, 238, 35, 238, 36, 238, 37, 238, 38, 238, 39, 238, 40, 238, 41, 238, 42, 238, 43, 238, 44, 238, 45, 238, 46, 238, 47, 238, 48, 238, 49, 238, 50, 238, 51, 238, 52, 238, 53, 238, 54, 238, 55, 238, 56, 238, 57, 238, 58, 238, 59, 238, 60, 238, 61, 238, 62, 238, 63, 238, 64, 238, 65, 238, 66, 238, 67, 238, 68, 238, 69, 238, 70, 238, 71, 238, 72, 238, 73, 238, 74, 238, 75, 238, 76, 238, 77, 238, 78, 238, 79, 238, 80, 238, 81, 238, 82, 238, 83, 238, 84, 238, 85, 238, 86, 238, 87, 238, 88, 238, 89, 238, 90, 238, 91, 238, 92, 238, 93, 238, 94, 238, 95, 238, 96, 238, 97, 238, 98, 238, 99, 238, 100, 238, 101, 238, 102, 238, 103, 238, 104, 238, 105, 238, 106, 238, 107, 238, 108, 238, 109, 238, 110, 238, 111, 238, 112, 238, 113, 238, 114, 238, 115, 238, 116, 238, 117, 238, 118, 238, 119, 238, 120, 238, 121, 238, 122, 238, 123, 238, 124, 238, 125, 238, 126, 238, 127, 238, 128, 238, 129, 238, 130, 238, 131, 238, 132, 238, 133, 238, 134, 238, 135, 238, 136, 238, 137, 238, 138, 238, 139, 238, 140, 238, 141, 238, 142, 238, 143, 238, 144, 238, 145, 238, 146, 238, 147, 238, 148, 238, 149, 238, 150, 238, 151, 238, 152, 238, 153, 238, 154, 238, 155, 238, 156, 238, 157, 238, 158, 238, 159, 238, 160, 238, 161, 238, 162, 238, 163, 238, 164, 238, 165, 238, 166, 238, 167, 238, 168, 238, 169, 238, 170, 238, 171, 238, 172, 238, 173, 238, 174, 238, 175, 238, 176, 238, 177, 238, 178, 238, 179, 238, 180, 238, 181, 238, 182, 238, 183, 238, 184, 238, 185, 238, 186, 238, 187, 238, 188, 239, 3, 239, 4, 239, 5, 239, 6, 239, 7, 239, 8, 239, 9, 239, 10, 239, 11, 239, 12, 239, 13, 239, 14, 239, 15, 239, 16, 239, 17, 239, 18, 239, 19, 239, 20, 239, 21, 239, 22, 239, 23, 239, 24, 239, 25, 239, 26, 239, 27, 239, 28, 239, 29, 239, 30, 239, 31, 239, 32, 239, 33, 239, 34, 239, 35, 239, 36, 239, 37, 239, 38, 239, 39, 239, 40, 239, 41, 239, 42, 239, 43, 239, 44, 239, 45, 239, 46, 239, 47, 239, 48, 239, 49, 239, 50, 239, 51, 239, 52, 239, 53, 239, 54, 239, 55, 239, 56, 239, 57, 239, 58, 239, 59, 239, 60, 239, 61, 239, 62, 239, 63, 239, 64, 239, 65, 239, 66, 239, 67, 239, 68, 239, 69, 239, 70, 239, 71, 239, 72, 239, 73, 239, 74, 239, 75, 239, 76, 239, 77, 239, 78, 239, 79, 239, 80, 239, 81, 239, 82, 239, 83, 239, 84, 239, 85, 239, 86, 239, 87, 239, 88, 239, 89, 239, 90, 239, 91, 239, 92, 239, 93, 239, 94, 239, 95, 239, 96, 239, 97, 239, 98, 239, 99, 239, 100, 239, 101, 239, 102, 239, 103, 239, 104, 239, 105, 239, 106, 239, 107, 239, 108, 239, 109, 239, 110, 239, 111, 239, 112, 239, 113, 239, 114, 239, 115, 239, 116, 239, 117, 239, 118, 239, 119, 239, 120, 239, 121, 239, 122, 239, 123, 239, 124, 239, 125, 239, 126, 239, 127, 239, 128, 239, 129, 239, 130, 239, 131, 239, 132, 239, 133, 239, 134, 239, 135, 239, 136, 239, 137, 239, 138, 239, 139, 239, 140, 239, 141, 239, 142, 239, 143, 239, 144, 239, 145, 239, 146, 239, 147, 239, 148, 239, 149, 239, 150, 239, 151, 239, 152, 239, 153, 239, 154, 239, 155, 239, 156, 239, 157, 239, 158, 239, 159, 239, 160, 239, 161, 239, 162, 239, 163, 239, 164, 239, 165, 239, 166, 239, 167, 239, 168, 239, 169, 239, 170, 239, 171, 239, 172, 239, 173, 239, 174, 239, 175, 239, 176, 239, 177, 239, 178, 239, 179, 239, 180, 239, 181, 239, 182, 239, 183, 239, 184, 239, 185, 239, 186, 239, 187, 239, 188, 240, 3, 240, 4, 240, 5, 240, 6, 240, 7, 240, 8, 240, 9, 240, 10, 240, 11, 240, 12, 240, 13, 240, 14, 240, 15, 240, 16, 240, 17, 240, 18, 240, 19, 240, 20, 240, 21, 240, 22, 240, 23, 240, 24, 240, 25, 240, 26, 240, 27, 240, 28, 240, 29, 240, 30, 240, 31, 240, 32, 240, 33, 240, 34, 240, 35, 240, 36, 240, 37, 240, 38, 240, 39, 240, 40, 240, 41, 240, 42, 240, 43, 240, 44, 240, 45, 240, 46, 240, 47, 240, 48, 240, 49, 240, 50, 240, 51, 240, 52, 240, 53, 240, 54, 240, 55, 240, 56, 240, 57, 240, 58, 240, 59, 240, 60, 240, 61, 240, 62, 240, 63, 240, 64, 240, 65, 240, 66, 240, 67, 240, 68, 240, 69, 240, 70, 240, 71, 240, 72, 240, 73, 240, 74, 240, 75, 240, 76, 240, 77, 240, 78, 240, 79, 240, 80, 240, 81, 240, 82, 240, 83, 240, 84, 240, 85, 240, 86, 240, 87, 240, 88, 240, 89, 240, 90, 240, 91, 240, 92, 240, 93, 240, 94, 240, 95, 240, 96, 240, 97, 240, 98, 240, 99, 240, 100, 240, 101, 240, 102, 240, 103, 240, 104, 240, 105, 240, 106, 240, 107, 240, 108, 240, 109, 240, 110, 240, 111, 240, 112, 240, 113, 240, 114, 240, 115, 240, 116, 240, 117, 240, 118, 240, 119, 240, 120, 240, 121, 240, 122, 240, 123, 240, 124, 240, 125, 240, 126, 240, 127, 240, 128, 240, 129, 240, 130, 240, 131, 240, 132, 240, 133, 240, 134, 240, 135, 240, 136, 240, 137, 240, 138, 240, 139, 240, 140, 240, 141, 240, 142, 240, 143, 240, 144, 240, 145, 240, 146, 240, 147, 240, 148, 240, 149, 240, 150, 240, 151, 240, 152, 240, 153, 240, 154, 240, 155, 240, 156, 240, 157, 240, 158, 240, 159, 240, 160, 240, 161, 240, 162, 240, 163, 240, 164, 240, 165, 240, 166, 240, 167, 240, 168, 240, 169, 240, 170, 240, 171, 240, 172, 240, 173, 240, 174, 240, 175, 240, 176, 240, 177, 240, 178, 240, 179, 240, 180, 240, 181, 240, 182, 240, 183, 240, 184, 240, 185, 240, 186, 240, 187, 240, 188, 241, 3, 241, 4, 241, 5, 241, 6, 241, 7, 241, 8, 241, 9, 241, 10, 241, 11, 241, 12, 241, 13, 241, 14, 241, 15, 241, 16, 241, 17, 241, 18, 241, 19, 241, 20, 241, 21, 241, 22, 241, 23, 241, 24, 241, 25, 241, 26, 241, 27, 241, 28, 241, 29, 241, 30, 241, 31, 241, 32, 241, 33, 241, 34, 241, 35, 241, 36, 241, 37, 241, 38, 241, 39, 241, 40, 241, 41, 241, 42, 241, 43, 241, 44, 241, 45, 241, 46, 241, 47, 241, 48, 241, 49, 241, 50, 241, 51, 241, 52, 241, 53, 241, 54, 241, 55, 241, 56, 241, 57, 241, 58, 241, 59, 241, 60, 241, 61, 241, 62, 241, 63, 241, 64, 241, 65, 241, 66, 241, 67, 241, 68, 241, 69, 241, 70, 241, 71, 241, 72, 241, 73, 241, 74, 241, 75, 241, 76, 241, 77, 241, 78, 241, 79, 241, 80, 241, 81, 241, 82, 241, 83, 241, 84, 241, 85, 241, 86, 241, 87, 241, 88, 241, 89, 241, 90, 241, 91, 241, 92, 241, 93, 241, 94, 241, 95, 241, 96, 241, 97, 241, 98, 241, 99, 241, 100, 241, 101, 241, 102, 241, 103, 241, 104, 241, 105, 241, 106, 241, 107, 241, 108, 241, 109, 241, 110, 241, 111, 241, 112, 241, 113, 241, 114, 241, 115, 241, 116, 241, 117, 241, 118, 241, 119, 241, 120, 241, 121, 241, 122, 241, 123, 241, 124, 241, 125, 241, 126, 241, 127, 241, 128, 241, 129, 241, 130, 241, 131, 241, 132, 241, 133, 241, 134, 241, 135, 241, 136, 241, 137, 241, 138, 241, 139, 241, 140, 241, 141, 241, 142, 241, 143, 241, 144, 241, 145, 241, 146, 241, 147, 241, 148, 241, 149, 241, 150, 241, 151, 241, 152, 241, 153, 241, 154, 241, 155, 241, 156, 241, 157, 241, 158, 241, 159, 241, 160, 241, 161, 241, 162, 241, 163, 241, 164, 241, 165, 241, 166, 241, 167, 241, 168, 241, 169, 241, 170, 241, 171, 241, 172, 241, 173, 241, 174, 241, 175, 241, 176, 241, 177, 241, 178, 241, 179, 241, 180, 241, 181, 241, 182, 241, 183, 241, 184, 241, 185, 241, 186, 241, 187, 241, 188, 242, 3, 242, 4, 242, 5, 242, 6, 242, 7, 242, 8, 242, 9, 242, 10, 242, 11, 242, 12, 242, 13, 242, 14, 242, 15, 242, 16, 242, 17, 242, 18, 242, 19, 242, 20, 242, 21, 242, 22, 242, 23, 242, 24, 242, 25, 242, 26, 242, 27, 242, 28, 242, 29, 242, 30, 242, 31, 242, 32, 242, 33, 242, 34, 242, 35, 242, 36, 242, 37, 242, 38, 242, 39, 242, 40, 242, 41, 242, 42, 242, 43, 242, 44, 242, 45, 242, 46, 242, 47, 242, 48, 242, 49, 242, 50, 242, 51, 242, 52, 242, 53, 242, 54, 242, 55, 242, 56, 242, 57, 242, 58, 242, 59, 242, 60, 242, 61, 242, 62, 242, 63, 242, 64, 242, 65, 242, 66, 242, 67, 242, 68, 242, 69, 242, 70, 242, 71, 242, 72, 242, 73, 242, 74, 242, 75, 242, 76, 242, 77, 242, 78, 242, 79, 242, 80, 242, 81, 242, 82, 242, 83, 242, 84, 242, 85, 242, 86, 242, 87, 242, 88, 242, 89, 242, 90, 242, 91, 242, 92, 242, 93, 242, 94, 242, 95, 242, 96, 242, 97, 242, 98, 242, 99, 242, 100, 242, 101, 242, 102, 242, 103, 242, 104, 242, 105, 242, 106, 242, 107, 242, 108, 242, 109, 242, 110, 242, 111, 242, 112, 242, 113, 242, 114, 242, 115, 242, 116, 242, 117, 242, 118, 242, 119, 242, 120, 242, 121, 242, 122, 242, 123, 242, 124, 242, 125, 242, 126, 242, 127, 242, 128, 242, 129, 242, 130, 242, 131, 242, 132, 242, 133, 242, 134, 242, 135, 242, 136, 242, 137, 242, 138, 242, 139, 242, 140, 242, 141, 242, 142, 242, 143, 242, 144, 242, 145, 242, 146, 242, 147, 242, 148, 242, 149, 242, 150, 242, 151, 242, 152, 242, 153, 242, 154, 242, 155, 242, 156, 242, 157, 242, 158, 242, 159, 242, 160, 242, 161, 242, 162, 242, 163, 242, 164, 242, 165, 242, 166, 242, 167, 242, 168, 242, 169, 242, 170, 242, 171, 242, 172, 242, 173, 242, 174, 242, 175, 242, 176, 242, 177, 242, 178, 242, 179, 242, 180, 242, 181, 242, 182, 242, 183, 242, 184, 242, 185, 242, 186, 242, 187, 242, 188, 243, 3, 243, 4, 243, 5, 243, 6, 243, 7, 243, 8, 243, 9, 243, 10, 243, 11, 243, 12, 243, 13, 243, 14, 243, 15, 243, 16, 243, 17, 243, 18, 243, 19, 243, 20, 243, 21, 243, 22, 243, 23, 243, 24, 243, 25, 243, 26, 243, 27, 243, 28, 243, 29, 243, 30, 243, 31, 243, 32, 243, 33, 243, 34, 243, 35, 243, 36, 243, 37, 243, 38, 243, 39, 243, 40, 243, 41, 243, 42, 243, 43, 243, 44, 243, 45, 243, 46, 243, 47, 243, 48, 243, 49, 243, 50, 243, 51, 243, 52, 243, 53, 243, 54, 243, 55, 243, 56, 243, 57, 243, 58, 243, 59, 243, 60, 243, 61, 243, 62, 243, 63, 243, 64, 243, 65, 243, 66, 243, 67, 243, 68, 243, 69, 243, 70, 243, 71, 243, 72, 243, 73, 243, 74, 243, 75, 243, 76, 243, 77, 243, 78, 243, 79, 243, 80, 243, 81, 243, 82, 243, 83, 243, 84, 243, 85, 243, 86, 243, 87, 243, 88, 243, 89, 243, 90, 243, 91, 243, 92, 243, 93, 243, 94, 243, 95, 243, 96, 243, 97, 243, 98, 243, 99, 243, 100, 243, 101, 243, 102, 243, 103, 243, 104, 243, 105, 243, 106, 243, 107, 243, 108, 243, 109, 243, 110, 243, 111, 243, 112, 243, 113, 243, 114, 243, 115, 243, 116, 243, 117, 243, 118, 243, 119, 243, 120, 243, 121, 243, 122, 243, 123, 243, 124, 243, 125, 243, 126, 243, 127, 243, 128, 243, 129, 243, 130, 243, 131, 243, 132, 243, 133, 243, 134, 243, 135, 243, 136, 243, 137, 243, 138, 243, 139, 243, 140, 243, 141, 243, 142, 243, 143, 243, 144, 243, 145, 243, 146, 243, 147, 243, 148, 243, 149, 243, 150, 243, 151, 243, 152, 243, 153, 243, 154, 243, 155, 243, 156, 243, 157, 243, 158, 243, 159, 243, 160, 243, 161, 243, 162, 243, 163, 243, 164, 243, 165, 243, 166, 243, 167, 243, 168, 243, 169, 243, 170, 243, 171, 243, 172, 243, 173, 243, 174, 243, 175, 243, 176, 243, 177, 243, 178, 243, 179, 243, 180, 243, 181, 243, 182, 243, 183, 243, 184, 243, 185, 243, 186, 243, 187, 243, 188, 244, 3, 244, 4, 244, 5, 244, 6, 244, 7, 244, 8, 244, 9, 244, 10, 244, 11, 244, 12, 244, 13, 244, 14, 244, 15, 244, 16, 244, 17, 244, 18, 244, 19, 244, 20, 244, 21, 244, 22, 244, 23, 244, 24, 244, 25, 244, 26, 244, 27, 244, 28, 244, 29, 244, 30, 244, 31, 244, 32, 244, 33, 244, 34, 244, 35, 244, 36, 244, 37, 244, 38, 244, 39, 244, 40, 244, 41, 244, 42, 244, 43, 244, 44, 244, 45, 244, 46, 244, 47, 244, 48, 244, 49, 244, 50, 244, 51, 244, 52, 244, 53, 244, 54, 244, 55, 244, 56, 244, 57, 244, 58, 244, 59, 244, 60, 244, 61, 244, 62, 244, 63, 244, 64, 244, 65, 244, 66, 244, 67, 244, 68, 244, 69, 244, 70, 244, 71, 244, 72, 244, 73, 244, 74, 244, 75, 244, 76, 244, 77, 244, 78, 244, 79, 244, 80, 244, 81, 244, 82, 244, 83, 244, 84, 244, 85, 244, 86, 244, 87, 244, 88, 244, 89, 244, 90, 244, 91, 244, 92, 244, 93, 244, 94, 244, 95, 244, 96, 244, 97, 244, 98, 244, 99, 244, 100, 244, 101, 244, 102, 244, 103, 244, 104, 244, 105, 244, 106, 244, 107, 244, 108, 244, 109, 244, 110, 244, 111, 244, 112, 244, 113, 244, 114, 244, 115, 244, 116, 244, 117, 244, 118, 244, 119, 244, 120, 244, 121, 244, 122, 244, 123, 244, 124, 244, 125, 244, 126, 244, 127, 244, 128, 244, 129, 244, 130, 244, 131, 244, 132, 244, 133, 244, 134, 244, 135, 244, 136, 244, 137, 244, 138, 244, 139, 244, 140, 244, 141, 244, 142, 244, 143, 244, 144, 244, 145, 244, 146, 244, 147, 244, 148, 244, 149, 244, 150, 244, 151, 244, 152, 244, 153, 244, 154, 244, 155, 244, 156, 244, 157, 244, 158, 244, 159, 244, 160, 244, 161, 244, 162, 244, 163, 244, 164, 244, 165, 244, 166, 244, 167, 244, 168, 244, 169, 244, 170, 244, 171, 244, 172, 244, 173, 244, 174, 244, 175, 244, 176, 244, 177, 244, 178, 244, 179, 244, 180, 244, 181, 244, 182, 244, 183, 244, 184, 244, 185, 244, 186, 244, 187, 244, 188, 245, 3, 245, 4, 245, 5, 245, 6, 245, 7, 245, 8, 245, 9, 245, 10, 245, 11, 245, 12, 245, 13, 245, 14, 245, 15, 245, 16, 245, 17, 245, 18, 245, 19, 245, 20, 245, 21, 245, 22, 245, 23, 245, 24, 245, 25, 245, 26, 245, 27, 245, 28, 245, 29, 245, 30, 245, 31, 245, 32, 245, 33, 245, 34, 245, 35, 245, 36, 245, 37, 245, 38, 245, 39, 245, 40, 245, 41, 245, 42, 245, 43, 245, 44, 245, 45, 245, 46, 245, 47, 245, 48, 245, 49, 245, 50, 245, 51, 245, 52, 245, 53, 245, 54, 245, 55, 245, 56, 245, 57, 245, 58, 245, 59, 245, 60, 245, 61, 245, 62, 245, 63, 245, 64, 245, 65, 245, 66, 245, 67, 245, 68, 245, 69, 245, 70, 245, 71, 245, 72, 245, 73, 245, 74, 245, 75, 245, 76, 245, 77, 245, 78, 245, 79, 245, 80, 245, 81, 245, 82, 245, 83, 245, 84, 245, 85, 245, 86, 245, 87, 245, 88, 245, 89, 245, 90, 245, 91, 245, 92, 245, 93, 245, 94, 245, 95, 245, 96, 245, 97, 245, 98, 245, 99, 245, 100, 245, 101, 245, 102, 245, 103, 245, 104, 245, 105, 245, 106, 245, 107, 245, 108, 245, 109, 245, 110, 245, 111, 245, 112, 245, 113, 245, 114, 245, 115, 245, 116, 245, 117, 245, 118, 245, 119, 245, 120, 245, 121, 245, 122, 245, 123, 245, 124, 245, 125, 245, 126, 245, 127, 245, 128, 245, 129, 245, 130, 245, 131, 245, 132, 245, 133, 245, 134, 245, 135, 245, 136, 245, 137, 245, 138, 245, 139, 245, 140, 245, 141, 245, 142, 245, 143, 245, 144, 245, 145, 245, 146, 245, 147, 245, 148, 245, 149, 245, 150, 245, 151, 245, 152, 245, 153, 245, 154, 245, 155, 245, 156, 245, 157, 245, 158, 245, 159, 245, 160, 245, 161, 245, 162, 245, 163, 245, 164, 245, 165, 245, 166, 245, 167, 245, 168, 245, 169, 245, 170, 245, 171, 245, 172, 245, 173, 245, 174, 245, 175, 245, 176, 245, 177, 245, 178, 245, 179, 245, 180, 245, 181, 245, 182, 245, 183, 245, 184, 245, 185, 245, 186, 245, 187, 245, 188, 246, 3, 246, 4, 246, 5, 246, 6, 246, 7, 246, 8, 246, 9, 246, 10, 246, 11, 246, 12, 246, 13, 246, 14, 246, 15, 246, 16, 246, 17, 246, 18, 246, 19, 246, 20, 246, 21, 246, 22, 246, 23, 246, 24, 246, 25, 246, 26, 246, 27, 246, 28, 246, 29, 246, 30, 246, 31, 246, 32, 246, 33, 246, 34, 246, 35, 246, 36, 246, 37, 246, 38, 246, 39, 246, 40, 246, 41, 246, 42, 246, 43, 246, 44, 246, 45, 246, 46, 246, 47, 246, 48, 246, 49, 246, 50, 246, 51, 246, 52, 246, 53, 246, 54, 246, 55, 246, 56, 246, 57, 246, 58, 246, 59, 246, 60, 246, 61, 246, 62, 246, 63, 246, 64, 246, 65, 246, 66, 246, 67, 246, 68, 246, 69, 246, 70, 246, 71, 246, 72, 246, 73, 246, 74, 246, 75, 246, 76, 246, 77, 246, 78, 246, 79, 246, 80, 246, 81, 246, 82, 246, 83, 246, 84, 246, 85, 246, 86, 246, 87, 246, 88, 246, 89, 246, 90, 246, 91, 246, 92, 246, 93, 246, 94, 246, 95, 246, 96, 246, 97, 246, 98, 246, 99, 246, 100, 246, 101, 246, 102, 246, 103, 246, 104, 246, 105, 246, 106, 246, 107, 246, 108, 246, 109, 246, 110, 246, 111, 246, 112, 246, 113, 246, 114, 246, 115, 246, 116, 246, 117, 246, 118, 246, 119, 246, 120, 246, 121, 246, 122, 246, 123, 246, 124, 246, 125, 246, 126, 246, 127, 246, 128, 246, 129, 246, 130, 246, 131, 246, 132, 246, 133, 246, 134, 246, 135, 246, 136, 246, 137, 246, 138, 246, 139, 246, 140, 246, 141, 246, 142, 246, 143, 246, 144, 246, 145, 246, 146, 246, 147, 246, 148, 246, 149, 246, 150, 246, 151, 246, 152, 246, 153, 246, 154, 246, 155, 246, 156, 246, 157, 246, 158, 246, 159, 246, 160, 246, 161, 246, 162, 246, 163, 246, 164, 246, 165, 246, 166, 246, 167, 246, 168, 246, 169, 246, 170, 246, 171, 246, 172, 246, 173, 246, 174, 246, 175, 246, 176, 246, 177, 246, 178, 246, 179, 246, 180, 246, 181, 246, 182, 246, 183, 246, 184, 246, 185, 246, 186, 246, 187, 246, 188, 247, 3, 247, 4, 247, 5, 247, 6, 247, 7, 247, 8, 247, 9, 247, 10, 247, 11, 247, 12, 247, 13, 247, 14, 247, 15, 247, 16, 247, 17, 247, 18, 247, 19, 247, 20, 247, 21, 247, 22, 247, 23, 247, 24, 247, 25, 247, 26, 247, 27, 247, 28, 247, 29, 247, 30, 247, 31, 247, 32, 247, 33, 247, 34, 247, 35, 247, 36, 247, 37, 247, 38, 247, 39, 247, 40, 247, 41, 247, 42, 247, 43, 247, 44, 247, 45, 247, 46, 247, 47, 247, 48, 247, 49, 247, 50, 247, 51, 247, 52, 247, 53, 247, 54, 247, 55, 247, 56, 247, 57, 247, 58, 247, 59, 247, 60, 247, 61, 247, 62, 247, 63, 247, 64, 247, 65, 247, 66, 247, 67, 247, 68, 247, 69, 247, 70, 247, 71, 247, 72, 247, 73, 247, 74, 247, 75, 247, 76, 247, 77, 247, 78, 247, 79, 247, 80, 247, 81, 247, 82, 247, 83, 247, 84, 247, 85, 247, 86, 247, 87, 247, 88, 247, 89, 247, 90, 247, 91, 247, 92, 247, 93, 247, 94, 247, 95, 247, 96, 247, 97, 247, 98, 247, 99, 247, 100, 247, 101, 247, 102, 247, 103, 247, 104, 247, 105, 247, 106, 247, 107, 247, 108, 247, 109, 247, 110, 247, 111, 247, 112, 247, 113, 247, 114, 247, 115, 247, 116, 247, 117, 247, 118, 247, 119, 247, 120, 247, 121, 247, 122, 247, 123, 247, 124, 247, 125, 247, 126, 247, 127, 247, 128, 247, 129, 247, 130, 247, 131, 247, 132, 247, 133, 247, 134, 247, 135, 247, 136, 247, 137, 247, 138, 247, 139, 247, 140, 247, 141, 247, 142, 247, 143, 247, 144, 247, 145, 247, 146, 247, 147, 247, 148, 247, 149, 247, 150, 247, 151, 247, 152, 247, 153, 247, 154, 247, 155, 247, 156, 247, 157, 247, 158, 247, 159, 247, 160, 247, 161, 247, 162, 247, 163, 247, 164, 247, 165, 247, 166, 247, 167, 247, 168, 247, 169, 247, 170, 247, 171, 247, 172, 247, 173, 247, 174, 247, 175, 247, 176, 247, 177, 247, 178, 247, 179, 247, 180, 247, 181, 247, 182, 247, 183, 247, 184, 247, 185, 247, 186, 247, 187, 247, 188, 248, 3, 248, 4, 248, 5, 248, 6, 248, 7, 248, 8, 248, 9, 248, 10, 248, 11, 248, 12, 248, 13, 248, 14, 248, 15, 248, 16, 248, 17, 248, 18, 248, 19, 248, 20, 248, 21, 248, 22, 248, 23, 248, 24, 248, 25, 248, 26, 248, 27, 248, 28, 248, 29, 248, 30, 248, 31, 248, 32, 248, 33, 248, 34, 248, 35, 248, 36, 248, 37, 248, 38, 248, 39, 248, 40, 248, 41, 248, 42, 248, 43, 248, 44, 248, 45, 248, 46, 248, 47, 248, 48, 248, 49, 248, 50, 248, 51, 248, 52, 248, 53, 248, 54, 248, 55, 248, 56, 248, 57, 248, 58, 248, 59, 248, 60, 248, 61, 248, 62, 248, 63, 248, 64, 248, 65, 248, 66, 248, 67, 248, 68, 248, 69, 248, 70, 248, 71, 248, 72, 248, 73, 248, 74, 248, 75, 248, 76, 248, 77, 248, 78, 248, 79, 248, 80, 248, 81, 248, 82, 248, 83, 248, 84, 248, 85, 248, 86, 248, 87, 248, 88, 248, 89, 248, 90, 248, 91, 248, 92, 248, 93, 248, 94, 248, 95, 248, 96, 248, 97, 248, 98, 248, 99, 248, 100, 248, 101, 248, 102, 248, 103, 248, 104, 248, 105, 248, 106, 248, 107, 248, 108, 248, 109, 248, 110, 248, 111, 248, 112, 248, 113, 248, 114, 248, 115, 248, 116, 248, 117, 248, 118, 248, 119, 248, 120, 248, 121, 248, 122, 248, 123, 248, 124, 248, 125, 248, 126, 248, 127, 248, 128, 248, 129, 248, 130, 248, 131, 248, 132, 248, 133, 248, 134, 248, 135, 248, 136, 248, 137, 248, 138, 248, 139, 248, 140, 248, 141, 248, 142, 248, 143, 248, 144, 248, 145, 248, 146, 248, 147, 248, 148, 248, 149, 248, 150, 248, 151, 248, 152, 248, 153, 248, 154, 248, 155, 248, 156, 248, 157, 248, 158, 248, 159, 248, 160, 248, 161, 248, 162, 248, 163, 248, 164, 248, 165, 248, 166, 248, 167, 248, 168, 248, 169, 248, 170, 248, 171, 248, 172, 248, 173, 248, 174, 248, 175, 248, 176, 248, 177, 248, 178, 248, 179, 248, 180, 248, 181, 248, 182, 248, 183, 248, 184, 248, 185, 248, 186, 248, 187, 248, 188, 249, 3, 249, 4, 249, 5, 249, 6, 249, 7, 249, 8, 249, 9, 249, 10, 249, 11, 249, 12, 249, 13, 249, 14, 249, 15, 249, 16, 249, 17, 249, 18, 249, 19, 249, 20, 249, 21, 249, 22, 249, 23, 249, 24, 249, 25, 249, 26, 249, 27, 249, 28, 249, 29, 249, 30, 249, 31, 249, 32, 249, 33, 249, 34, 249, 35, 249, 36, 249, 37, 249, 38, 249, 39, 249, 40, 249, 41, 249, 42, 249, 43, 249, 44, 249, 45, 249, 46, 249, 47, 249, 48, 249, 49, 249, 50, 249, 51, 249, 52, 249, 53, 249, 54, 249, 55, 249, 56, 249, 57, 249, 58, 249, 59, 249, 60, 249, 61, 249, 62, 249, 63, 249, 64, 249, 65, 249, 66, 249, 67, 249, 68, 249, 69, 249, 70, 249, 71, 249, 72, 249, 73, 249, 74, 249, 75, 249, 76, 249, 77, 249, 78, 249, 79, 249, 80, 249, 81, 249, 82, 249, 83, 249, 84, 249, 85, 249, 86, 249, 87, 249, 88, 249, 89, 249, 90, 249, 91, 249, 92, 249, 93, 249, 94, 249, 95, 249, 96, 249, 97, 249, 98, 249, 99, 249, 100, 249, 101, 249, 102, 249, 103, 249, 104, 249, 105, 249, 106, 249, 107, 249, 108, 249, 109, 249, 110, 249, 111, 249, 112, 249, 113, 249, 114, 249, 115, 249, 116, 249, 117, 249, 118, 249, 119, 249, 120, 249, 121, 249, 122, 249, 123, 249, 124, 249, 125, 249, 126, 249, 127, 249, 128, 249, 129, 249, 130, 249, 131, 249, 132, 249, 133, 249, 134, 249, 135, 249, 136, 249, 137, 249, 138, 249, 139, 249, 140, 249, 141, 249, 142, 249, 143, 249, 144, 249, 145, 249, 146, 249, 147, 249, 148, 249, 149, 249, 150, 249, 151, 249, 152, 249, 153, 249, 154, 249, 155, 249, 156, 249, 157, 249, 158, 249, 159, 249, 160, 249, 161, 249, 162, 249, 163, 249, 164, 249, 165, 249, 166, 249, 167, 249, 168, 249, 169, 249, 170, 249, 171, 249, 172, 249, 173, 249, 174, 249, 175, 249, 176, 249, 177, 249, 178, 249, 179, 249, 180, 249, 181, 249, 182, 249, 183, 249, 184, 249, 185, 249, 186, 249, 187, 249, 188, 250, 3, 250, 4, 250, 5, 250, 6, 250, 7, 250, 8, 250, 9, 250, 10, 250, 11, 250, 12, 250, 13, 250, 14, 250, 15, 250, 16, 250, 17, 250, 18, 250, 19, 250, 20, 250, 21, 250, 22, 250, 23, 250, 24, 250, 25, 250, 26, 250, 27, 250, 28, 250, 29, 250, 30, 250, 31, 250, 32, 250, 33, 250, 34, 250, 35, 250, 36, 250, 37, 250, 38, 250, 39, 250, 40, 250, 41, 250, 42, 250, 43, 250, 44, 250, 45, 250, 46, 250, 47, 250, 48, 250, 49, 250, 50, 250, 51, 250, 52, 250, 53, 250, 54, 250, 55, 250, 56, 250, 57, 250, 58, 250, 59, 250, 60, 250, 61, 250, 62, 250, 63, 250, 64, 250, 65, 250, 66, 250, 67, 250, 68, 250, 69, 250, 70, 250, 71, 250, 72, 250, 73, 250, 74, 250, 75, 250, 76, 250, 77, 250, 78, 250, 79, 250, 80, 250, 81, 250, 82, 250, 83, 250, 84, 250, 85, 250, 86, 250, 87, 250, 88, 250, 89, 250, 90, 250, 91, 250, 92, 250, 93, 250, 94, 250, 95, 250, 96, 250, 97, 250, 98, 250, 99, 250, 100, 250, 101, 250, 102, 250, 103, 250, 104, 250, 105, 250, 106, 250, 107, 250, 108, 250, 109, 250, 110, 250, 111, 250, 112, 250, 113, 250, 114, 250, 115, 250, 116, 250, 117, 250, 118, 250, 119, 250, 120, 250, 121, 250, 122, 250, 123, 250, 124, 250, 125, 250, 126, 250, 127, 250, 128, 250, 129, 250, 130, 250, 131, 250, 132, 250, 133, 250, 134, 250, 135, 250, 136, 250, 137, 250, 138, 250, 139, 250, 140, 250, 141, 250, 142, 250, 143, 250, 144, 250, 145, 250, 146, 250, 147, 250, 148, 250, 149, 250, 150, 250, 151, 250, 152, 250, 153, 250, 154, 250, 155, 250, 156, 250, 157, 250, 158, 250, 159, 250, 160, 250, 161, 250, 162, 250, 163, 250, 164, 250, 165, 250, 166, 250, 167, 250, 168, 250, 169, 250, 170, 250, 171, 250, 172, 250, 173, 250, 174, 250, 175, 250, 176, 250, 177, 250, 178, 250, 179, 250, 180, 250, 181, 250, 182, 250, 183, 250, 184, 250, 185, 250, 186, 250, 187, 250, 188, 251, 3, 251, 4, 251, 5, 251, 6, 251, 7, 251, 8, 251, 9, 251, 10, 251, 11, 251, 12, 251, 13, 251, 14, 251, 15, 251, 16, 251, 17, 251, 18, 251, 19, 251, 20, 251, 21, 251, 22, 251, 23, 251, 24, 251, 25, 251, 26, 251, 27, 251, 28, 251, 29, 251, 30, 251, 31, 251, 32, 251, 33, 251, 34, 251, 35, 251, 36, 251, 37, 251, 38, 251, 39, 251, 40, 251, 41, 251, 42, 251, 43, 251, 44, 251, 45, 251, 46, 251, 47, 251, 48, 251, 49, 251, 50, 251, 51, 251, 52, 251, 53, 251, 54, 251, 55, 251, 56, 251, 57, 251, 58, 251, 59, 251, 60, 251, 61, 251, 62, 251, 63, 251, 64, 251, 65, 251, 66, 251, 67, 251, 68, 251, 69, 251, 70, 251, 71, 251, 72, 251, 73, 251, 74, 251, 75, 251, 76, 251, 77, 251, 78, 251, 79, 251, 80, 251, 81, 251, 82, 251, 83, 251, 84, 251, 85, 251, 86, 251, 87, 251, 88, 251, 89, 251, 90, 251, 91, 251, 92, 251, 93, 251, 94, 251, 95, 251, 96, 251, 97, 251, 98, 251, 99, 251, 100, 251, 101, 251, 102, 251, 103, 251, 104, 251, 105, 251, 106, 251, 107, 251, 108, 251, 109, 251, 110, 251, 111, 251, 112, 251, 113, 251, 114, 251, 115, 251, 116, 251, 117, 251, 118, 251, 119, 251, 120, 251, 121, 251, 122, 251, 123, 251, 124, 251, 125, 251, 126, 251, 127, 251, 128, 251, 129, 251, 130, 251, 131, 251, 132, 251, 133, 251, 134, 251, 135, 251, 136, 251, 137, 251, 138, 251, 139, 251, 140, 251, 141, 251, 142, 251, 143, 251, 144, 251, 145, 251, 146, 251, 147, 251, 148, 251, 149, 251, 150, 251, 151, 251, 152, 251, 153, 251, 154, 251, 155, 251, 156, 251, 157, 251, 158, 251, 159, 251, 160, 251, 161, 251, 162, 251, 163, 251, 164, 251, 165, 251, 166, 251, 167, 251, 168, 251, 169, 251, 170, 251, 171, 251, 172, 251, 173, 251, 174, 251, 175, 251, 176, 251, 177, 251, 178, 251, 179, 251, 180, 251, 181, 251, 182, 251, 183, 251, 184, 251, 185, 251, 186, 251, 187, 251, 188, 252, 3, 252, 4, 252, 5, 252, 6, 252, 7, 252, 8, 252, 9, 252, 10, 252, 11, 252, 12, 252, 13, 252, 14, 252, 15, 252, 16, 252, 17, 252, 18, 252, 19, 252, 20, 252, 21, 252, 22, 252, 23, 252, 24, 252, 25, 252, 26, 252, 27, 252, 28, 252, 29, 252, 30, 252, 31, 252, 32, 252, 33, 252, 34, 252, 35, 252, 36, 252, 37, 252, 38, 252, 39, 252, 40, 252, 41, 252, 42, 252, 43, 252, 44, 252, 45, 252, 46, 252, 47, 252, 48, 252, 49, 252, 50, 252, 51, 252, 52, 252, 53, 252, 54, 252, 55, 252, 56, 252, 57, 252, 58, 252, 59, 252, 60, 252, 61, 252, 62, 252, 63, 252, 64, 252, 65, 252, 66, 252, 67, 252, 68, 252, 69, 252, 70, 252, 71, 252, 72, 252, 73, 252, 74, 252, 75, 252, 76, 252, 77, 252, 78, 252, 79, 252, 80, 252, 81, 252, 82, 252, 83, 252, 84, 252, 85, 252, 86, 252, 87, 252, 88, 252, 89, 252, 90, 252, 91, 252, 92, 252, 93, 252, 94, 252, 95, 252, 96, 252, 97, 252, 98, 252, 99, 252, 100, 252, 101, 252, 102, 252, 103, 252, 104, 252, 105, 252, 106, 252, 107, 252, 108, 252, 109, 252, 110, 252, 111, 252, 112, 252, 113, 252, 114, 252, 115, 252, 116, 252, 117, 252, 118, 252, 119, 252, 120, 252, 121, 252, 122, 252, 123, 252, 124, 252, 125, 252, 126, 252, 127, 252, 128, 252, 129, 252, 130, 252, 131, 252, 132, 252, 133, 252, 134, 252, 135, 252, 136, 252, 137, 252, 138, 252, 139, 252, 140, 252, 141, 252, 142, 252, 143, 252, 144, 252, 145, 252, 146, 252, 147, 252, 148, 252, 149, 252, 150, 252, 151, 252, 152, 252, 153, 252, 154, 252, 155, 252, 156, 252, 157, 252, 158, 252, 159, 252, 160, 252, 161, 252, 162, 252, 163, 252, 164, 252, 165, 252, 166, 252, 167, 252, 168, 252, 169, 252, 170, 252, 171, 252, 172, 252, 173, 252, 174, 252, 175, 252, 176, 252, 177, 252, 178, 252, 179, 252, 180, 252, 181, 252, 182, 252, 183, 252, 184, 252, 185, 252, 186, 252, 187, 252, 188 ) +emission_colors = PoolColorArray( ) +gravity = Vector2( 0, 0 ) +anim_speed = 1.0 + +[node name="LevelPath" type="Path2D" parent="."] +curve = SubResource( 1 ) + +[node name="PlayerPosition" type="PathFollow2D" parent="LevelPath"] +unique_name_in_owner = true +position = Vector2( 61, 140 ) +rotate = false + +[node name="PlayerSprite" type="Sprite" parent="LevelPath/PlayerPosition"] +unique_name_in_owner = true +material = SubResource( 15 ) +position = Vector2( 0, -2 ) +texture = ExtResource( 3 ) + +[node name="Sparkles" type="CPUParticles2D" parent="LevelPath/PlayerPosition/PlayerSprite"] +unique_name_in_owner = true +visible = false +light_mask = 0 +amount = 1 +lifetime = 2.0 +texture = ExtResource( 21 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 27 ) +color = Color( 0.996078, 1, 0.760784, 1 ) +script = ExtResource( 20 ) + +[node name="hills" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 61, 140 ) +rotation = 1.04814 + +[node name="canopy" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 89.5314, 148.93 ) +rotation = -0.105869 +offset = 32.0 + +[node name="mountain" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 111.481, 142.765 ) +rotation = -1.37064 +offset = 55.0 + +[node name="boss1" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 118.615, 133.912 ) +rotation = 0.140896 +offset = 69.0 + +[node name="cave" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 126.41, 129.495 ) +rotation = -2.19952 +offset = 80.0 + +[node name="InCave" type="PathFollow2D" parent="LevelPath"] +unique_name_in_owner = true +position = Vector2( 124.058, 126.26 ) +rotation = -1.85459 +offset = 84.0 + +[node name="OutCave" type="PathFollow2D" parent="LevelPath"] +unique_name_in_owner = true +position = Vector2( 139.8, 95.8421 ) +rotation = 0.144373 +offset = 130.0 + +[node name="abyss" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 154.261, 99.6526 ) +rotation = -1.39342 +offset = 145.0 + +[node name="graveyard" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 167.42, 78.1565 ) +rotation = 0.453406 +offset = 176.0 + +[node name="boss2" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 183.719, 89.5131 ) +rotation = 1.31674 +offset = 196.0 + +[node name="station" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 180.067, 105.7 ) +rotation = 0.382192 +offset = 217.0 + +[node name="rust" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 179.452, 131.298 ) +rotation = 2.56727 +offset = 258.0 + +[node name="lab" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 203.036, 129.879 ) +rotation = -1.21855 +offset = 293.0 + +[node name="boss3" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 210.977, 118.729 ) +rotation = 0.787923 +offset = 308.0 + +[node name="beta_cave" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 123.406, 129.056 ) +rotation = -2.90295 +offset = 432.0 + +[node name="beta_hills" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 64.0566, 132.854 ) +rotation = -2.19526 +offset = 505.0 + +[node name="WorldTitle" type="Label" parent="."] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_left = -26.0 +margin_top = 164.0 +margin_right = 282.0 +margin_bottom = 187.0 +theme = ExtResource( 4 ) +text = "This is it sg. +change the future, we believe in you" +align = 1 +valign = 1 + +[node name="CurrentLevel" type="HBoxContainer" parent="."] +anchor_right = 1.0 +margin_bottom = 16.0 +theme = ExtResource( 4 ) +alignment = 1 + +[node name="BackArrow" type="TextureRect" parent="CurrentLevel"] +unique_name_in_owner = true +material = SubResource( 2 ) +margin_left = 58.0 +margin_top = 4.0 +margin_right = 64.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 5 ) +flip_h = true + +[node name="LevelTitle" type="Label" parent="CurrentLevel"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_left = 68.0 +margin_top = 3.0 +margin_right = 159.0 +margin_bottom = 13.0 +theme = ExtResource( 4 ) +text = "Verdant Hills" +align = 1 +valign = 1 + +[node name="ForwardArrow" type="TextureRect" parent="CurrentLevel"] +unique_name_in_owner = true +visible = false +material = SubResource( 3 ) +margin_left = 164.0 +margin_top = 4.0 +margin_right = 170.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 5 ) + +[node name="BossBlock" type="TextureRect" parent="CurrentLevel"] +unique_name_in_owner = true +visible = false +margin_left = 169.0 +margin_top = 4.0 +margin_right = 176.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 8 ) + +[node name="ShardsBlock" type="HBoxContainer" parent="CurrentLevel"] +unique_name_in_owner = true +margin_left = 163.0 +margin_right = 198.0 +margin_bottom = 16.0 +custom_constants/separation = 2 + +[node name="ForwardArrow" type="TextureRect" parent="CurrentLevel/ShardsBlock"] +modulate = Color( 0.690196, 0.690196, 0.690196, 1 ) +margin_top = 4.0 +margin_right = 6.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 5 ) + +[node name="Icon" type="TextureRect" parent="CurrentLevel/ShardsBlock"] +material = SubResource( 10 ) +margin_left = 8.0 +margin_top = 2.0 +margin_right = 19.0 +margin_bottom = 13.0 +size_flags_vertical = 4 +texture = ExtResource( 10 ) + +[node name="ShardsNeeded" type="Label" parent="CurrentLevel/ShardsBlock"] +unique_name_in_owner = true +modulate = Color( 0.933333, 0.247059, 0.247059, 1 ) +margin_left = 21.0 +margin_top = 3.0 +margin_right = 35.0 +margin_bottom = 13.0 +custom_fonts/font = ExtResource( 12 ) +text = "15" + +[node name="LevelStats" type="Panel" parent="."] +visible = false +margin_left = 40.0 +margin_top = 45.0 +margin_right = 216.0 +margin_bottom = 147.0 +grow_horizontal = 2 +grow_vertical = 2 +rect_min_size = Vector2( 176, 102 ) +rect_pivot_offset = Vector2( 88, 51 ) +theme = ExtResource( 4 ) + +[node name="HighScoreLabel" type="Label" parent="LevelStats"] +material = ExtResource( 6 ) +margin_left = 16.0 +margin_top = 16.0 +margin_right = 160.0 +margin_bottom = 26.0 +theme = ExtResource( 4 ) +text = "High SCORE:" +align = 1 + +[node name="PressStart" type="Label" parent="LevelStats"] +material = ExtResource( 6 ) +margin_left = 16.0 +margin_top = -13.0 +margin_right = 160.0 +margin_bottom = -3.0 +theme = ExtResource( 4 ) +text = "press start to play!" +align = 1 + +[node name="Any" type="Label" parent="LevelStats"] +material = ExtResource( 6 ) +margin_left = 39.0 +margin_top = 27.0 +margin_right = 67.0 +margin_bottom = 37.0 +theme = ExtResource( 4 ) +text = "any%" +align = 1 + +[node name="ScoreAny" type="Label" parent="LevelStats/Any"] +unique_name_in_owner = true +use_parent_material = true +margin_top = 13.0 +margin_right = 28.0 +margin_bottom = 23.0 +text = "0000" + +[node name="TimeAny" type="Label" parent="LevelStats/Any"] +unique_name_in_owner = true +use_parent_material = true +margin_left = -11.0 +margin_top = 26.0 +margin_right = 38.0 +margin_bottom = 36.0 +text = "0:00.00" + +[node name="100" type="Label" parent="LevelStats"] +material = ExtResource( 6 ) +margin_left = 102.0 +margin_top = 27.0 +margin_right = 130.0 +margin_bottom = 37.0 +theme = ExtResource( 4 ) +text = "100%" +align = 1 + +[node name="Score100" type="Label" parent="LevelStats/100"] +unique_name_in_owner = true +use_parent_material = true +margin_top = 13.0 +margin_right = 28.0 +margin_bottom = 23.0 +text = "0000" + +[node name="Time100" type="Label" parent="LevelStats/100"] +unique_name_in_owner = true +use_parent_material = true +margin_left = -11.0 +margin_top = 26.0 +margin_right = 38.0 +margin_bottom = 36.0 +text = "0:00.00" + +[node name="ShardTitle" type="Label" parent="LevelStats"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_left = 3.0 +margin_top = 89.0 +margin_right = 173.0 +margin_bottom = 99.0 +theme = ExtResource( 4 ) +text = "AAAAAAAAAAAAAAAAAAAAAAAA" +align = 1 + +[node name="EmptyShards" type="Node2D" parent="LevelStats"] +position = Vector2( -40, -35 ) + +[node name="EmptyShard1" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 76, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard2" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 91, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard3" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 106, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard4" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 121, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard5" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 136, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard6" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 151, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard7" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 166, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard8" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 181, 118 ) +texture = ExtResource( 10 ) + +[node name="FilledShards" type="Node2D" parent="LevelStats"] +unique_name_in_owner = true + +[node name="Shard1" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 31, 80 ) + +[node name="Shard2" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 46, 80 ) + +[node name="Shard3" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 61, 80 ) + +[node name="Shard4" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 76, 80 ) + +[node name="Shard5" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 91, 80 ) + +[node name="Shard6" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 106, 80 ) + +[node name="Shard7" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 121, 80 ) + +[node name="Shard8" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 136, 80 ) + +[node name="ShardArrow" type="Sprite" parent="LevelStats"] +unique_name_in_owner = true +position = Vector2( 31, 71 ) +texture = ExtResource( 14 ) +offset = Vector2( 5, 0 ) + +[node name="BossCenter" type="Control" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_scale = Vector2( 1e-05, 0.04 ) +rect_pivot_offset = Vector2( 128, 96 ) + +[node name="PressStartBoss" type="Label" parent="BossCenter"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_top = 56.0 +margin_right = 256.0 +margin_bottom = 66.0 +theme = ExtResource( 4 ) +text = "press start to fight!" +align = 1 + +[node name="BossTimeBox" type="Panel" parent="BossCenter"] +margin_left = 48.0 +margin_top = 72.0 +margin_right = 200.0 +margin_bottom = 122.0 +grow_horizontal = 2 +grow_vertical = 2 +rect_min_size = Vector2( 120, 50 ) +rect_pivot_offset = Vector2( 88, 51 ) +theme = ExtResource( 4 ) + +[node name="VBoxContainer" type="VBoxContainer" parent="BossCenter/BossTimeBox"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 8.0 +margin_top = 8.0 +margin_right = -8.0 +margin_bottom = -8.0 +alignment = 1 + +[node name="BossFlavorText" type="Label" parent="BossCenter/BossTimeBox/VBoxContainer"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_top = 5.0 +margin_right = 136.0 +margin_bottom = 15.0 +theme = ExtResource( 4 ) +text = "speediest smashing" +align = 1 + +[node name="BossTime" type="Label" parent="BossCenter/BossTimeBox/VBoxContainer"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_top = 19.0 +margin_right = 136.0 +margin_bottom = 29.0 +text = "0:00.00" +align = 1 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 6 ) +anims/hide_boss = SubResource( 16 ) +anims/hide_exit = SubResource( 11 ) +anims/hide_menu = SubResource( 13 ) +anims/hide_stats = SubResource( 8 ) +anims/show_boss = SubResource( 17 ) +anims/show_exit = SubResource( 12 ) +anims/show_menu = SubResource( 14 ) +anims/show_stats = SubResource( 7 ) + +[node name="AuxPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 18 ) +anims/hide_boss = SubResource( 19 ) +anims/hide_exit = SubResource( 20 ) +anims/hide_menu = SubResource( 21 ) +anims/hide_stats = SubResource( 22 ) +anims/show_boss = SubResource( 23 ) +anims/show_exit = SubResource( 24 ) +anims/show_menu = SubResource( 25 ) +anims/show_stats = SubResource( 26 ) + +[node name="ShardCount" type="Label" parent="."] +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -238.0 +margin_top = -189.0 +margin_right = -224.0 +margin_bottom = -179.0 +theme = ExtResource( 4 ) +custom_fonts/font = ExtResource( 12 ) +text = "72" + +[node name="MenuIndicator" type="HBoxContainer" parent="."] +margin_left = 3.0 +margin_top = 23.0 +margin_right = 47.0 +margin_bottom = 33.0 +custom_constants/separation = 2 +script = ExtResource( 23 ) +action = "ui_cancel" + +[node name="Label" type="Label" parent="MenuIndicator"] +margin_right = 35.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 12 ) +text = "Menu:" + +[node name="KeyboardButton" type="Label" parent="MenuIndicator"] +margin_left = 37.0 +margin_right = 44.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 12 ) +text = "X" + +[node name="GamepadButton" type="TextureRect" parent="MenuIndicator"] +visible = false +margin_left = 46.0 +margin_right = 58.0 +margin_bottom = 10.0 +size_flags_vertical = 4 +texture = SubResource( 37 ) + +[node name="Shard" parent="." instance=ExtResource( 11 )] +position = Vector2( 4, 5 ) + +[node name="MenuPopup" type="CenterContainer" parent="."] +unique_name_in_owner = true +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_pivot_offset = Vector2( 128, 96 ) +theme = ExtResource( 4 ) + +[node name="PanelContainer" type="PanelContainer" parent="MenuPopup"] +margin_left = 64.0 +margin_top = 93.0 +margin_right = 192.0 +margin_bottom = 99.0 +rect_min_size = Vector2( 128, 0 ) + +[node name="VBoxContainer" type="VBoxContainer" parent="MenuPopup/PanelContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 125.0 +margin_bottom = 55.0 + +[node name="Resume" type="HBoxContainer" parent="MenuPopup/PanelContainer/VBoxContainer"] +margin_right = 122.0 +margin_bottom = 10.0 +custom_constants/separation = 0 +alignment = 1 + +[node name="ResumeButton" type="TextureButton" parent="MenuPopup/PanelContainer/VBoxContainer/Resume"] +unique_name_in_owner = true +margin_left = 32.0 +margin_right = 40.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) +button_mask = 0 +texture_focused = ExtResource( 5 ) +expand = true +stretch_mode = 3 + +[node name="Label" type="Label" parent="MenuPopup/PanelContainer/VBoxContainer/Resume"] +margin_left = 40.0 +margin_right = 82.0 +margin_bottom = 10.0 +text = "resume" + +[node name="Spacer" type="Control" parent="MenuPopup/PanelContainer/VBoxContainer/Resume"] +margin_left = 82.0 +margin_right = 90.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) + +[node name="Palettes" type="HBoxContainer" parent="MenuPopup/PanelContainer/VBoxContainer"] +margin_top = 14.0 +margin_right = 122.0 +margin_bottom = 24.0 +custom_constants/separation = 0 +alignment = 1 + +[node name="PalettesButton" type="TextureButton" parent="MenuPopup/PanelContainer/VBoxContainer/Palettes"] +margin_left = 25.0 +margin_right = 33.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) +button_mask = 0 +texture_focused = ExtResource( 5 ) +expand = true +stretch_mode = 3 + +[node name="Label" type="Label" parent="MenuPopup/PanelContainer/VBoxContainer/Palettes"] +margin_left = 33.0 +margin_right = 89.0 +margin_bottom = 10.0 +text = "palettes" + +[node name="Spacer" type="Control" parent="MenuPopup/PanelContainer/VBoxContainer/Palettes"] +margin_left = 89.0 +margin_right = 97.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) + +[node name="OptionsButton" type="HBoxContainer" parent="MenuPopup/PanelContainer/VBoxContainer"] +margin_top = 28.0 +margin_right = 122.0 +margin_bottom = 38.0 +custom_constants/separation = 0 +alignment = 1 + +[node name="OptionsButton" type="TextureButton" parent="MenuPopup/PanelContainer/VBoxContainer/OptionsButton"] +unique_name_in_owner = true +margin_left = 28.0 +margin_right = 36.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) +button_mask = 0 +texture_focused = ExtResource( 5 ) +expand = true +stretch_mode = 3 + +[node name="Label" type="Label" parent="MenuPopup/PanelContainer/VBoxContainer/OptionsButton"] +margin_left = 36.0 +margin_right = 85.0 +margin_bottom = 10.0 +text = "OPTIONS" + +[node name="Spacer" type="Control" parent="MenuPopup/PanelContainer/VBoxContainer/OptionsButton"] +margin_left = 85.0 +margin_right = 93.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) + +[node name="Menu" type="HBoxContainer" parent="MenuPopup/PanelContainer/VBoxContainer"] +margin_top = 42.0 +margin_right = 122.0 +margin_bottom = 52.0 +rect_pivot_offset = Vector2( -140, -37 ) +custom_constants/separation = 0 +alignment = 1 + +[node name="MenuButton" type="TextureButton" parent="MenuPopup/PanelContainer/VBoxContainer/Menu"] +margin_left = 21.0 +margin_right = 29.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) +button_mask = 0 +texture_focused = ExtResource( 5 ) +expand = true +stretch_mode = 3 + +[node name="Label" type="Label" parent="MenuPopup/PanelContainer/VBoxContainer/Menu"] +margin_left = 29.0 +margin_right = 92.0 +margin_bottom = 10.0 +text = "main menu" + +[node name="Spacer" type="Control" parent="MenuPopup/PanelContainer/VBoxContainer/Menu"] +margin_left = 92.0 +margin_right = 100.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) + +[node name="ExitPopup" type="CenterContainer" parent="."] +unique_name_in_owner = true +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_scale = Vector2( 1e-05, 0.011 ) +rect_pivot_offset = Vector2( 128, 96 ) +theme = ExtResource( 4 ) + +[node name="PanelContainer" type="PanelContainer" parent="ExitPopup"] +margin_left = 125.0 +margin_top = 93.0 +margin_right = 131.0 +margin_bottom = 99.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="ExitPopup/PanelContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 108.0 +margin_bottom = 27.0 + +[node name="Label" type="Label" parent="ExitPopup/PanelContainer/VBoxContainer"] +margin_right = 105.0 +margin_bottom = 10.0 +text = "Return to menu?" +align = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="ExitPopup/PanelContainer/VBoxContainer"] +margin_top = 14.0 +margin_right = 105.0 +margin_bottom = 24.0 +custom_constants/separation = 8 +alignment = 1 + +[node name="StayHere" type="Button" parent="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +margin_right = 48.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath(".") +focus_neighbour_bottom = NodePath(".") +size_flags_horizontal = 3 +text = "NO" + +[node name="ExitMenu" type="Button" parent="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer"] +margin_left = 56.0 +margin_right = 105.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath(".") +focus_neighbour_bottom = NodePath(".") +size_flags_horizontal = 3 +text = "YES" + +[node name="OptionsScreen" parent="." instance=ExtResource( 18 )] +visible = false + +[node name="MenuSounds" parent="." instance=ExtResource( 19 )] +unique_name_in_owner = true + +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Resume/ResumeButton" to="." method="_on_ResumeButton_button_down"] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Resume/ResumeButton" to="AnimationPlayer" method="play" binds= [ "hide_menu" ]] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Resume/ResumeButton" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="MenuPopup/PanelContainer/VBoxContainer/Resume/ResumeButton" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Palettes/PalettesButton" to="." method="_on_PalettesButton_button_down"] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Palettes/PalettesButton" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="MenuPopup/PanelContainer/VBoxContainer/Palettes/PalettesButton" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/OptionsButton/OptionsButton" to="." method="_on_OptionsButton_button_down"] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/OptionsButton/OptionsButton" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="MenuPopup/PanelContainer/VBoxContainer/OptionsButton/OptionsButton" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Menu/MenuButton" to="AnimationPlayer" method="play" binds= [ "show_exit" ]] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Menu/MenuButton" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="MenuPopup/PanelContainer/VBoxContainer/Menu/MenuButton" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/StayHere" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/StayHere" to="MenuSounds" method="play_select_sound"] +[connection signal="pressed" from="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/StayHere" to="." method="_on_StayHere_pressed"] +[connection signal="button_down" from="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/ExitMenu" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/ExitMenu" to="MenuSounds" method="play_select_sound"] +[connection signal="pressed" from="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/ExitMenu" to="." method="_on_ExitMenu_pressed"] +[connection signal="exit" from="OptionsScreen" to="." method="_on_OptionsScreen_exit"] diff --git a/menus/main_menu.gd b/menus/main_menu.gd new file mode 100644 index 0000000..d62e9bb --- /dev/null +++ b/menus/main_menu.gd @@ -0,0 +1,71 @@ +class_name MainMenu +extends Node + +onready var continue_button = $Panel/Continue + +func _ready(): + Game.marathon_mode = false + Fade.fade_in(Options.transition_speed_secs) + #Grey out continue if no save files + SpeedrunTimer.visible = false + SpeedrunTimer.timer_running = false + yield(get_tree(),"idle_frame") + if Save.current_file and not Save.current_file.debug: + $Panel/Continue.grab_focus() + else: + $Panel/Body/GreyedContinue.visible = true + continue_button.visible = false + $Panel/FileSelect.grab_focus() + if Game.last_mm_button != null: + get_node(Game.last_mm_button).grab_focus() + else: + $Panel/FileSelect.grab_focus() + +func _on_Continue_button_down(): + Game.last_mm_button = "Panel/Continue" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() + + +func _on_FileSelect_button_down(): + Game.last_mm_button = @"Panel/FileSelect" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/file_select.tscn").instance() + + +func _on_Exit_button_down(): + Game.last_mm_button = @"Panel/FileSelect" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + get_tree().quit() + + +func _on_SoundTest_button_down(): + Game.last_mm_button = @"Panel/SoundTest" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/sound_test.tscn").instance() + + + +func _on_HighScores_button_down() -> void: + Game.last_mm_button = @"Panel/HighScores" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/scoreboards_scholar.tscn").instance() + + +func _on_Options_button_down() -> void: + Game.last_mm_button = @"Panel/Options" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/options_menu.tscn").instance() + + +func _on_MarathonMode_button_down() -> void: + Game.last_mm_button = @"Panel/MarathonMode" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/marathon_start.tscn").instance() diff --git a/menus/main_menu.tscn b/menus/main_menu.tscn new file mode 100644 index 0000000..a12ec4f --- /dev/null +++ b/menus/main_menu.tscn @@ -0,0 +1,266 @@ +[gd_scene load_steps=15 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/hud/sg_menu.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=4] +[ext_resource path="res://menus/main_menu.gd" type="Script" id=5] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=6] +[ext_resource path="res://graphics/hud/sg_menu_blink.png" type="Texture" id=7] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=8] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=9] + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 6 ) +shader_param/color_1 = Color( 1, 0.835294, 0.619608, 1 ) +shader_param/color_2 = Color( 1, 0.478431, 0.219608, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 12, 0 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform( 1, -2, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 6 ) +shader_param/color_1 = Color( 0.62, 0.797333, 1, 1 ) +shader_param/color_2 = Color( 0.22, 0.428, 1, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 24, 0 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform( 1, 1, 0, 2, 1, 0, 0, 0, 1, 0, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=6] +shader = ExtResource( 2 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 1 ) +shader_param/offset = Vector2( 0, 1 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 2 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="Animation" id=5] +resource_name = "blink" +length = 5.0 +loop = true +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("SG/Eyes:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 4.3, 4.55 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("SG/Eyes:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 4.3, 4.35, 4.4, 4.45, 4.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 1, 0 ] +} + +[node name="MainMenu" type="Node"] +script = ExtResource( 5 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 2 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 136.0 + +[node name="Background2" type="ColorRect" parent="."] +material = SubResource( 3 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_bottom = -56.0 + +[node name="SG" type="TextureRect" parent="."] +margin_left = 176.0 +margin_top = 40.0 +margin_right = 242.0 +margin_bottom = 187.0 +texture = ExtResource( 3 ) + +[node name="Eyes" type="Sprite" parent="SG"] +visible = false +position = Vector2( 33, 38 ) +texture = ExtResource( 7 ) +hframes = 3 + +[node name="Panel" type="Panel" parent="."] +material = SubResource( 6 ) +margin_left = 16.0 +margin_top = 32.0 +margin_right = 136.0 +margin_bottom = 120.0 +theme = ExtResource( 1 ) + +[node name="Body" type="Label" parent="Panel"] +material = SubResource( 6 ) +margin_left = 16.0 +margin_top = 8.0 +margin_right = 112.0 +margin_bottom = 80.0 +text = "file select +marathon mode +options +high scores +sound test +exit" + +[node name="GreyedContinue" type="Label" parent="Panel/Body"] +visible = false +material = SubResource( 6 ) +margin_top = 9001.0 +margin_right = 56.0 +margin_bottom = 9011.0 +custom_colors/font_color = Color( 0.690196, 0.690196, 0.690196, 1 ) +text = "Continue" + +[node name="Continue" type="TextureButton" parent="Panel"] +visible = false +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 9.0 +margin_right = 16.0 +margin_bottom = 17.0 +focus_neighbour_top = NodePath("../Exit") +focus_neighbour_bottom = NodePath("../FileSelect") +texture_focused = ExtResource( 4 ) + +[node name="FileSelect" type="TextureButton" parent="Panel"] +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 9.0 +margin_right = 16.0 +margin_bottom = 17.0 +focus_neighbour_top = NodePath("../Exit") +focus_neighbour_bottom = NodePath("../MarathonMode") +texture_focused = ExtResource( 4 ) + +[node name="MarathonMode" type="TextureButton" parent="Panel"] +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 22.0 +margin_right = 16.0 +margin_bottom = 30.0 +focus_neighbour_top = NodePath("../FileSelect") +focus_neighbour_bottom = NodePath("../Options") +texture_focused = ExtResource( 4 ) + +[node name="Augmentations" type="TextureButton" parent="Panel"] +visible = false +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 48.0 +margin_right = 16.0 +margin_bottom = 56.0 +focus_neighbour_top = NodePath("../MarathonMode") +focus_neighbour_bottom = NodePath("../Options") +texture_focused = ExtResource( 4 ) + +[node name="Options" type="TextureButton" parent="Panel"] +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 35.0 +margin_right = 16.0 +margin_bottom = 43.0 +focus_neighbour_top = NodePath("../MarathonMode") +focus_neighbour_bottom = NodePath("../HighScores") +texture_focused = ExtResource( 4 ) + +[node name="HighScores" type="TextureButton" parent="Panel"] +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 48.0 +margin_right = 16.0 +margin_bottom = 56.0 +focus_neighbour_top = NodePath("../Options") +focus_neighbour_bottom = NodePath("../SoundTest") +texture_focused = ExtResource( 4 ) + +[node name="SoundTest" type="TextureButton" parent="Panel"] +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 61.0 +margin_right = 16.0 +margin_bottom = 69.0 +focus_neighbour_top = NodePath("../HighScores") +focus_neighbour_bottom = NodePath("../Exit") +texture_focused = ExtResource( 4 ) + +[node name="Exit" type="TextureButton" parent="Panel"] +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 74.0 +margin_right = 16.0 +margin_bottom = 82.0 +focus_neighbour_top = NodePath("../SoundTest") +focus_neighbour_bottom = NodePath("../FileSelect") +texture_focused = ExtResource( 4 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "blink" +anims/blink = SubResource( 5 ) + +[node name="Label" type="Label" parent="."] +material = ExtResource( 8 ) +margin_left = 8.0 +margin_top = 140.0 +margin_right = 183.0 +margin_bottom = 189.0 +theme = ExtResource( 1 ) +text = "REvolution - +The forceful overthrow of +a social order in favor +of a new future" + +[node name="Label2" type="Label" parent="."] +material = ExtResource( 8 ) +margin_left = 8.0 +margin_top = 8.0 +margin_right = 218.0 +margin_bottom = 57.0 +theme = ExtResource( 1 ) +text = "Welcome to the future... 2083!" +align = 1 + +[node name="MenuSounds" parent="." instance=ExtResource( 9 )] + +[connection signal="button_down" from="Panel/Continue" to="." method="_on_Continue_button_down"] +[connection signal="button_down" from="Panel/Continue" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/Continue" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/FileSelect" to="." method="_on_FileSelect_button_down"] +[connection signal="button_down" from="Panel/FileSelect" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/FileSelect" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/MarathonMode" to="." method="_on_MarathonMode_button_down"] +[connection signal="button_down" from="Panel/MarathonMode" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/MarathonMode" to="MenuSounds" method="play_select_sound"] +[connection signal="focus_entered" from="Panel/Augmentations" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/Options" to="." method="_on_Options_button_down"] +[connection signal="button_down" from="Panel/Options" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/Options" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/HighScores" to="." method="_on_HighScores_button_down"] +[connection signal="button_down" from="Panel/HighScores" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/HighScores" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/SoundTest" to="." method="_on_SoundTest_button_down"] +[connection signal="button_down" from="Panel/SoundTest" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/SoundTest" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/Exit" to="." method="_on_Exit_button_down"] +[connection signal="button_down" from="Panel/Exit" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/Exit" to="MenuSounds" method="play_select_sound"] diff --git a/menus/marathon_results.gd b/menus/marathon_results.gd new file mode 100644 index 0000000..272d492 --- /dev/null +++ b/menus/marathon_results.gd @@ -0,0 +1,19 @@ +extends Control + + +onready var score: Label = $"%Score" +onready var shards: Label = $"%Shards" + + +func _ready() -> void: + Audio.play_music(load("res://audio/music/rumble_revolution_demo.ogg")) + score.text = score.text % Game.marathon_score + shards.text = shards.text % Game.marathon_shards + $"%Deaths".text = $"%Deaths".text % Game.marathon_deaths + Fade.fade_in() + + +func _input(event: InputEvent) -> void: + if Input.is_action_just_pressed("ui_accept"): + Fade.fade_out(Options.transition_speed_secs) + Game.change_map(load("res://menus/marathon_start.tscn")) diff --git a/menus/marathon_results.tscn b/menus/marathon_results.tscn new file mode 100644 index 0000000..b3be597 --- /dev/null +++ b/menus/marathon_results.tscn @@ -0,0 +1,99 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://menus/marathon_results.gd" type="Script" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 1, 0.709804, 0.380392, 1 ) +shader_param/color_2 = Color( 0.345098, 0.945098, 0.905882, 1 ) +shader_param/checker_size = Vector2( 24, 24 ) +shader_param/pan_speed = Vector2( 8, 12 ) +shader_param/cycle_speed = Vector2( 4, 4 ) +shader_param/cycle_alternation = Vector2( 4, 4 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 1, 0, 0 ) + +[node name="MarathonResults" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) +script = ExtResource( 3 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Victory" type="Label" parent="."] +material = ExtResource( 4 ) +margin_top = 24.0 +margin_right = 256.0 +margin_bottom = 47.0 +text = "Game is over, when will another +day's adventure begin?" +align = 1 + +[node name="Victory2" type="Label" parent="."] +material = ExtResource( 4 ) +margin_top = 144.0 +margin_right = 256.0 +margin_bottom = 180.0 +text = "No matter what happens you +will always remain a triumphant +hero, too." +align = 1 + +[node name="PanelContainer" type="PanelContainer" parent="."] +margin_left = 68.0 +margin_top = 64.0 +margin_right = 188.0 +margin_bottom = 134.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 117.0 +margin_bottom = 67.0 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"] +material = ExtResource( 4 ) +margin_right = 114.0 +margin_bottom = 10.0 +text = "Good Job!" +align = 1 +valign = 1 + +[node name="Score" type="Label" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +material = ExtResource( 4 ) +margin_top = 16.0 +margin_right = 114.0 +margin_bottom = 26.0 +size_flags_vertical = 6 +text = "Score: %05d" +align = 1 +valign = 1 + +[node name="Shards" type="Label" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +material = ExtResource( 4 ) +margin_top = 34.0 +margin_right = 114.0 +margin_bottom = 44.0 +size_flags_vertical = 6 +text = "got %d shards!" +align = 1 +valign = 1 + +[node name="Deaths" type="Label" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +material = ExtResource( 4 ) +margin_top = 52.0 +margin_right = 114.0 +margin_bottom = 62.0 +size_flags_vertical = 6 +text = "Died %d times." +align = 1 +valign = 1 diff --git a/menus/marathon_select_lives.gd b/menus/marathon_select_lives.gd new file mode 100644 index 0000000..0ae291d --- /dev/null +++ b/menus/marathon_select_lives.gd @@ -0,0 +1,89 @@ +extends Button + + +const INFINITY_SIGIL := "▬↨" + + +var delay := 1.0 +var cooldown := 0.0 + + +onready var back_arrow: TextureRect = $"../BackArrow" +onready var next_arrow: TextureRect = $"../NextArrow" + + +func _ready() -> void: + _update_display() + + +func _process(delta: float) -> void: + if not has_focus(): + return + if Input.is_action_pressed("ui_left"): + if cooldown <= 0.0: + cooldown = delay + delay *= 0.5 + if Game.use_lives: + Game.marathon_lives -= 1 + if Game.marathon_lives < 0: + Game.use_lives = false + cooldown = INF + else: + Game.use_lives = true + Game.marathon_lives = 999 + cooldown -= delta + _update_display() + elif Input.is_action_pressed("ui_right"): + if cooldown <= 0.0: + cooldown = delay + delay *= 0.5 + if Game.use_lives: + Game.marathon_lives += 1 + if Game.marathon_lives > 999: + Game.use_lives = false + cooldown = INF + else: + Game.use_lives = true + Game.marathon_lives = 0 + cooldown -= delta + _update_display() + else: + cooldown = 0.0 + delay = 1.0 + + +func _update_display() -> void: + if Game.use_lives: + text = "%03d" % Game.marathon_lives + else: + text = INFINITY_SIGIL + + +#func _gui_input(event: InputEvent) -> void: +# if event.is_action_pressed("ui_left"): +# if Game.use_lives: +# Game.marathon_lives -= 1 +# if Game.marathon_lives < 0: +# Game.use_lives = false +# else: +# Game.use_lives = true +# Game.marathon_lives = 999 +# if event.is_action_pressed("ui_right"): +# if Game.use_lives: +# Game.marathon_lives += 1 +# if Game.marathon_lives > 999: +# Game.use_lives = false +# else: +# Game.use_lives = true +# Game.marathon_lives = 0 +# _update_display() + + +func _on_focus_entered() -> void: + back_arrow.visible = true + next_arrow.visible = true + + +func _on_focus_exited() -> void: + back_arrow.visible = false + next_arrow.visible = false diff --git a/menus/marathon_start.gd b/menus/marathon_start.gd new file mode 100644 index 0000000..38e86ad --- /dev/null +++ b/menus/marathon_start.gd @@ -0,0 +1,48 @@ +extends Control + + +const DISABLED_COLOR := Color(0xb0b0b0ff) + + +onready var difficulty_buttons := [ + $"%BeginnerButton", + $"%AdvancedButton", + $"%AdvancedButton", + $"%ProfessionalButton", +] + + +func _ready() -> void: + Fade.fade_in(0.4) + yield(get_tree(), "idle_frame") + difficulty_buttons[Game.difficulty].grab_focus() + + +func _input(event: InputEvent) -> void: + if Input.is_action_just_pressed("ui_accept") or Input.is_action_just_pressed("pause"): + Game.marathon_mode = true + Game.lives = Game.marathon_lives + Game.marathon_score = 0 + Game.marathon_shards = 0 + Game.marathon_deaths = 0 + Game.current_level = LevelData.marathon_start + Game.change_map(LevelData.levels[Game.current_level].scene) + elif Input.is_action_just_pressed("ui_cancel"): + Game.marathon_mode = false + Game.current_level = 0 + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(load("res://menus/main_menu.tscn").instance()) + + +func _set_difficulty(difficulty: int) -> void: + var use_lives := Game.use_lives + Game.difficulty = difficulty + Game.use_lives = use_lives + for b in difficulty_buttons: + b.get_parent().modulate = DISABLED_COLOR + difficulty_buttons[difficulty].get_parent().modulate = Color.white + + +func _on_DifficultySelect_focus_entered() -> void: + difficulty_buttons[Game.difficulty].grab_focus() diff --git a/menus/marathon_start.tscn b/menus/marathon_start.tscn new file mode 100644 index 0000000..60eeda7 --- /dev/null +++ b/menus/marathon_start.tscn @@ -0,0 +1,253 @@ +[gd_scene load_steps=13 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://menus/marathon_start.gd" type="Script" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=5] +[ext_resource path="res://graphics/hud/file_select_arrow.png" type="Texture" id=6] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=7] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=8] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=9] +[ext_resource path="res://menus/marathon_select_lives.gd" type="Script" id=10] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.815686, 0.917647, 0.462745, 1 ) +shader_param/color_2 = Color( 0.152941, 0.772549, 0.356863, 1 ) +shader_param/checker_size = Vector2( 24, 24 ) +shader_param/pan_speed = Vector2( 8, 12 ) +shader_param/cycle_speed = Vector2( 4, 4 ) +shader_param/cycle_alternation = Vector2( 4, 4 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 8 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 8 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[node name="MarathonStart" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) +script = ExtResource( 3 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="PressStart" type="Label" parent="."] +material = ExtResource( 5 ) +anchor_right = 1.0 +margin_top = 160.0 +margin_bottom = 182.0 +theme = ExtResource( 2 ) +text = "Press start to begin" +align = 1 +valign = 1 + +[node name="FlavorText" type="Label" parent="."] +material = ExtResource( 5 ) +anchor_right = 1.0 +margin_top = 8.0 +margin_bottom = 31.0 +theme = ExtResource( 2 ) +text = "Begin your adventure... +in revolution 2083 world" +align = 1 +valign = 1 + +[node name="DifficultySelect" type="PanelContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -112.0 +margin_top = -48.0 +margin_right = 112.0 +focus_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="DifficultySelect"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 221.0 +margin_bottom = 45.0 + +[node name="DiffcultySelect" type="Label" parent="DifficultySelect/VBoxContainer"] +material = ExtResource( 5 ) +margin_right = 218.0 +margin_bottom = 14.0 +rect_min_size = Vector2( 0, 14 ) +text = "difficulty select:" +align = 1 +valign = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="DifficultySelect/VBoxContainer"] +margin_top = 18.0 +margin_right = 218.0 +margin_bottom = 42.0 +custom_constants/separation = 8 +alignment = 1 + +[node name="Beginner" type="VBoxContainer" parent="DifficultySelect/VBoxContainer/HBoxContainer"] +margin_left = 3.0 +margin_right = 59.0 +margin_bottom = 24.0 +custom_constants/separation = 2 + +[node name="Label" type="Label" parent="DifficultySelect/VBoxContainer/HBoxContainer/Beginner"] +margin_right = 56.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 7 ) +text = "Beginner" + +[node name="BeginnerButton" type="TextureButton" parent="DifficultySelect/VBoxContainer/HBoxContainer/Beginner"] +unique_name_in_owner = true +material = ExtResource( 5 ) +margin_left = 28.0 +margin_top = 12.0 +margin_right = 28.0 +margin_bottom = 24.0 +rect_min_size = Vector2( 0, 12 ) +focus_neighbour_right = NodePath("../../Advanced/AdvancedButton") +size_flags_horizontal = 4 +texture_focused = ExtResource( 6 ) +expand = true +stretch_mode = 3 + +[node name="Advanced" type="VBoxContainer" parent="DifficultySelect/VBoxContainer/HBoxContainer"] +margin_left = 67.0 +margin_right = 123.0 +margin_bottom = 24.0 +custom_constants/separation = 2 + +[node name="Label" type="Label" parent="DifficultySelect/VBoxContainer/HBoxContainer/Advanced"] +margin_right = 56.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 7 ) +text = "Advanced" + +[node name="AdvancedButton" type="TextureButton" parent="DifficultySelect/VBoxContainer/HBoxContainer/Advanced"] +unique_name_in_owner = true +material = ExtResource( 5 ) +margin_left = 28.0 +margin_top = 12.0 +margin_right = 28.0 +margin_bottom = 24.0 +rect_min_size = Vector2( 0, 12 ) +focus_neighbour_left = NodePath("../../Beginner/BeginnerButton") +focus_neighbour_right = NodePath("../../Professional/ProfessionalButton") +size_flags_horizontal = 4 +texture_focused = ExtResource( 6 ) +expand = true +stretch_mode = 3 + +[node name="Professional" type="VBoxContainer" parent="DifficultySelect/VBoxContainer/HBoxContainer"] +margin_left = 131.0 +margin_right = 215.0 +margin_bottom = 24.0 +custom_constants/separation = 2 + +[node name="Label" type="Label" parent="DifficultySelect/VBoxContainer/HBoxContainer/Professional"] +margin_right = 84.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 7 ) +text = "Professional" + +[node name="ProfessionalButton" type="TextureButton" parent="DifficultySelect/VBoxContainer/HBoxContainer/Professional"] +unique_name_in_owner = true +material = ExtResource( 5 ) +margin_left = 42.0 +margin_top = 12.0 +margin_right = 42.0 +margin_bottom = 24.0 +rect_min_size = Vector2( 0, 12 ) +focus_neighbour_left = NodePath("../../Advanced/AdvancedButton") +size_flags_horizontal = 4 +texture_focused = ExtResource( 6 ) +expand = true +stretch_mode = 3 + +[node name="LivesSelect" type="PanelContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -66.0 +margin_top = 7.0 +margin_right = 66.0 +margin_bottom = 39.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="LivesSelect"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 129.0 +margin_bottom = 29.0 +custom_constants/separation = 0 + +[node name="Label" type="Label" parent="LivesSelect/VBoxContainer"] +material = ExtResource( 5 ) +margin_right = 126.0 +margin_bottom = 14.0 +rect_min_size = Vector2( 0, 14 ) +text = "number of lives:" +align = 1 +valign = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="LivesSelect/VBoxContainer"] +margin_top = 14.0 +margin_right = 126.0 +margin_bottom = 26.0 +rect_min_size = Vector2( 0, 12 ) +size_flags_horizontal = 3 +alignment = 1 + +[node name="BackArrow" type="TextureRect" parent="LivesSelect/VBoxContainer/HBoxContainer"] +visible = false +material = SubResource( 2 ) +margin_left = 51.0 +margin_top = 2.0 +margin_right = 57.0 +margin_bottom = 10.0 +size_flags_vertical = 4 +texture = ExtResource( 9 ) +flip_h = true + +[node name="SelectLives" type="Button" parent="LivesSelect/VBoxContainer/HBoxContainer"] +margin_left = 56.0 +margin_right = 70.0 +margin_bottom = 12.0 +focus_neighbour_left = NodePath(".") +focus_neighbour_top = NodePath("../../../../DifficultySelect") +focus_neighbour_right = NodePath(".") +theme = ExtResource( 2 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 7 ) +text = "▬↨" +script = ExtResource( 10 ) + +[node name="NextArrow" type="TextureRect" parent="LivesSelect/VBoxContainer/HBoxContainer"] +visible = false +material = SubResource( 3 ) +margin_left = 69.0 +margin_top = 2.0 +margin_right = 75.0 +margin_bottom = 10.0 +size_flags_vertical = 4 +texture = ExtResource( 9 ) + +[connection signal="focus_entered" from="DifficultySelect" to="." method="_on_DifficultySelect_focus_entered"] +[connection signal="focus_entered" from="DifficultySelect/VBoxContainer/HBoxContainer/Beginner/BeginnerButton" to="." method="_set_difficulty" binds= [ 0 ]] +[connection signal="focus_entered" from="DifficultySelect/VBoxContainer/HBoxContainer/Advanced/AdvancedButton" to="." method="_set_difficulty" binds= [ 2 ]] +[connection signal="focus_entered" from="DifficultySelect/VBoxContainer/HBoxContainer/Professional/ProfessionalButton" to="." method="_set_difficulty" binds= [ 3 ]] +[connection signal="focus_entered" from="LivesSelect/VBoxContainer/HBoxContainer/SelectLives" to="LivesSelect/VBoxContainer/HBoxContainer/SelectLives" method="_on_focus_entered"] +[connection signal="focus_exited" from="LivesSelect/VBoxContainer/HBoxContainer/SelectLives" to="LivesSelect/VBoxContainer/HBoxContainer/SelectLives" method="_on_focus_exited"] diff --git a/menus/music_select.gd b/menus/music_select.gd new file mode 100644 index 0000000..d181cf3 --- /dev/null +++ b/menus/music_select.gd @@ -0,0 +1,21 @@ +extends TextureButton + +export (Array, String) var titles +export (Array, AudioStream) var songs +var current_selection = 0 +onready var body = $MusicLabel/Label + +func _ready(): + call_deferred("grab_focus") + +func _gui_input(event): + if Input.is_action_just_pressed("ui_left"): + current_selection -= 1 + if Input.is_action_just_pressed("ui_right"): + current_selection += 1 + if Input.is_action_just_pressed("ui_accept"): + Audio.play_sound(songs[current_selection],Audio.ac_music) + current_selection = posmod(current_selection,songs.size()) + body.text = titles[current_selection] + + diff --git a/menus/newgrounds_login.gd b/menus/newgrounds_login.gd new file mode 100644 index 0000000..3ded771 --- /dev/null +++ b/menus/newgrounds_login.gd @@ -0,0 +1,43 @@ +extends Control + +onready var tab_container: TabContainer = $"%TabContainer" + +func _ready() -> void: + visible = false + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + visible = true + yield(get_tree(), "idle_frame") + grab_focus() + Fade.fade_in(Options.transition_speed_secs) + if not Ngio.keys_loaded: + tab_container.current_tab = 2 + return + if Ngio.session.user == null and not Ngio.session.passport_url.empty(): + var passport_url = Ngio.session.passport_url + # try to open in browser + OS.shell_open(passport_url) + # try to copy to clipboard + OS.clipboard = passport_url + if OS.has_clipboard(): + $"%Clipboard".modulate.a = 1.0 + _await_result() + elif Ngio.session.user != null: + tab_container.current_tab = 1 + else: + tab_container.current_tab = 2 + +func _gui_input(event: InputEvent) -> void: + if event.is_action_pressed("ui_cancel"): + if tab_container.current_tab == 0: + Ngio.request_execute("App.endSession") + queue_free() + elif event.is_action_pressed("ui_accept") and tab_container.current_tab != 0: + queue_free() + +func _await_result() -> void: + var success = yield(Ngio.passport_check(), "completed") + if success: + tab_container.current_tab = 1 + else: + tab_container.current_tab = 2 diff --git a/menus/newgrounds_login.tscn b/menus/newgrounds_login.tscn new file mode 100644 index 0000000..b6e5a1e --- /dev/null +++ b/menus/newgrounds_login.tscn @@ -0,0 +1,95 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://menus/newgrounds_login.gd" type="Script" id=2] +[ext_resource path="res://ui/theme.tres" type="Theme" id=3] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=4] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 1, 0.709804, 0.054902, 1 ) +shader_param/color_2 = Color( 1, 0.945098, 0.478431, 1 ) +shader_param/checker_size = Vector2( 24, 12 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 8, -8 ) +shader_param/cycle_alternation = Vector2( 0, 1 ) +shader_param/uv_transform = Transform2D( 1, 1, 1, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 5 ) +shader_param/speed = Vector2( 8, 4 ) +shader_param/ammount = Vector2( 12, 24 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[node name="NewgroundsLogin" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +focus_mode = 2 +script = ExtResource( 2 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="CenterContainer" type="CenterContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 3 ) + +[node name="TabContainer" type="TabContainer" parent="CenterContainer"] +unique_name_in_owner = true +margin_left = 23.0 +margin_top = 43.0 +margin_right = 233.0 +margin_bottom = 148.0 +tabs_visible = false + +[node name="Loading" type="VBoxContainer" parent="CenterContainer/TabContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_pivot_offset = Vector2( -174, -77 ) + +[node name="Label" type="Label" parent="CenterContainer/TabContainer/Loading"] +margin_right = 210.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 4 ) +text = "Log into newgrounds in browser" +align = 1 + +[node name="LoadingGraphic" type="Label" parent="CenterContainer/TabContainer/Loading"] +material = SubResource( 2 ) +margin_top = 14.0 +margin_right = 210.0 +margin_bottom = 78.0 +rect_min_size = Vector2( 0, 64 ) +text = "§" +align = 1 +valign = 1 + +[node name="Clipboard" type="Label" parent="CenterContainer/TabContainer/Loading"] +unique_name_in_owner = true +modulate = Color( 1, 1, 1, 0 ) +margin_top = 82.0 +margin_right = 210.0 +margin_bottom = 105.0 +custom_fonts/font = ExtResource( 4 ) +text = "If browser didn't open, +url copied to clipboard" +align = 1 + +[node name="Success" type="Label" parent="CenterContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +custom_fonts/font = ExtResource( 4 ) +text = "Success!" + +[node name="Failure" type="Label" parent="CenterContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +custom_fonts/font = ExtResource( 4 ) +text = "Failure :(" diff --git a/menus/options_menu.gd b/menus/options_menu.gd new file mode 100644 index 0000000..e340998 --- /dev/null +++ b/menus/options_menu.gd @@ -0,0 +1,14 @@ +extends Control + + +func _ready() -> void: + Fade.fade_in(Options.transition_speed_secs) + yield(Fade, "fade_finished") + $OptionsScreen.focus() + + + +func _on_OptionsScreen_exit() -> void: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/main_menu.tscn").instance() diff --git a/menus/options_menu.tscn b/menus/options_menu.tscn new file mode 100644 index 0000000..e23196f --- /dev/null +++ b/menus/options_menu.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://objects/hud/options_screen_scholar.tscn" type="PackedScene" id=1] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=2] +[ext_resource path="res://menus/options_menu.gd" type="Script" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/color_1 = Color( 1, 0.709804, 0.984314, 1 ) +shader_param/color_2 = Color( 1, 0.423529, 0.4, 1 ) +shader_param/checker_size = Vector2( 12, 12 ) +shader_param/pan_speed = Vector2( 0, 16 ) +shader_param/cycle_speed = Vector2( 4, -4 ) +shader_param/cycle_alternation = Vector2( 2, 0 ) +shader_param/uv_transform = Transform2D( 1, 1, 0, 1, 0, 0 ) + +[node name="OptionsMenu" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 3 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="OptionsScreen" parent="." instance=ExtResource( 1 )] + +[connection signal="exit" from="OptionsScreen" to="." method="_on_OptionsScreen_exit"] diff --git a/menus/palette_select.gd b/menus/palette_select.gd new file mode 100644 index 0000000..7772326 --- /dev/null +++ b/menus/palette_select.gd @@ -0,0 +1,54 @@ +extends Control + + +export (Array, String) var titles: Array +export (Array, Texture) var palettes: Array +export var previous_screen: PackedScene +onready var menu_sounds = $MenuSounds + +var current_palette: int = 0 + + +onready var sg: AnimatedSprite = $SG + + +func _ready() -> void: + menu_sounds.can_play = true + assert(titles.size() == palettes.size(), "titles and palettes arrays are not same size") + + if Save.current_file.is_super_player(): + palettes.append(preload("res://graphics/player/palettes/super_player.tex")) + titles.append("Super Player") + + for i in palettes.size(): + var id = palettes[i].resource_path.get_file().get_basename() + if id == Save.current_file.palette: + current_palette = i + break + + sg.material.set_shader_param("palette", palettes[current_palette]) + $"%PaletteTitle".text = titles[current_palette] + + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("ui_cancel"): + SceneManager.current_scene = previous_screen.instance() + menu_sounds.play_select_sound() + return + elif event.is_action_pressed("ui_left"): + current_palette -= 1 + menu_sounds.play_select_sound() + elif event.is_action_pressed("ui_right"): + current_palette += 1 + menu_sounds.play_select_sound() + + current_palette = posmod(current_palette, palettes.size()) + sg.material.set_shader_param("palette", palettes[current_palette]) + $"%PaletteTitle".text = titles[current_palette] + Game.current_palette = palettes[current_palette].resource_path.get_file().get_basename() + if Game.current_palette == "super_player": + $"%Sparkles".visible = true + else: + $"%Sparkles".visible = false + Save.current_file.palette = Game.current_palette + Save.current_file.save_to_file() diff --git a/menus/palette_select.tscn b/menus/palette_select.tscn new file mode 100644 index 0000000..b6ffa39 --- /dev/null +++ b/menus/palette_select.tscn @@ -0,0 +1,245 @@ +[gd_scene load_steps=53 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://menus/palette_select.gd" type="Script" id=3] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=4] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=5] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6] +[ext_resource path="res://graphics/player/palettes/gravitational_redshift.tex" type="Texture" id=7] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=8] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=9] +[ext_resource path="res://graphics/player/sg.png" type="Texture" id=10] +[ext_resource path="res://graphics/player/palettes/strawberry.tex" type="Texture" id=11] +[ext_resource path="res://graphics/player/palettes/lasertag.tex" type="Texture" id=12] +[ext_resource path="res://graphics/player/palettes/trans_pride.tex" type="Texture" id=13] +[ext_resource path="res://graphics/player/palettes/supersonic.tex" type="Texture" id=14] +[ext_resource path="res://menus/level_select_scholar.tscn" type="PackedScene" id=15] +[ext_resource path="res://graphics/player/palettes/superman.tex" type="Texture" id=16] +[ext_resource path="res://graphics/player/palettes/msx.tex" type="Texture" id=17] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=18] +[ext_resource path="res://graphics/player/palettes/elaine.tex" type="Texture" id=19] +[ext_resource path="res://graphics/player/palettes/mibibli.tex" type="Texture" id=20] +[ext_resource path="res://graphics/player/palettes/crocodibli.tex" type="Texture" id=21] +[ext_resource path="res://graphics/player/palettes/ice_mountain.tex" type="Texture" id=22] +[ext_resource path="res://graphics/player/palettes/wavebird.tex" type="Texture" id=23] +[ext_resource path="res://graphics/player/palettes/sms.tex" type="Texture" id=24] +[ext_resource path="res://graphics/player/palettes/telstar.tex" type="Texture" id=25] +[ext_resource path="res://graphics/player/palettes/protector.tex" type="Texture" id=26] +[ext_resource path="res://graphics/player/palettes/cyber_city.tex" type="Texture" id=27] +[ext_resource path="res://graphics/player/palettes/cave_dweller.tex" type="Texture" id=28] +[ext_resource path="res://graphics/player/palettes/doggy.tex" type="Texture" id=29] +[ext_resource path="res://graphics/player/palettes/gayboy.tex" type="Texture" id=30] +[ext_resource path="res://graphics/player/palettes/bnw.tex" type="Texture" id=31] +[ext_resource path="res://graphics/player/palettes/marza.tex" type="Texture" id=32] +[ext_resource path="res://graphics/player/palettes/unknown_friend.tex" type="Texture" id=33] +[ext_resource path="res://graphics/player/palettes/seegee.tex" type="Texture" id=34] +[ext_resource path="res://graphics/player/palettes/nightrunner.tex" type="Texture" id=35] +[ext_resource path="res://graphics/player/palettes/typhoon.tex" type="Texture" id=36] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=37] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=38] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=39] +[ext_resource path="res://graphics/player/palettes/lucas.tex" type="Texture" id=40] +[ext_resource path="res://graphics/player/palettes/blanc.tex" type="Texture" id=41] +[ext_resource path="res://graphics/player/palettes/noir.tex" type="Texture" id=42] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.717647, 0.717647, 0.717647, 1 ) +shader_param/color_2 = Color( 0.360784, 0.360784, 0.360784, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 8, 8 ) +shader_param/cycle_alternation = Vector2( 0, 1 ) +shader_param/uv_transform = Transform2D( 0.5, -0.5, 0.5, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 4 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 18 ) + +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 10 ) +region = Rect2( 0, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 10 ) +region = Rect2( 32, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=7] +atlas = ExtResource( 10 ) +region = Rect2( 64, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=8] +atlas = ExtResource( 10 ) +region = Rect2( 96, 32, 32, 32 ) + +[sub_resource type="SpriteFrames" id=9] +animations = [ { +"frames": [ SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] + +[sub_resource type="Curve" id=10] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 8 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 8 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[node name="PaletteSelect" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) +script = ExtResource( 3 ) +titles = [ "Default", "Lasertag", "Strawberry", "Ms. X", "Trans Pride", "SuperSonic", "Unknown Friend", "Marza", "Nightrunner", "Seegee", "Elaine", "May Gaman", "Albert", "Lucas", "Superman", "Redshift", "Cave Dweller", "wavebird", "ice mountain", "cyber city", "sms", "protector", "telstar", "Doggy!", "gayboy", "bnw", "Blanc", "Noir", "Typhoon" ] +palettes = [ ExtResource( 18 ), ExtResource( 12 ), ExtResource( 11 ), ExtResource( 17 ), ExtResource( 13 ), ExtResource( 14 ), ExtResource( 33 ), ExtResource( 32 ), ExtResource( 35 ), ExtResource( 34 ), ExtResource( 19 ), ExtResource( 20 ), ExtResource( 21 ), ExtResource( 40 ), ExtResource( 16 ), ExtResource( 7 ), ExtResource( 28 ), ExtResource( 23 ), ExtResource( 22 ), ExtResource( 27 ), ExtResource( 24 ), ExtResource( 26 ), ExtResource( 25 ), ExtResource( 29 ), ExtResource( 30 ), ExtResource( 31 ), ExtResource( 41 ), ExtResource( 42 ), ExtResource( 36 ) ] +previous_screen = ExtResource( 15 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="ChooseYourColors" type="Label" parent="."] +anchor_right = 1.0 +margin_bottom = 16.0 +custom_fonts/font = ExtResource( 5 ) +text = "Choose your palette" +align = 1 +valign = 1 + +[node name="FlavorTextParagraph" type="Label" parent="."] +anchor_right = 1.0 +margin_top = 24.0 +margin_bottom = 40.0 +custom_fonts/font = ExtResource( 5 ) +text = "Heroes from other timelines may +aid in your journey, many are +waiting to help save the future." +align = 1 +valign = 1 + +[node name="InfiniteSGs" type="Label" parent="."] +anchor_right = 1.0 +margin_left = 16.0 +margin_top = 128.0 +margin_right = -168.0 +margin_bottom = 164.0 +custom_fonts/font = ExtResource( 5 ) +text = "There are +infinite +sgs" +align = 1 +valign = 1 + +[node name="InfiniteSGs2" type="Label" parent="."] +anchor_right = 1.0 +margin_left = 176.0 +margin_top = 128.0 +margin_right = -16.0 +margin_bottom = 164.0 +custom_fonts/font = ExtResource( 5 ) +text = "but also +infinite +famis" +align = 1 +valign = 1 + +[node name="SG" type="AnimatedSprite" parent="."] +material = SubResource( 2 ) +position = Vector2( 128, 128 ) +scale = Vector2( 3, 3 ) +frames = SubResource( 9 ) +frame = 1 +playing = true + +[node name="Sparkles" type="CPUParticles2D" parent="SG"] +unique_name_in_owner = true +light_mask = 0 +position = Vector2( 0, 6.33333 ) +amount = 2 +lifetime = 2.0 +texture = ExtResource( 39 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 10 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 10 ) +color = Color( 1, 0.972549, 0.52549, 1 ) +script = ExtResource( 38 ) + +[node name="CenterContainer" type="CenterContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 8.0 +margin_bottom = -24.0 +__meta__ = { +"_edit_lock_": true +} + +[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"] +margin_left = 60.0 +margin_top = 63.0 +margin_right = 195.0 +margin_bottom = 96.0 +rect_min_size = Vector2( 135, 33 ) + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/PanelContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 132.0 +margin_bottom = 30.0 +theme = ExtResource( 2 ) +alignment = 1 + +[node name="BackArrow" type="TextureRect" parent="CenterContainer/PanelContainer/HBoxContainer"] +unique_name_in_owner = true +material = SubResource( 3 ) +margin_left = 30.0 +margin_top = 9.0 +margin_right = 36.0 +margin_bottom = 17.0 +size_flags_vertical = 4 +texture = ExtResource( 9 ) +flip_h = true + +[node name="PaletteTitle" type="Label" parent="CenterContainer/PanelContainer/HBoxContainer"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_left = 40.0 +margin_top = 8.0 +margin_right = 89.0 +margin_bottom = 18.0 +theme = ExtResource( 2 ) +text = "Default" +align = 1 +valign = 1 + +[node name="ForwardArrow" type="TextureRect" parent="CenterContainer/PanelContainer/HBoxContainer"] +unique_name_in_owner = true +material = SubResource( 4 ) +margin_left = 93.0 +margin_top = 9.0 +margin_right = 99.0 +margin_bottom = 17.0 +size_flags_vertical = 4 +texture = ExtResource( 9 ) + +[node name="MenuSounds" parent="." instance=ExtResource( 37 )] diff --git a/menus/results.gd b/menus/results.gd new file mode 100644 index 0000000..c52e4ec --- /dev/null +++ b/menus/results.gd @@ -0,0 +1,117 @@ +extends Node + +const Text3D = preload("res://objects/hud/3d_text.tscn") +const LevelSelect := preload("res://menus/level_select_scholar.tscn") + +onready var shards: Node2D = $ShardsAndBonuses/Shards +onready var score = $Score +onready var time = $Time +onready var animation_player = $AnimationPlayer +#Score bonuses +onready var collection_bonus_score = $ShardsAndBonuses/Bonuses/CollectionBonus/CollectionBonusScore +onready var time_bonus_score = $ShardsAndBonuses/Bonuses/TimeBonus/TimeBonusScore +onready var life_bonus_score = $ShardsAndBonuses/Bonuses/LifeBonus/LifeBonusScore +onready var arrow_bonus_score = $ShardsAndBonuses/Bonuses/ArrowBonus/ArrowBonusScore +onready var perfect_bonus_score = $ShardsAndBonuses/Bonuses/PerfectBonus/PerfectBonusScore + +var text_3d = null + + +func _notification(what: int) -> void: + match what: + NOTIFICATION_WM_FOCUS_OUT: + $AnimationPlayer.playback_active = false + NOTIFICATION_WM_FOCUS_IN: + $AnimationPlayer.playback_active = true + + +func _ready() -> void: + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + $"%ArrowBonus".material.set_shader_param("palette", palette) + # easy indicator + if Game.difficulty == Game.Difficulty.SWEET: + $EasyIndicator.visible = true + else: + $EasyIndicator.visible = false + #preload final score + text_3d = Text3D.instance() + text_3d.anim = "final score" + yield(get_tree(), "idle_frame") + self.add_child(text_3d) + text_3d.animation_player.set_speed_scale(0) + Fade.fade_in(Options.transition_speed_secs) + # fill in shard names + var level: LevelEntry = LevelData.levels[Game.current_level] + for i in 5: + var shard = shards.get_child(i) + shard.get_node("Title").text = level.shard_titles[i] + score.text = str("SCORE:") + "%05d" % Game.score + time.text = str("TIME: ") + Game.format_time(Game.time) + #Determine score bonuses + collection_bonus_score.text = str("+") + str(Game.collection_bonus) + time_bonus_score.text = str("+") + str(Game.time_bonus) + life_bonus_score.text = str("+") + str(Game.life_bonus) + arrow_bonus_score.text = str("+") + str(Game.arrows_bonus) + perfect_bonus_score.text = str("+") + str(Game.perfect_bonus) + +func _physics_process(delta: float) -> void: + if Input.is_action_just_released("ui_accept"): + animation_player.set_speed_scale(4) + + +func show_final_score(): + animation_player.set_speed_scale(2) + text_3d.animation_player.set_speed_scale(1) + + +func _on_AnimationPlayer_animation_finished(anim_name): + match anim_name: + "results": + if Game.marathon_mode: + Game.current_level += 1 + if Game.current_level > LevelData.marathon_end: + yield(get_tree().create_timer(6.0), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(load("res://menus/marathon_results.tscn").instance()) + else: + Game.change_map(LevelData.levels[Game.current_level].scene) + elif Game.final_score > Game.old_high_score: + animation_player.play("high_score") + else: + yield(get_tree().create_timer(6.0), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(LevelSelect.instance()) + "high_score": + if not Debug.is_cheating and not ScoreBoard.server_host.empty(): + animation_player.play("submit_score_popup") + else: + yield(get_tree().create_timer(5.0), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(LevelSelect.instance()) + + +func _on_YesSubmit_button_down() -> void: + $"%YesSubmit".release_focus() + animation_player.play("submit") + + var save_id = LevelData.levels[Game.current_level].save_id + var entry = ScoreBoard.ScoreEntry.new(Game.final_score, int(Game.time * 1000.0), Game.difficulty) + var submitted = yield(ScoreBoard.submit_score(save_id, entry), "completed") + if ScoreBoard.errored or not submitted: + animation_player.play("try_again") + else: + animation_player.play("success") + + +func _on_NoSubmit_button_down() -> void: + $"%NoSubmit".release_focus() + _next_screen() + + +func _next_screen() -> void: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(LevelSelect.instance()) diff --git a/menus/results.tscn b/menus/results.tscn new file mode 100644 index 0000000..6187708 --- /dev/null +++ b/menus/results.tscn @@ -0,0 +1,1232 @@ +[gd_scene load_steps=36 format=2] + +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=2] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/hud/results.png" type="Texture" id=4] +[ext_resource path="res://graphics/hud/perfect_bonus.png" type="Texture" id=5] +[ext_resource path="res://graphics/player/arrow.png" type="Texture" id=6] +[ext_resource path="res://ui/arrow_figure_8.tres" type="Material" id=7] +[ext_resource path="res://graphics/hud/final_score.png" type="Texture" id=8] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=9] +[ext_resource path="res://ui/theme.tres" type="Theme" id=10] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=11] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=12] +[ext_resource path="res://menus/results.gd" type="Script" id=13] +[ext_resource path="res://menus/results_icon.tscn" type="PackedScene" id=14] +[ext_resource path="res://graphics/hud/high_score.png" type="Texture" id=15] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=16] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=17] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=18] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=19] +[ext_resource path="res://graphics/hud/scores/sweet.png" type="Texture" id=20] + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 2 ) +shader_param/color_1 = Color( 1, 0.513726, 0, 1 ) +shader_param/color_2 = Color( 0.701961, 0.305882, 0.901961, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 12, 0 ) +shader_param/cycle_speed = Vector2( 12, 0 ) +shader_param/cycle_alternation = Vector2( 2, 0 ) +shader_param/uv_transform = Transform2D( 1, 1, 0, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 11 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false +shader_param/palette = ExtResource( 12 ) + +[sub_resource type="ShaderMaterial" id=8] +shader = ExtResource( 3 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Curve" id=11] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=17] +interpolation_mode = 2 +offsets = PoolRealArray( 0, 0.734694, 1 ) +colors = PoolColorArray( 0.576471, 0.980392, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 ) + +[sub_resource type="ShaderMaterial" id=14] +resource_local_to_scene = true +shader = ExtResource( 1 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 24, 12 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=13] +shader = ExtResource( 1 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=6] +shader = ExtResource( 1 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 9, 8 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="Animation" id=10] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ShardsAndBonuses:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ShardsAndBonuses/Bonuses/CollectionBonus/CollectionBonusScore:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ShardsAndBonuses/Bonuses/TimeBonus/TimeBonusScore:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ShardsAndBonuses/Bonuses/LifeBonus/LifeBonusScore:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("ShardsAndBonuses/Bonuses/ArrowBonus/ArrowBonusScore:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("ShardsAndBonuses/Bonuses/PerfectBonus/PerfectBonusScore:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("ShardsAndBonuses/FinalScore:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("ShardsAndBonuses/HighScore:visible") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("ShardsAndBonuses/FinalScore:scale") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("ShardsAndBonuses/HighScore:scale") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("CenterContainer/SubmitScore:visible") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("CenterContainer/SubmitScore:rect_scale") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("CenterContainer/LoadingGraphic:visible") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("CenterContainer/LoadingGraphic:rect_scale") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("CenterContainer/LoadingGraphic:material:shader_param/ammount") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 24, 12 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("CenterContainer/SubmitScore:modulate") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("CenterContainer/SubmitScore/Label:text") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "submit score?" ] +} + +[sub_resource type="Animation" id=19] +resource_name = "high_score" +tracks/0/type = "value" +tracks/0/path = NodePath("ShardsAndBonuses:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -512, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ShardsAndBonuses/FinalScore:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ShardsAndBonuses/HighScore:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ShardsAndBonuses/FinalScore:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1e-05, 1 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("ShardsAndBonuses/HighScore:scale") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.3, 0.6 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1e-05, 1 ), Vector2( 1, 1 ) ] +} + +[sub_resource type="Animation" id=4] +resource_name = "results" +length = 18.0 +step = 1.0 +tracks/0/type = "method" +tracks/0/path = NodePath("ShardsAndBonuses/Shards/ResultsIcon") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 1 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/1/type = "method" +tracks/1/path = NodePath("ShardsAndBonuses/Shards/ResultsIcon2") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 2 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("ShardsAndBonuses/Shards/ResultsIcon3") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 3 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/3/type = "method" +tracks/3/path = NodePath("ShardsAndBonuses/Shards/ResultsIcon4") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 4 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/4/type = "method" +tracks/4/path = NodePath("ShardsAndBonuses/Shards/ResultsIcon5") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("ShardsAndBonuses:position") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 7, 8, 15, 16 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( -256, 0 ), Vector2( -256, 0 ), Vector2( -512, 0 ) ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("ShardsAndBonuses/Bonuses/CollectionBonus/CollectionBonusScore:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( -2, 9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("ShardsAndBonuses/Bonuses/TimeBonus/TimeBonusScore:visible") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( -2, 10 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("ShardsAndBonuses/Bonuses/LifeBonus/LifeBonusScore:visible") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( -2, 11 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("ShardsAndBonuses/Bonuses/ArrowBonus/ArrowBonusScore:visible") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( -2, 12 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("ShardsAndBonuses/Bonuses/PerfectBonus/PerfectBonusScore:visible") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( -2, 13 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/11/type = "method" +tracks/11/path = NodePath("ShardsAndBonuses/Bonuses/CollectionBonus") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 9 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/12/type = "method" +tracks/12/path = NodePath("ShardsAndBonuses/Bonuses/TimeBonus") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 10 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/13/type = "method" +tracks/13/path = NodePath("ShardsAndBonuses/Bonuses/LifeBonus") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 11 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/14/type = "method" +tracks/14/path = NodePath(".") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 17 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "show_final_score" +} ] +} + +[sub_resource type="Animation" id=15] +resource_name = "submit" +length = 0.3 +tracks/0/type = "value" +tracks/0/path = NodePath("CenterContainer/SubmitScore:rect_scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1e-05, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CenterContainer/SubmitScore:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("CenterContainer/LoadingGraphic:material:shader_param/ammount") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 24, 12 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("CenterContainer/LoadingGraphic:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=12] +resource_name = "submit_score_popup" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("ShardsAndBonuses:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -512, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CenterContainer/SubmitScore:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("CenterContainer/SubmitScore:rect_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1 ), Vector2( 1, 1 ) ] +} +tracks/3/type = "method" +tracks/3/path = NodePath("CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer/YesSubmit") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("CenterContainer/SubmitScore:modulate") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("CenterContainer/LoadingGraphic:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("CenterContainer/SubmitScore/Label:text") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "submit score?" ] +} + +[sub_resource type="Animation" id=18] +resource_name = "success" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("CenterContainer/LoadingGraphic:material:shader_param/ammount") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 24, 12 ), Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CenterContainer/CollectedParticles:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.3 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("CenterContainer/LoadingGraphic:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("CenterContainer/SubmitScore:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/4/type = "method" +tracks/4/path = NodePath(".") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 1.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "_next_screen" +} ] +} + +[sub_resource type="Animation" id=16] +resource_name = "try_again" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("CenterContainer/SubmitScore:rect_scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CenterContainer/SubmitScore:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("CenterContainer/LoadingGraphic:material:shader_param/ammount") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.1, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 24, 12 ), Vector2( 24, 12 ), Vector2( 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("CenterContainer/LoadingGraphic:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("CenterContainer/SubmitScore/Label:text") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "failed. try again?" ] +} +tracks/5/type = "method" +tracks/5/path = NodePath("CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer/YesSubmit") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} + +[node name="Results" type="Node"] +script = ExtResource( 13 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 5 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_lock_": true +} + +[node name="ShardsAndBonuses" type="Node2D" parent="."] + +[node name="Shards" type="Node2D" parent="ShardsAndBonuses"] + +[node name="ResultsIcon" parent="ShardsAndBonuses/Shards" instance=ExtResource( 14 )] +position = Vector2( 24, 32 ) + +[node name="Title" type="Label" parent="ShardsAndBonuses/Shards/ResultsIcon"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -5.0 +margin_right = 176.0 +margin_bottom = 9.0 +theme = ExtResource( 10 ) +text = "AAAAAAAAAAAAAAAAAAAAAAAA" + +[node name="ResultsIcon2" parent="ShardsAndBonuses/Shards" instance=ExtResource( 14 )] +position = Vector2( 24, 64 ) +number = 1 + +[node name="Title" type="Label" parent="ShardsAndBonuses/Shards/ResultsIcon2"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -5.0 +margin_right = 176.0 +margin_bottom = 9.0 +theme = ExtResource( 10 ) +text = "AAAAAAAAAAAAAAAAAAAAAAAA" + +[node name="ResultsIcon3" parent="ShardsAndBonuses/Shards" instance=ExtResource( 14 )] +position = Vector2( 24, 96 ) +number = 2 + +[node name="Title" type="Label" parent="ShardsAndBonuses/Shards/ResultsIcon3"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -5.0 +margin_right = 176.0 +margin_bottom = 9.0 +theme = ExtResource( 10 ) +text = "AAAAAAAAAAAAAAAAAAAAAAAA" + +[node name="ResultsIcon4" parent="ShardsAndBonuses/Shards" instance=ExtResource( 14 )] +position = Vector2( 24, 128 ) +number = 3 + +[node name="Title" type="Label" parent="ShardsAndBonuses/Shards/ResultsIcon4"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -5.0 +margin_right = 176.0 +margin_bottom = 9.0 +theme = ExtResource( 10 ) +text = "AAAAAAAAAAAAAAAAAAAAAAAA" + +[node name="ResultsIcon5" parent="ShardsAndBonuses/Shards" instance=ExtResource( 14 )] +position = Vector2( 24, 160 ) +number = 4 + +[node name="Title" type="Label" parent="ShardsAndBonuses/Shards/ResultsIcon5"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -5.0 +margin_right = 176.0 +margin_bottom = 9.0 +theme = ExtResource( 10 ) +text = "AAAAAAAAAAAAAAAAAAAAAAAA" + +[node name="Bonuses" type="Node2D" parent="ShardsAndBonuses"] +position = Vector2( 256, 8 ) + +[node name="CollectionBonus" parent="ShardsAndBonuses/Bonuses" instance=ExtResource( 14 )] +position = Vector2( 24, 24 ) +number = 5 + +[node name="CollectionBonusText" type="Label" parent="ShardsAndBonuses/Bonuses/CollectionBonus"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -6.0 +margin_right = 176.0 +margin_bottom = 8.0 +theme = ExtResource( 10 ) +text = "Collection Bonus" + +[node name="CollectionBonusScore" type="Label" parent="ShardsAndBonuses/Bonuses/CollectionBonus"] +visible = false +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = 8.0 +margin_right = 176.0 +margin_bottom = 22.0 +theme = ExtResource( 10 ) +text = "+500" + +[node name="TimeBonus" parent="ShardsAndBonuses/Bonuses" instance=ExtResource( 14 )] +position = Vector2( 24, 56 ) +number = 6 + +[node name="TimeBonusText" type="Label" parent="ShardsAndBonuses/Bonuses/TimeBonus"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -6.0 +margin_right = 176.0 +margin_bottom = 8.0 +theme = ExtResource( 10 ) +text = "Time Bonus" + +[node name="TimeBonusScore" type="Label" parent="ShardsAndBonuses/Bonuses/TimeBonus"] +visible = false +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = 8.0 +margin_right = 176.0 +margin_bottom = 22.0 +theme = ExtResource( 10 ) +text = "+500" + +[node name="LifeBonus" parent="ShardsAndBonuses/Bonuses" instance=ExtResource( 14 )] +position = Vector2( 24, 88 ) +number = 7 + +[node name="LifeBonusText" type="Label" parent="ShardsAndBonuses/Bonuses/LifeBonus"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -6.0 +margin_right = 176.0 +margin_bottom = 8.0 +theme = ExtResource( 10 ) +text = "Life Bonus" + +[node name="LifeBonusScore" type="Label" parent="ShardsAndBonuses/Bonuses/LifeBonus"] +visible = false +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = 8.0 +margin_right = 176.0 +margin_bottom = 22.0 +theme = ExtResource( 10 ) +text = "+500" + +[node name="ArrowBonus" type="Sprite" parent="ShardsAndBonuses/Bonuses"] +unique_name_in_owner = true +material = SubResource( 7 ) +position = Vector2( 24, 120 ) +rotation = -1.5708 +texture = ExtResource( 6 ) + +[node name="ArrowBonusText" type="Label" parent="ShardsAndBonuses/Bonuses/ArrowBonus"] +material = ExtResource( 9 ) +margin_left = 4.0 +margin_top = 7.0 +margin_right = 172.0 +margin_bottom = 21.0 +rect_rotation = 90.0 +theme = ExtResource( 10 ) +text = "Arrow Bonus" + +[node name="ArrowBonusScore" type="Label" parent="ShardsAndBonuses/Bonuses/ArrowBonus"] +visible = false +material = ExtResource( 9 ) +margin_left = -10.0 +margin_top = 7.0 +margin_right = 158.0 +margin_bottom = 21.0 +rect_rotation = 90.0 +theme = ExtResource( 10 ) +text = "+500" + +[node name="PerfectBonus" type="Sprite" parent="ShardsAndBonuses/Bonuses"] +material = SubResource( 8 ) +position = Vector2( 24, 152 ) +texture = ExtResource( 5 ) + +[node name="PerfectBonusText" type="Label" parent="ShardsAndBonuses/Bonuses/PerfectBonus"] +material = ExtResource( 9 ) +margin_left = 7.0 +margin_top = -5.0 +margin_right = 175.0 +margin_bottom = 9.0 +theme = ExtResource( 10 ) +text = "Perfect Bonus" + +[node name="PerfectBonusScore" type="Label" parent="ShardsAndBonuses/Bonuses/PerfectBonus"] +visible = false +material = ExtResource( 9 ) +margin_left = 7.0 +margin_top = 9.0 +margin_right = 175.0 +margin_bottom = 23.0 +theme = ExtResource( 10 ) +text = "+500" + +[node name="FinalScore" type="Sprite" parent="ShardsAndBonuses"] +material = ExtResource( 7 ) +position = Vector2( 640, 40 ) +texture = ExtResource( 8 ) + +[node name="HighScore" type="Sprite" parent="ShardsAndBonuses"] +visible = false +material = ExtResource( 7 ) +position = Vector2( 640, 40 ) +texture = ExtResource( 15 ) + +[node name="Sparkles" type="CPUParticles2D" parent="ShardsAndBonuses/HighScore"] +light_mask = 0 +amount = 4 +lifetime = 2.0 +texture = ExtResource( 16 ) +emission_shape = 2 +emission_rect_extents = Vector2( 48, 8 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 11 ) +color = Color( 0.72549, 0.956863, 1, 1 ) +script = ExtResource( 17 ) + +[node name="Score" type="Label" parent="."] +material = ExtResource( 9 ) +margin_top = 8.0 +margin_right = 256.0 +margin_bottom = 22.0 +theme = ExtResource( 10 ) +text = "Score: 0000000" +align = 1 + +[node name="EasyIndicator" type="TextureRect" parent="."] +margin_left = 61.0 +margin_top = 7.0 +margin_right = 73.0 +margin_bottom = 19.0 +texture = ExtResource( 20 ) + +[node name="Time" type="Label" parent="."] +material = ExtResource( 9 ) +margin_top = 178.0 +margin_right = 256.0 +margin_bottom = 192.0 +theme = ExtResource( 10 ) +text = "Time: " +align = 1 + +[node name="CenterContainer" type="CenterContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 77.0 +theme = ExtResource( 10 ) + +[node name="CollectedParticles" type="CPUParticles2D" parent="CenterContainer"] +pause_mode = 2 +position = Vector2( 127, 56 ) +emitting = false +amount = 64 +one_shot = true +explosiveness = 1.0 +local_coords = false +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 150 ) +initial_velocity = 250.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_random = 1.0 +color_ramp = SubResource( 17 ) + +[node name="LoadingGraphic" type="Label" parent="CenterContainer"] +unique_name_in_owner = true +visible = false +material = SubResource( 14 ) +margin_left = 124.0 +margin_top = 52.0 +margin_right = 131.0 +margin_bottom = 62.0 +text = "§" +align = 1 +valign = 1 + +[node name="SubmitScore" type="VBoxContainer" parent="CenterContainer"] +unique_name_in_owner = true +visible = false +margin_left = 82.0 +margin_top = 39.0 +margin_right = 173.0 +margin_bottom = 75.0 +rect_pivot_offset = Vector2( 45.5, 18 ) +theme = ExtResource( 10 ) + +[node name="Label" type="Label" parent="CenterContainer/SubmitScore"] +margin_right = 91.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 19 ) +text = "submit score?" + +[node name="YesNoPrompt" type="PanelContainer" parent="CenterContainer/SubmitScore"] +margin_left = 1.0 +margin_top = 14.0 +margin_right = 90.0 +margin_bottom = 36.0 +size_flags_horizontal = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/SubmitScore/YesNoPrompt"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 86.0 +margin_bottom = 19.0 +rect_min_size = Vector2( 0, 16 ) +rect_pivot_offset = Vector2( -174, -69 ) +custom_constants/separation = 0 +alignment = 1 + +[node name="YesSubmit" type="TextureButton" parent="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +unique_name_in_owner = true +material = SubResource( 13 ) +margin_top = 4.0 +margin_right = 12.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 12, 8 ) +focus_neighbour_right = NodePath("../NoSubmit") +size_flags_vertical = 4 +texture_focused = ExtResource( 18 ) +expand = true +stretch_mode = 3 + +[node name="YesLabel" type="Label" parent="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 12.0 +margin_top = 3.0 +margin_right = 33.0 +margin_bottom = 13.0 +text = "Yes" + +[node name="Spacer" type="Control" parent="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 33.0 +margin_right = 45.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="NoSubmit" type="TextureButton" parent="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +unique_name_in_owner = true +material = SubResource( 13 ) +margin_left = 45.0 +margin_top = 4.0 +margin_right = 57.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 12, 8 ) +focus_neighbour_left = NodePath("../YesSubmit") +size_flags_vertical = 4 +texture_focused = ExtResource( 18 ) +expand = true +stretch_mode = 3 + +[node name="NoLabel" type="Label" parent="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 57.0 +margin_top = 3.0 +margin_right = 71.0 +margin_bottom = 13.0 +text = "No" + +[node name="Spacer2" type="Control" parent="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 71.0 +margin_right = 83.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="Results" type="Sprite" parent="."] +material = SubResource( 6 ) +position = Vector2( 232, 80 ) +texture = ExtResource( 4 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "results" +playback_speed = 2.0 +anims/RESET = SubResource( 10 ) +anims/high_score = SubResource( 19 ) +anims/results = SubResource( 4 ) +anims/submit = SubResource( 15 ) +anims/submit_score_popup = SubResource( 12 ) +anims/success = SubResource( 18 ) +anims/try_again = SubResource( 16 ) + +[connection signal="button_down" from="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer/YesSubmit" to="." method="_on_YesSubmit_button_down"] +[connection signal="button_down" from="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer/NoSubmit" to="." method="_on_NoSubmit_button_down"] +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] diff --git a/menus/results_icon.gd b/menus/results_icon.gd new file mode 100644 index 0000000..1169655 --- /dev/null +++ b/menus/results_icon.gd @@ -0,0 +1,13 @@ +extends Node2D + +onready var anims = $AnimationPlayer +export var number = 0 + + +func collect() -> void: + if Game.shards_collected[number] == true: + anims.play("collect") + Audio.play_sound(Audio.a_shard_results,Audio.ac_collectible) + else: + anims.play("fail") + Audio.play_sound(Audio.a_fail_shard,Audio.ac_collectible) diff --git a/menus/results_icon.tscn b/menus/results_icon.tscn new file mode 100644 index 0000000..f73a102 --- /dev/null +++ b/menus/results_icon.tscn @@ -0,0 +1,186 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=2] +[ext_resource path="res://menus/results_icon.gd" type="Script" id=3] +[ext_resource path="res://graphics/hud/missed_shard.png" type="Texture" id=4] + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Animation" id=6] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Filled:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CollectedParticles:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("FailX:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("FailX:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=3] +resource_name = "collect" +tracks/0/type = "value" +tracks/0/path = NodePath("Filled:scale") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.2, 0.4, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 1, 1 ), Vector2( 1.25, 1.25 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CollectedParticles:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=9] +resource_name = "fail" +tracks/0/type = "value" +tracks/0/path = NodePath("FailX:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 360.0 ] +} +tracks/1/type = "bezier" +tracks/1/path = NodePath("FailX:scale:x") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"points": PoolRealArray( 1e-05, -0.25, 0, 0.25, 0, 1, 0, -0.504449, 0.25, 0 ), +"times": PoolRealArray( 0, 0.5 ) +} +tracks/2/type = "bezier" +tracks/2/path = NodePath("FailX:scale:y") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"points": PoolRealArray( 1e-05, -0.25, 0, 0.25, 0, 1, 0, -0.504449, 0.25, 0 ), +"times": PoolRealArray( 0, 0.5 ) +} + +[sub_resource type="Gradient" id=7] +interpolation_mode = 2 +offsets = PoolRealArray( 0, 0.734694, 1 ) +colors = PoolColorArray( 0.576471, 0.980392, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 ) + +[sub_resource type="ShaderMaterial" id=8] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[node name="ResultsIcon" type="Node2D"] +self_modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 4 ) +script = ExtResource( 3 ) + +[node name="Empty" type="Sprite" parent="."] +self_modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 1, 1 ) +texture = ExtResource( 2 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 6 ) +anims/collect = SubResource( 3 ) +anims/fail = SubResource( 9 ) + +[node name="CollectedParticles" type="CPUParticles2D" parent="."] +pause_mode = 2 +emitting = false +amount = 64 +one_shot = true +explosiveness = 1.0 +local_coords = false +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 150 ) +initial_velocity = 250.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_random = 1.0 +color_ramp = SubResource( 7 ) + +[node name="Filled" type="Sprite" parent="."] +material = SubResource( 8 ) +scale = Vector2( 1e-05, 1e-05 ) +texture = ExtResource( 2 ) +offset = Vector2( 1, 1 ) + +[node name="FailX" type="Sprite" parent="."] +position = Vector2( 1, 1 ) +scale = Vector2( 1e-05, 1e-05 ) +texture = ExtResource( 4 ) diff --git a/menus/rev83_intro.gd b/menus/rev83_intro.gd new file mode 100644 index 0000000..52003ae --- /dev/null +++ b/menus/rev83_intro.gd @@ -0,0 +1,13 @@ +extends Node2D + +onready var label = $TextBlock/Label + +func _ready(): + Fade.fade_in(Options.transition_speed_secs) + label.text = label.text % str(Save.current_file.name) + +func _input(event): + if Input.is_action_just_pressed("ui_accept"): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/intro_story.tscn").instance() diff --git a/menus/rev83_intro.tscn b/menus/rev83_intro.tscn new file mode 100644 index 0000000..da7a629 --- /dev/null +++ b/menus/rev83_intro.tscn @@ -0,0 +1,132 @@ +[gd_scene load_steps=9 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=3] +[ext_resource path="res://audio/sounds/talking.ogg" type="AudioStream" id=4] +[ext_resource path="res://menus/rev83_intro.gd" type="Script" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.3542, 0.4235, 0.77, 1 ) +shader_param/color_2 = Color( 0.0912, 0.76, 0.403307, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 8, 10 ) +shader_param/cycle_speed = Vector2( 0, 2 ) +shader_param/cycle_alternation = Vector2( -5, 18 ) +shader_param/uv_transform = Transform2D( 1, 0, -1, 1, 0, 0 ) + +[sub_resource type="Animation" id=3] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("TextBlock:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 144, 104 ) ] +} + +[sub_resource type="Animation" id=2] +resource_name = "type" +length = 5.0 +tracks/0/type = "value" +tracks/0/path = NodePath("TextBlock/Label:percent_visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 1.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextBlock:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 256, 192 ), Vector2( 144, 104 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("TextBlock:scale") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 1, 1 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("TextBlock:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 360.0 ] +} + +[node name="Rev83Intro" type="Node2D"] +script = ExtResource( 5 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="TextBlock" type="Node2D" parent="."] +position = Vector2( 144, 104 ) +rotation = 6.28319 + +[node name="Label" type="Label" parent="TextBlock"] +material = ExtResource( 3 ) +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -136.5 +margin_top = -96.0 +margin_right = 136.5 +margin_bottom = 96.0 +theme = ExtResource( 2 ) +text = "Hello %s, + +I am computer code given \"life\", +you can call me Revolution 2083. +Do you want to play a game with me? +This game may at times seem +one-sided in my favor, +but it's actually in your favor... +I'm the only one that can +truly lose, you can keep trying and +dying until you win, but I can't. + +The game is only over +when you give up." + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "type" +anims/RESET = SubResource( 3 ) +anims/type = SubResource( 2 ) + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 4 ) +volume_db = -10.0 +autoplay = true diff --git a/menus/score_entry.gd b/menus/score_entry.gd new file mode 100644 index 0000000..89927e3 --- /dev/null +++ b/menus/score_entry.gd @@ -0,0 +1,47 @@ +tool +extends HBoxContainer + +const DIFFICULTY_ICONS = [ + preload("res://graphics/hud/scores/sweet.png"), + preload("res://graphics/hud/scores/salty.png"), + preload("res://graphics/hud/scores/spicy.png"), + preload("res://graphics/hud/scores/pungent.png"), +] + +export var place: int = 0 setget _set_place +export var player: String = "Username" setget _set_player +export var score: int = 0 setget _set_score +export var time: float = 0.0 setget _set_time +export(int, "Sweet", "Salty", "Spicy", "Pungent") var difficulty: int = 0 setget _set_difficulty + +func _ready() -> void: + _set_place(place) + _set_player(player) + _set_score(score) + _set_time(time) + _set_difficulty(difficulty) + +func _set_place(value: int) -> void: + place = value + if is_inside_tree(): + $Place.text = "%d" % place + +func _set_player(value: String) -> void: + player = value.substr(0, 10) + if is_inside_tree(): + $Player.text = player + +func _set_score(value: int) -> void: + score = value + if is_inside_tree(): + $Score.text = "%05d" % score + +func _set_time(value: float) -> void: + time = value + if is_inside_tree(): + $Time.text = Game.format_time(time) + +func _set_difficulty(value: int) -> void: + difficulty = value + if is_inside_tree(): + $Difficulty.texture = DIFFICULTY_ICONS[difficulty] diff --git a/menus/score_entry.tscn b/menus/score_entry.tscn new file mode 100644 index 0000000..26aaa66 --- /dev/null +++ b/menus/score_entry.tscn @@ -0,0 +1,60 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://menus/score_entry.gd" type="Script" id=2] +[ext_resource path="res://graphics/hud/scores/sweet.png" type="Texture" id=3] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=4] + +[node name="ScoreEntry" type="HBoxContainer"] +margin_right = 228.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 0, 12 ) +theme = ExtResource( 1 ) +custom_constants/separation = 8 +script = ExtResource( 2 ) +player = "coolplayer" + +[node name="Place" type="Label" parent="."] +margin_top = 1.0 +margin_right = 16.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 16, 0 ) +custom_fonts/font = ExtResource( 4 ) +text = "0" +align = 1 + +[node name="Player" type="Label" parent="."] +margin_left = 24.0 +margin_top = 1.0 +margin_right = 94.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 70, 0 ) +custom_fonts/font = ExtResource( 4 ) +text = "coolplayer" +align = 1 + +[node name="Score" type="Label" parent="."] +margin_left = 102.0 +margin_top = 1.0 +margin_right = 137.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 35, 0 ) +custom_fonts/font = ExtResource( 4 ) +text = "00000" +align = 2 + +[node name="Time" type="Label" parent="."] +margin_left = 145.0 +margin_top = 1.0 +margin_right = 201.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 56, 0 ) +custom_fonts/font = ExtResource( 4 ) +text = "--:--.--" +align = 2 + +[node name="Difficulty" type="TextureRect" parent="."] +margin_left = 209.0 +margin_right = 221.0 +margin_bottom = 12.0 +texture = ExtResource( 3 ) diff --git a/menus/scoreboards.gd b/menus/scoreboards.gd new file mode 100644 index 0000000..ead6d13 --- /dev/null +++ b/menus/scoreboards.gd @@ -0,0 +1,205 @@ +extends Node + + +enum Completion {ANY, FULL} +enum ScoreType {SCORE, TIME} + + +const COMPLETION_NAMES = ["Any%", "100%"] +const SCORE_TYPE_NAMES = ["Scores", "Times"] + + +var selected_level: int = 0 +var selected_difficulty: int = Game.Difficulty.SPICY +var selected_completion: int = Completion.ANY +var selected_type: int = ScoreType.SCORE + +var _scoreboard_id: int = -1 +var _scoreboard_tag: String = "spicy-any%" +var _page: int = 0 + + +onready var level_title: Button = $"%LevelTitle" +onready var back_arrow: TextureRect = $"%BackArrow" +onready var next_arrow: TextureRect = $"%NextArrow" +onready var difficulty: Button = $"%Difficulty" +onready var completion: Button = $"%Completion" +onready var type: Button = $"%Type" +onready var scores: VBoxContainer = $"%Scores" +onready var scoreboard_tabs: TabContainer = $"%ScoreboardTabs" +onready var prev_board: TextureRect = $"%PrevBoard" +onready var next_board: TextureRect = $"%NextBoard" + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + Fade.fade_in(Options.transition_speed_secs) + yield(get_tree(), "idle_frame") + level_title.text = LevelData.levels[selected_level].title + level_title.grab_focus() + match selected_type: + ScoreType.SCORE: + _scoreboard_id = LevelData.levels[selected_level].scores_id + ScoreType.TIME: + _scoreboard_id = LevelData.levels[selected_level].times_id + if Time.get_ticks_msec() > 5000: + reload_scores() + + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("ui_cancel"): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = preload("res://menus/main_menu.tscn").instance() + + +# reload scores from newgrounds +func reload_scores() -> void: + _set_tag() + scoreboard_tabs.current_tab = 1 + # attempt the thing + if _scoreboard_id >= 0 and Ngio.keys_loaded: + var response = yield(Ngio.request_execute("ScoreBoard.getScores", { + id = _scoreboard_id, + limit = scores.get_child_count(), + skip = _page * 8, + period = "A", + tag = _scoreboard_tag, + }), "completed") + if Ngio.has_result(response) and response.result.data.success: + var retrieved_scores = response.result.data.scores + for i in scores.get_child_count(): + var score_entry = scores.get_child(i) + score_entry.place = _page * 8 + i + 1 + if i < retrieved_scores.size(): + var score = retrieved_scores[i] + score_entry.user = score.user.name + if score_entry.user.length() > 16: + score_entry.user = score_entry.substr(0, 16) + "..." + match selected_type: + ScoreType.SCORE: + score_entry.score = "%05d" % score.value + ScoreType.TIME: + score_entry.score = Game.format_time(float(score.value) / 1000.0) + else: + score_entry.user = "--------" + match selected_type: + ScoreType.SCORE: + score_entry.score = "-----" + ScoreType.TIME: + score_entry.score = "--:--.--" + scoreboard_tabs.current_tab = 0 + return + scoreboard_tabs.current_tab = 2 + +# set tag from selected difficulty and completion +func _set_tag() -> void: + match selected_difficulty: + Game.Difficulty.SWEET: + _scoreboard_tag = "sweet" + Game.Difficulty.SALTY: + _scoreboard_tag = "salty" + Game.Difficulty.SPICY: + _scoreboard_tag = "spicy" + Game.Difficulty.PUNGENT: + _scoreboard_tag = "pungent" + if selected_type == ScoreType.TIME: + match selected_completion: + Completion.ANY: + _scoreboard_tag += "-any%" + Completion.FULL: + _scoreboard_tag += "-100%" + +# show arrows when level is focused +func _on_LevelTitle_focus_entered() -> void: + back_arrow.visible = true + next_arrow.visible = true + +# hide arrows when level not focused +func _on_LevelTitle_focus_exited() -> void: + back_arrow.visible = false + next_arrow.visible = false + +# detect left and right presses when level is focused +func _on_LevelTitle_gui_input(event: InputEvent) -> void: + if scoreboard_tabs.current_tab == 1: # do nothing if already loading + return + if event.is_action_pressed("ui_left"): + selected_level = posmod(selected_level - 1, LevelData.levels.size()) + while LevelData.levels[selected_level].boss: + selected_level = posmod(selected_level - 1, LevelData.levels.size()) + level_title.text = LevelData.levels[selected_level].title + match selected_type: + ScoreType.SCORE: + _scoreboard_id = LevelData.levels[selected_level].scores_id + ScoreType.TIME: + _scoreboard_id = LevelData.levels[selected_level].times_id + _page = 0 + reload_scores() + elif event.is_action_pressed("ui_right"): + selected_level = posmod(selected_level + 1, LevelData.levels.size()) + while LevelData.levels[selected_level].boss: + selected_level = posmod(selected_level + 1, LevelData.levels.size()) + level_title.text = LevelData.levels[selected_level].title + match selected_type: + ScoreType.SCORE: + _scoreboard_id = LevelData.levels[selected_level].scores_id + ScoreType.TIME: + _scoreboard_id = LevelData.levels[selected_level].times_id + _page = 0 + reload_scores() + +# difficulty selector +func _on_Difficulty_pressed() -> void: + if scoreboard_tabs.current_tab == 1: # do nothing if already loading + return + selected_difficulty = posmod(selected_difficulty + 1, 4) + difficulty.text = Game.DIFFICULTY_NAMES[selected_difficulty] + _page = 0 + reload_scores() + +# completion amount selector +func _on_Completion_pressed() -> void: + if scoreboard_tabs.current_tab == 1: # do nothing if already loading + return + selected_completion = posmod(selected_completion + 1, 2) + completion.text = COMPLETION_NAMES[selected_completion] + _page = 0 + reload_scores() + +# score type selector +func _on_Type_pressed() -> void: + if scoreboard_tabs.current_tab == 1: # do nothing if already loading + return + selected_type = posmod(selected_type + 1, 2) + match selected_type: + ScoreType.SCORE: + _scoreboard_id = LevelData.levels[selected_level].scores_id + completion.visible = false + ScoreType.TIME: + _scoreboard_id = LevelData.levels[selected_level].times_id + completion.visible = true + type.text = SCORE_TYPE_NAMES[selected_type] + _page = 0 + reload_scores() + + +func _on_Scoreboard_focus_entered() -> void: + prev_board.visible = true + next_board.visible = true + + +func _on_Scoreboard_focus_exited() -> void: + prev_board.visible = false + next_board.visible = false + + +func _on_Scoreboard_gui_input(event: InputEvent) -> void: + if event.is_action_pressed("ui_left"): + _page -= 1 + if _page <= 0: + _page = 0 + reload_scores() + elif event.is_action_pressed("ui_right"): + _page += 1 + reload_scores() diff --git a/menus/scoreboards.tscn b/menus/scoreboards.tscn new file mode 100644 index 0000000..2993ef3 --- /dev/null +++ b/menus/scoreboards.tscn @@ -0,0 +1,335 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://menus/scoreboards.gd" type="Script" id=2] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=4] +[ext_resource path="res://ui/theme.tres" type="Theme" id=5] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=6] +[ext_resource path="res://menus/score_entry.tscn" type="PackedScene" id=7] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=8] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.615686, 0.670588, 0.984314, 1 ) +shader_param/color_2 = Color( 1, 0.709804, 0.984314, 1 ) +shader_param/checker_size = Vector2( 24, 12 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 8, -8 ) +shader_param/cycle_alternation = Vector2( 0, 1 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 8, 4 ) +shader_param/ammount = Vector2( 12, 24 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[node name="Scoreboards" type="Node"] +script = ExtResource( 2 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="BoardsScreen" type="VBoxContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 5 ) +custom_constants/separation = 0 + +[node name="SelectLevel" type="HBoxContainer" parent="BoardsScreen"] +margin_right = 256.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 0, 16 ) +alignment = 1 + +[node name="BackArrow" type="TextureRect" parent="BoardsScreen/SelectLevel"] +unique_name_in_owner = true +material = SubResource( 2 ) +margin_left = 72.0 +margin_top = 4.0 +margin_right = 78.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) +flip_h = true + +[node name="LevelTitle" type="Button" parent="BoardsScreen/SelectLevel"] +unique_name_in_owner = true +margin_left = 82.0 +margin_top = 3.0 +margin_right = 173.0 +margin_bottom = 13.0 +focus_neighbour_bottom = NodePath("../../SelectScoreType/Type") +size_flags_vertical = 4 +theme = ExtResource( 5 ) +custom_colors/font_color_focus = Color( 1, 0.968627, 0.709804, 1 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 8 ) +text = "Verdant Hills" + +[node name="NextArrow" type="TextureRect" parent="BoardsScreen/SelectLevel"] +unique_name_in_owner = true +material = SubResource( 3 ) +margin_left = 177.0 +margin_top = 4.0 +margin_right = 183.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) + +[node name="SelectScoreType" type="HBoxContainer" parent="BoardsScreen"] +margin_top = 16.0 +margin_right = 256.0 +margin_bottom = 32.0 +rect_min_size = Vector2( 0, 16 ) +alignment = 1 + +[node name="Difficulty" type="Button" parent="BoardsScreen/SelectScoreType"] +unique_name_in_owner = true +margin_left = 52.0 +margin_top = 3.0 +margin_right = 100.0 +margin_bottom = 13.0 +rect_min_size = Vector2( 48, 0 ) +focus_neighbour_right = NodePath("../Type") +focus_neighbour_bottom = NodePath("../../Scoreboard") +size_flags_vertical = 4 +theme = ExtResource( 5 ) +custom_colors/font_color_focus = Color( 1, 0.968627, 0.709804, 1 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 8 ) +text = "Spicy" + +[node name="Type" type="Button" parent="BoardsScreen/SelectScoreType"] +unique_name_in_owner = true +margin_left = 104.0 +margin_top = 3.0 +margin_right = 152.0 +margin_bottom = 13.0 +rect_min_size = Vector2( 48, 0 ) +focus_neighbour_left = NodePath("../Difficulty") +focus_neighbour_right = NodePath("../SpaceReserve/Completion") +focus_neighbour_bottom = NodePath("../../Scoreboard") +size_flags_vertical = 4 +theme = ExtResource( 5 ) +custom_colors/font_color_focus = Color( 1, 0.968627, 0.709804, 1 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 8 ) +text = "Scores" + +[node name="SpaceReserve" type="Control" parent="BoardsScreen/SelectScoreType"] +margin_left = 156.0 +margin_top = 8.0 +margin_right = 204.0 +margin_bottom = 8.0 +rect_min_size = Vector2( 48, 0 ) +size_flags_vertical = 4 + +[node name="Completion" type="Button" parent="BoardsScreen/SelectScoreType/SpaceReserve"] +unique_name_in_owner = true +visible = false +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -24.0 +margin_top = -5.0 +margin_right = 24.0 +margin_bottom = 5.0 +rect_min_size = Vector2( 48, 0 ) +focus_neighbour_left = NodePath("../../Type") +focus_neighbour_bottom = NodePath("../../../Scoreboard") +theme = ExtResource( 5 ) +custom_colors/font_color_focus = Color( 1, 0.968627, 0.709804, 1 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 8 ) +text = "Any%" +icon_align = 1 + +[node name="Scoreboard" type="HBoxContainer" parent="BoardsScreen"] +margin_top = 32.0 +margin_right = 256.0 +margin_bottom = 192.0 +focus_neighbour_top = NodePath("../SelectScoreType/Type") +focus_mode = 2 +size_flags_vertical = 3 +alignment = 1 + +[node name="PrevBoard" type="TextureRect" parent="BoardsScreen/Scoreboard"] +unique_name_in_owner = true +material = SubResource( 2 ) +margin_left = 6.0 +margin_top = 76.0 +margin_right = 12.0 +margin_bottom = 84.0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) +flip_h = true + +[node name="PanelContainer" type="PanelContainer" parent="BoardsScreen/Scoreboard"] +margin_left = 16.0 +margin_right = 240.0 +margin_bottom = 144.0 +rect_min_size = Vector2( 224, 144 ) +size_flags_horizontal = 4 +size_flags_vertical = 0 + +[node name="MarginContainer" type="MarginContainer" parent="BoardsScreen/Scoreboard/PanelContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 221.0 +margin_bottom = 141.0 +custom_constants/margin_right = 4 +custom_constants/margin_top = 4 +custom_constants/margin_left = 4 +custom_constants/margin_bottom = 4 + +[node name="VBoxContainer" type="VBoxContainer" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 214.0 +margin_bottom = 134.0 + +[node name="Header" type="HBoxContainer" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer"] +margin_right = 210.0 +margin_bottom = 10.0 +custom_constants/separation = 8 + +[node name="Place" type="Label" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/Header"] +margin_right = 21.0 +margin_bottom = 10.0 +text = " # " + +[node name="User" type="Label" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/Header"] +margin_left = 29.0 +margin_right = 167.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "User" + +[node name="Score" type="Label" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/Header"] +margin_left = 175.0 +margin_right = 210.0 +margin_bottom = 10.0 +text = "score" +align = 2 + +[node name="HSeparator" type="HSeparator" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer"] +margin_top = 14.0 +margin_right = 210.0 +margin_bottom = 18.0 + +[node name="ScoreboardTabs" type="TabContainer" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +margin_top = 22.0 +margin_right = 210.0 +margin_bottom = 130.0 +size_flags_vertical = 3 +tabs_visible = false + +[node name="Scores" type="VBoxContainer" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs"] +unique_name_in_owner = true +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="ScoreEntry1" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +place = 1 + +[node name="ScoreEntry2" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 14.0 +margin_bottom = 24.0 +place = 2 + +[node name="ScoreEntry3" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 28.0 +margin_bottom = 38.0 +place = 3 + +[node name="ScoreEntry4" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 42.0 +margin_bottom = 52.0 +place = 4 + +[node name="ScoreEntry5" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 56.0 +margin_bottom = 66.0 +place = 5 + +[node name="ScoreEntry6" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 70.0 +margin_bottom = 80.0 +place = 6 + +[node name="ScoreEntry7" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 84.0 +margin_bottom = 94.0 +place = 7 + +[node name="ScoreEntry8" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 98.0 +margin_bottom = 108.0 +place = 8 + +[node name="LoadingIndicator" type="CenterContainer" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/LoadingIndicator"] +material = SubResource( 4 ) +margin_left = 101.0 +margin_top = 49.0 +margin_right = 108.0 +margin_bottom = 59.0 +text = "§" + +[node name="FailedIndicator" type="CenterContainer" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/FailedIndicator"] +margin_left = 56.0 +margin_top = 49.0 +margin_right = 154.0 +margin_bottom = 59.0 +text = "Failed to load" + +[node name="NextBoard" type="TextureRect" parent="BoardsScreen/Scoreboard"] +unique_name_in_owner = true +material = SubResource( 3 ) +margin_left = 244.0 +margin_top = 76.0 +margin_right = 250.0 +margin_bottom = 84.0 +size_flags_horizontal = 0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) + +[connection signal="focus_entered" from="BoardsScreen/SelectLevel/LevelTitle" to="." method="_on_LevelTitle_focus_entered"] +[connection signal="focus_exited" from="BoardsScreen/SelectLevel/LevelTitle" to="." method="_on_LevelTitle_focus_exited"] +[connection signal="gui_input" from="BoardsScreen/SelectLevel/LevelTitle" to="." method="_on_LevelTitle_gui_input"] +[connection signal="pressed" from="BoardsScreen/SelectScoreType/Difficulty" to="." method="_on_Difficulty_pressed"] +[connection signal="pressed" from="BoardsScreen/SelectScoreType/Type" to="." method="_on_Type_pressed"] +[connection signal="pressed" from="BoardsScreen/SelectScoreType/SpaceReserve/Completion" to="." method="_on_Completion_pressed"] +[connection signal="focus_entered" from="BoardsScreen/Scoreboard" to="." method="_on_Scoreboard_focus_entered"] +[connection signal="focus_exited" from="BoardsScreen/Scoreboard" to="." method="_on_Scoreboard_focus_exited"] +[connection signal="gui_input" from="BoardsScreen/Scoreboard" to="." method="_on_Scoreboard_gui_input"] diff --git a/menus/scoreboards_scholar.gd b/menus/scoreboards_scholar.gd new file mode 100644 index 0000000..9377f82 --- /dev/null +++ b/menus/scoreboards_scholar.gd @@ -0,0 +1,113 @@ +extends Node + + +const PAGE_SIZE: int = 8 + + +var loaded_scores: Dictionary = {} +var selected_level: int = 0 +var _page: int = 0 + + +onready var scores: VBoxContainer = $"%Scores" +onready var level_title: Button = $"%LevelTitle" + + +func _ready() -> void: + yield(_refresh_scores(), "completed") + Fade.fade_in(Options.transition_speed_secs) + + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("ui_right"): + selected_level = posmod(selected_level + 1, LevelData.levels.size()) + while not LevelData.levels[selected_level].has_scoreboard: + selected_level = posmod(selected_level + 1, LevelData.levels.size()) + _refresh_scores() + elif event.is_action_pressed("ui_left"): + selected_level = posmod(selected_level - 1, LevelData.levels.size()) + while not LevelData.levels[selected_level].has_scoreboard: + selected_level = posmod(selected_level - 1, LevelData.levels.size()) + _refresh_scores() + elif event.is_action_pressed("ui_down"): + _page += 1 + _refresh_scores() + elif event.is_action_pressed("ui_up"): + _page = int(max(_page - 1, 0)) + _refresh_scores() + elif event.is_action_pressed("ui_cancel"): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = preload("res://menus/main_menu.tscn").instance() + + +func _refresh_scores() -> void: + level_title.text = LevelData.levels[selected_level].title + + var level = LevelData.levels[selected_level].save_id + if not level in loaded_scores: + yield(_load_scores(level), "completed") + + if ScoreBoard.errored: + push_error("Scoreboard could not be loaded.") + + var entries = loaded_scores.get(level, {}) + + while _page * PAGE_SIZE > entries.size(): + _page -= 1 + + var offset = _page * PAGE_SIZE + + $"%PrevScores".visible = _page > 0 + $"%NextScores".visible = entries.size() - offset > PAGE_SIZE + + for i in 8: + var entry_node = scores.get_node("ScoreEntry%d" % i) + if i >= entries.size() - offset: + entry_node.visible = false + else: + var player = entries.keys()[offset + i] + var entry = entries[player] + entry_node.visible = true + entry_node.place = offset + i + 1 + entry_node.player = player + entry_node.score = entry.score + entry_node.time = float(entry.time) * 0.001 # convert from ms + entry_node.difficulty = entry.difficulty + + +func _load_scores(level: String) -> void: + loaded_scores[level] = {} + + if ScoreBoard.server_host.empty(): + yield(get_tree(), "idle_frame") + return + + var result: Dictionary = yield(ScoreBoard.get_scores(level), "completed") + if ScoreBoard.errored: + #TODO: failure indication + return + + var players = result.keys().duplicate() + _sorting_dict = result + players.sort_custom(self, "_sort_scores") + + for p in players: + loaded_scores[level][p] = result[p] + + +var _sorting_dict: Dictionary = {} +func _sort_scores(a, b) -> bool: + var score_a = _sorting_dict[a] + var score_b = _sorting_dict[b] + + if score_b.score < score_a.score: + return true + elif score_b.score == score_a.score: + if score_b.difficulty < score_a.difficulty: + return true + elif score_b.difficulty == score_a.difficulty: + if score_b.time > score_a.time: + return true + + return false diff --git a/menus/scoreboards_scholar.tscn b/menus/scoreboards_scholar.tscn new file mode 100644 index 0000000..ca8f960 --- /dev/null +++ b/menus/scoreboards_scholar.tscn @@ -0,0 +1,320 @@ +[gd_scene load_steps=16 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://menus/scoreboards_scholar.gd" type="Script" id=2] +[ext_resource path="res://graphics/hud/arrow_down.png" type="Texture" id=3] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=4] +[ext_resource path="res://ui/theme.tres" type="Theme" id=5] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=6] +[ext_resource path="res://menus/score_entry.tscn" type="PackedScene" id=7] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=8] +[ext_resource path="res://graphics/hud/arrow_up.png" type="Texture" id=9] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.615686, 0.670588, 0.984314, 1 ) +shader_param/color_2 = Color( 1, 0.709804, 0.984314, 1 ) +shader_param/checker_size = Vector2( 24, 12 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 8, -8 ) +shader_param/cycle_alternation = Vector2( 0, 1 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 2 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=6] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 2 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 4 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 8, 4 ) +shader_param/ammount = Vector2( 12, 24 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[node name="Scoreboards" type="Node"] +script = ExtResource( 2 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="BoardsScreen" type="VBoxContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 5 ) +custom_constants/separation = 0 + +[node name="SelectLevel" type="HBoxContainer" parent="BoardsScreen"] +margin_right = 256.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 0, 16 ) +alignment = 1 + +[node name="BackArrow" type="TextureRect" parent="BoardsScreen/SelectLevel"] +unique_name_in_owner = true +material = SubResource( 2 ) +margin_left = 72.0 +margin_top = 4.0 +margin_right = 78.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) +flip_h = true + +[node name="LevelTitle" type="Button" parent="BoardsScreen/SelectLevel"] +unique_name_in_owner = true +margin_left = 82.0 +margin_top = 3.0 +margin_right = 173.0 +margin_bottom = 13.0 +size_flags_vertical = 4 +theme = ExtResource( 5 ) +custom_colors/font_color_focus = Color( 1, 0.968627, 0.709804, 1 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 8 ) +text = "Verdant Hills" + +[node name="NextArrow" type="TextureRect" parent="BoardsScreen/SelectLevel"] +unique_name_in_owner = true +material = SubResource( 3 ) +margin_left = 177.0 +margin_top = 4.0 +margin_right = 183.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) + +[node name="Scoreboard" type="HBoxContainer" parent="BoardsScreen"] +margin_top = 16.0 +margin_right = 256.0 +margin_bottom = 192.0 +focus_mode = 2 +size_flags_vertical = 3 +alignment = 1 + +[node name="PrevBoard" type="TextureRect" parent="BoardsScreen/Scoreboard"] +unique_name_in_owner = true +visible = false +material = SubResource( 2 ) +margin_top = 84.0 +margin_right = 6.0 +margin_bottom = 92.0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) +flip_h = true + +[node name="MarginContainer" type="MarginContainer" parent="BoardsScreen/Scoreboard"] +margin_left = 10.0 +margin_right = 246.0 +margin_bottom = 176.0 +custom_constants/margin_right = 4 +custom_constants/margin_top = 4 +custom_constants/margin_left = 4 +custom_constants/margin_bottom = 4 + +[node name="VBoxContainer" type="VBoxContainer" parent="BoardsScreen/Scoreboard/MarginContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 232.0 +margin_bottom = 172.0 + +[node name="Header" type="HBoxContainer" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer"] +margin_right = 228.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 228, 10 ) +custom_constants/separation = 8 + +[node name="Place" type="Label" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/Header"] +margin_right = 16.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 16, 0 ) +custom_fonts/font = ExtResource( 8 ) +text = "#" +align = 1 + +[node name="Player" type="Label" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/Header"] +margin_left = 24.0 +margin_right = 94.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 70, 0 ) +custom_fonts/font = ExtResource( 8 ) +text = "Player" +align = 1 +clip_text = true + +[node name="Score" type="Label" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/Header"] +margin_left = 102.0 +margin_right = 137.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 35, 0 ) +custom_fonts/font = ExtResource( 8 ) +text = "score" +align = 2 + +[node name="Time" type="Label" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/Header"] +margin_left = 145.0 +margin_right = 201.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 56, 0 ) +custom_fonts/font = ExtResource( 8 ) +text = "time" +align = 1 + +[node name="Control" type="Control" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/Header"] +margin_left = 209.0 +margin_right = 221.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="HSeparator" type="HSeparator" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer"] +margin_top = 14.0 +margin_right = 228.0 +margin_bottom = 15.0 +custom_constants/separation = 1 + +[node name="ScoreboardTabs" type="Control" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +margin_top = 19.0 +margin_right = 228.0 +margin_bottom = 168.0 +size_flags_vertical = 3 + +[node name="Scores" type="VBoxContainer" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs"] +unique_name_in_owner = true +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="PrevScores" type="TextureRect" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores"] +unique_name_in_owner = true +visible = false +material = SubResource( 5 ) +margin_left = 110.0 +margin_right = 118.0 +margin_bottom = 8.0 +rect_pivot_offset = Vector2( 3, 4 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 +texture = ExtResource( 9 ) + +[node name="ScoreEntry0" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +place = 1 + +[node name="ScoreEntry1" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 16.0 +margin_bottom = 28.0 +place = 2 + +[node name="ScoreEntry2" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 32.0 +margin_bottom = 44.0 +place = 3 + +[node name="ScoreEntry3" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 48.0 +margin_bottom = 60.0 +place = 4 + +[node name="ScoreEntry4" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 64.0 +margin_bottom = 76.0 +place = 5 + +[node name="ScoreEntry5" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 80.0 +margin_bottom = 92.0 +place = 6 + +[node name="ScoreEntry6" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 96.0 +margin_bottom = 108.0 +place = 7 + +[node name="ScoreEntry7" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 112.0 +margin_bottom = 124.0 +place = 8 + +[node name="NextScores" type="TextureRect" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores"] +unique_name_in_owner = true +visible = false +material = SubResource( 6 ) +margin_left = 110.0 +margin_top = 128.0 +margin_right = 118.0 +margin_bottom = 136.0 +rect_pivot_offset = Vector2( 3, 4 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 +texture = ExtResource( 3 ) + +[node name="LoadingIndicator" type="CenterContainer" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/LoadingIndicator"] +material = SubResource( 4 ) +margin_left = 110.0 +margin_top = 69.0 +margin_right = 117.0 +margin_bottom = 79.0 +text = "§" + +[node name="FailedIndicator" type="CenterContainer" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/FailedIndicator"] +margin_left = 65.0 +margin_top = 69.0 +margin_right = 163.0 +margin_bottom = 79.0 +text = "Failed to load" + +[node name="PanelContainer" type="PanelContainer" parent="BoardsScreen/Scoreboard"] +visible = false +margin_left = 250.0 +margin_right = 474.0 +margin_bottom = 144.0 +rect_min_size = Vector2( 224, 144 ) +size_flags_horizontal = 4 +size_flags_vertical = 0 + +[node name="NextBoard" type="TextureRect" parent="BoardsScreen/Scoreboard"] +unique_name_in_owner = true +visible = false +material = SubResource( 3 ) +margin_left = 250.0 +margin_top = 84.0 +margin_right = 256.0 +margin_bottom = 92.0 +size_flags_horizontal = 0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) diff --git a/menus/shard_results.tscn b/menus/shard_results.tscn new file mode 100644 index 0000000..9fda7d7 --- /dev/null +++ b/menus/shard_results.tscn @@ -0,0 +1,102 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Animation" id=3] +resource_name = "Collect" +step = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.15, 0.3, 0.375, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 1, 1 ), Vector2( 1.3, 1.3 ), Vector2( 1, 1 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CollectedParticle:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=4] +resource_name = "Miss" +tracks/0/type = "value" +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Gradient" id=2] +interpolation_mode = 2 +offsets = PoolRealArray( 0, 0.734694, 1 ) +colors = PoolColorArray( 0.576471, 0.980392, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 ) + +[node name="Shard" type="Node2D"] + +[node name="Sprite" type="Sprite" parent="."] +material = SubResource( 1 ) +position = Vector2( 1, 1 ) +scale = Vector2( 1e-05, 1e-05 ) +texture = ExtResource( 3 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "Miss" +anims/Collect = SubResource( 3 ) +anims/Miss = SubResource( 4 ) + +[node name="CollectedParticle" type="CPUParticles2D" parent="."] +pause_mode = 2 +emitting = false +amount = 64 +one_shot = true +explosiveness = 1.0 +local_coords = false +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 150 ) +initial_velocity = 250.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_random = 1.0 +color_ramp = SubResource( 2 ) diff --git a/menus/sockbug.gd b/menus/sockbug.gd new file mode 100644 index 0000000..727cf7e --- /dev/null +++ b/menus/sockbug.gd @@ -0,0 +1,15 @@ +extends AnimatedSprite + +export var speed = Vector2(100,0) + +# Called when the node enters the scene tree for the first time. +func _physics_process(delta): + position += speed * delta + if position.x > 300: + position.x = 0 + if position.x < 0: + position.x = 300 + if position.y > 252: + position.y = 0 + if position.y < 0: + position.y = 252 diff --git a/menus/sound_select.gd b/menus/sound_select.gd new file mode 100644 index 0000000..41b79d5 --- /dev/null +++ b/menus/sound_select.gd @@ -0,0 +1,45 @@ +tool +extends TextureButton + +export (Array, String) var titles +export (Array, AudioStream) var sounds +export (Array, Dictionary) var categories setget set_categories +var current_selection = 0 +onready var body = $SoundLabel/Label +onready var category = $SoundLabel/Category + +func _ready(): + if Engine.editor_hint and categories.empty(): + categories = [SoundCategory.new()] + +func _gui_input(event): + if Input.is_action_just_pressed("ui_left"): + current_selection -= 1 + elif Input.is_action_just_pressed("ui_right"): + current_selection += 1 + elif Input.is_action_just_pressed("ui_accept"): + Audio.play_sound(sounds[current_selection],Audio.ac_collectible) + elif Input.is_action_just_pressed("ui_cancel"): + Audio.ac_music.stop() + current_selection = posmod(current_selection,sounds.size()) + body.text = titles[current_selection] +# for c in categories: +# if current_selection >= c.index: +# category.text = c.name +# category.add_color_override("font_color", c.color) + + +class SoundCategory extends Resource: + export var starting_index: int = 0 + export var title: String = "" + export var color: Color = Color.white + +func set_categories(value: Array) -> void: + categories = value + for i in categories.size(): + if !categories[i]: + categories[i] = { + index = 0, + name = "", + color = Color.white, + } diff --git a/menus/sound_test.gd b/menus/sound_test.gd new file mode 100644 index 0000000..99a3e05 --- /dev/null +++ b/menus/sound_test.gd @@ -0,0 +1,4 @@ +extends Control + +func _ready(): + Fade.fade_in(Options.transition_speed_secs) diff --git a/menus/sound_test.tscn b/menus/sound_test.tscn new file mode 100644 index 0000000..740a33d --- /dev/null +++ b/menus/sound_test.tscn @@ -0,0 +1,335 @@ +[gd_scene load_steps=135 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/hud/listen_to_the_future.png" type="Texture" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] +[ext_resource path="res://ui/theme.tres" type="Theme" id=5] +[ext_resource path="res://audio/sounds/key.ogg" type="AudioStream" id=6] +[ext_resource path="res://audio/sounds/select.ogg" type="AudioStream" id=7] +[ext_resource path="res://audio/sounds/land.ogg" type="AudioStream" id=8] +[ext_resource path="res://audio/sounds/arrow_collect.ogg" type="AudioStream" id=9] +[ext_resource path="res://audio/sounds/confirm.ogg" type="AudioStream" id=10] +[ext_resource path="res://graphics/hud/sound_test_title.png" type="Texture" id=11] +[ext_resource path="res://graphics/player/sg_headphones.png" type="Texture" id=12] +[ext_resource path="res://menus/music_select.gd" type="Script" id=13] +[ext_resource path="res://audio/music/rumble_loop.ogg" type="AudioStream" id=14] +[ext_resource path="res://audio/music/pause.ogg" type="AudioStream" id=15] +[ext_resource path="res://menus/sound_select.gd" type="Script" id=16] +[ext_resource path="res://audio/music/burnt_out.ogg" type="AudioStream" id=17] +[ext_resource path="res://audio/music/dusk_park.ogg" type="AudioStream" id=18] +[ext_resource path="res://audio/music/klystron_vip.ogg" type="AudioStream" id=19] +[ext_resource path="res://audio/music/cryokiller.ogg" type="AudioStream" id=20] +[ext_resource path="res://audio/music/spine_v2.ogg" type="AudioStream" id=21] +[ext_resource path="res://audio/music/klystron.ogg" type="AudioStream" id=22] +[ext_resource path="res://audio/music/precision_parasite.ogg" type="AudioStream" id=23] +[ext_resource path="res://audio/sounds/bubble.ogg" type="AudioStream" id=24] +[ext_resource path="res://audio/sounds/jump.ogg" type="AudioStream" id=25] +[ext_resource path="res://menus/sound_test.gd" type="Script" id=26] +[ext_resource path="res://graphics/hud/sound_test_arrow.png" type="Texture" id=27] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=28] +[ext_resource path="res://audio/sounds/button.ogg" type="AudioStream" id=29] +[ext_resource path="res://audio/sounds/die.ogg" type="AudioStream" id=30] +[ext_resource path="res://audio/sounds/scrump_die.ogg" type="AudioStream" id=31] +[ext_resource path="res://audio/sounds/shoot_arrow.ogg" type="AudioStream" id=32] +[ext_resource path="res://audio/sounds/die_skeleton.ogg" type="AudioStream" id=33] +[ext_resource path="res://audio/sounds/double_jump.ogg" type="AudioStream" id=34] +[ext_resource path="res://audio/sounds/gover.ogg" type="AudioStream" id=35] +[ext_resource path="res://audio/sounds/explosion.ogg" type="AudioStream" id=36] +[ext_resource path="res://audio/sounds/scrump_hurt.ogg" type="AudioStream" id=37] +[ext_resource path="res://audio/sounds/shell.ogg" type="AudioStream" id=38] +[ext_resource path="res://audio/sounds/bullet_barrage.ogg" type="AudioStream" id=39] +[ext_resource path="res://audio/sounds/gun_cock.ogg" type="AudioStream" id=40] +[ext_resource path="res://audio/sounds/a_bmilc.ogg" type="AudioStream" id=41] +[ext_resource path="res://audio/sounds/a_climb.ogg" type="AudioStream" id=42] +[ext_resource path="res://audio/sounds/star.ogg" type="AudioStream" id=43] +[ext_resource path="res://audio/music/moon_trail.ogg" type="AudioStream" id=44] +[ext_resource path="res://menus/main_menu.tscn" type="PackedScene" id=45] +[ext_resource path="res://menus/back_button.tscn" type="PackedScene" id=46] +[ext_resource path="res://audio/sounds/mech_hurt_2.ogg" type="AudioStream" id=47] +[ext_resource path="res://audio/sounds/explosion_small.ogg" type="AudioStream" id=48] +[ext_resource path="res://audio/sounds/mech_hurt_3.ogg" type="AudioStream" id=49] +[ext_resource path="res://audio/sounds/mech_hurt_1.ogg" type="AudioStream" id=50] +[ext_resource path="res://audio/sounds/scrump_shot.ogg" type="AudioStream" id=51] +[ext_resource path="res://audio/sounds/rainbow_laser.ogg" type="AudioStream" id=52] +[ext_resource path="res://audio/sounds/fami_transform.ogg" type="AudioStream" id=53] +[ext_resource path="res://audio/sounds/copsquash.ogg" type="AudioStream" id=54] +[ext_resource path="res://audio/sounds/ominous.ogg" type="AudioStream" id=55] +[ext_resource path="res://audio/sounds/cop_splat.ogg" type="AudioStream" id=56] +[ext_resource path="res://audio/sounds/shard_expel.ogg" type="AudioStream" id=57] +[ext_resource path="res://audio/sounds/absorb_shard.ogg" type="AudioStream" id=58] +[ext_resource path="res://audio/sounds/famira.ogg" type="AudioStream" id=59] +[ext_resource path="res://audio/sounds/great_job_haze.ogg" type="AudioStream" id=60] +[ext_resource path="res://audio/sounds/fail_shard.ogg" type="AudioStream" id=61] +[ext_resource path="res://audio/sounds/good_job_haze.ogg" type="AudioStream" id=62] +[ext_resource path="res://audio/sounds/msx_die.ogg" type="AudioStream" id=63] +[ext_resource path="res://audio/sounds/famira_die.ogg" type="AudioStream" id=64] +[ext_resource path="res://audio/sounds/final_score.ogg" type="AudioStream" id=65] +[ext_resource path="res://audio/sounds/shard_results.ogg" type="AudioStream" id=66] +[ext_resource path="res://audio/sounds/msx_here_take_this.wav" type="AudioStream" id=67] +[ext_resource path="res://audio/sounds/msx_help_me_get_outta_here.ogg" type="AudioStream" id=68] +[ext_resource path="res://audio/sounds/msx_come_here.ogg" type="AudioStream" id=69] +[ext_resource path="res://audio/sounds/msx_fuck.ogg" type="AudioStream" id=70] +[ext_resource path="res://audio/sounds/msx_shit.ogg" type="AudioStream" id=71] +[ext_resource path="res://audio/sounds/fami_fire.ogg" type="AudioStream" id=72] +[ext_resource path="res://audio/sounds/fami_voice.ogg" type="AudioStream" id=73] +[ext_resource path="res://audio/sounds/revolution2083_haze.ogg" type="AudioStream" id=74] +[ext_resource path="res://audio/sounds/se_g2.ogg" type="AudioStream" id=75] +[ext_resource path="res://audio/sounds/victory_haze.ogg" type="AudioStream" id=76] +[ext_resource path="res://audio/sounds/2600_charge.ogg" type="AudioStream" id=77] +[ext_resource path="res://audio/sounds/sword.ogg" type="AudioStream" id=78] +[ext_resource path="res://audio/sounds/spaghetti.ogg" type="AudioStream" id=79] +[ext_resource path="res://audio/sounds/mkey.ogg" type="AudioStream" id=80] +[ext_resource path="res://audio/sounds/fami_grumble.ogg" type="AudioStream" id=81] +[ext_resource path="res://audio/sounds/vulcan.ogg" type="AudioStream" id=82] +[ext_resource path="res://audio/sounds/laser_ready.ogg" type="AudioStream" id=83] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=84] +[ext_resource path="res://audio/sounds/collapse_block_fall.ogg" type="AudioStream" id=85] +[ext_resource path="res://audio/sounds/mech_walk_1.ogg" type="AudioStream" id=86] +[ext_resource path="res://audio/sounds/a_egg_collect.ogg" type="AudioStream" id=87] +[ext_resource path="res://audio/sounds/mech_creak.ogg" type="AudioStream" id=88] +[ext_resource path="res://audio/sounds/mech_unduck.ogg" type="AudioStream" id=89] +[ext_resource path="res://audio/sounds/mech_duck.ogg" type="AudioStream" id=90] +[ext_resource path="res://audio/sounds/resolve.ogg" type="AudioStream" id=91] +[ext_resource path="res://audio/sounds/talking.ogg" type="AudioStream" id=92] +[ext_resource path="res://audio/sounds/mech_walk.ogg" type="AudioStream" id=93] +[ext_resource path="res://audio/sounds/mech_walk_2.ogg" type="AudioStream" id=94] +[ext_resource path="res://audio/sounds/critical_heat.ogg" type="AudioStream" id=95] +[ext_resource path="res://audio/sounds/good_job_ivy.ogg" type="AudioStream" id=96] +[ext_resource path="res://audio/sounds/good_job_dog.ogg" type="AudioStream" id=97] +[ext_resource path="res://audio/music/mitten.ogg" type="AudioStream" id=98] +[ext_resource path="res://audio/sounds/great_job_dog.ogg" type="AudioStream" id=99] +[ext_resource path="res://audio/sounds/great_job_ivy.ogg" type="AudioStream" id=100] +[ext_resource path="res://audio/sounds/msx_goddammit.ogg" type="AudioStream" id=102] +[ext_resource path="res://audio/sounds/msx_fucking_cop.ogg" type="AudioStream" id=103] +[ext_resource path="res://audio/sounds/msx_motherfucker.ogg" type="AudioStream" id=104] +[ext_resource path="res://audio/sounds/revolution2083.ogg" type="AudioStream" id=105] +[ext_resource path="res://audio/music/sleet.ogg" type="AudioStream" id=106] +[ext_resource path="res://audio/sounds/revolution2083_dog.ogg" type="AudioStream" id=107] +[ext_resource path="res://audio/sounds/revolution2083_ivy.ogg" type="AudioStream" id=108] +[ext_resource path="res://audio/music/vitreous_squares.ogg" type="AudioStream" id=109] +[ext_resource path="res://audio/sounds/victory_ivy.ogg" type="AudioStream" id=110] +[ext_resource path="res://audio/sounds/good_job.ogg" type="AudioStream" id=111] +[ext_resource path="res://audio/sounds/victory_dog.ogg" type="AudioStream" id=112] +[ext_resource path="res://audio/sounds/teleport.ogg" type="AudioStream" id=113] +[ext_resource path="res://audio/sounds/shard_float.ogg" type="AudioStream" id=114] +[ext_resource path="res://audio/sounds/intro_voiceover.ogg" type="AudioStream" id=115] +[ext_resource path="res://audio/sounds/cop_shoot.ogg" type="AudioStream" id=116] +[ext_resource path="res://audio/sounds/splash.ogg" type="AudioStream" id=117] +[ext_resource path="res://audio/sounds/zap_wip.ogg" type="AudioStream" id=118] +[ext_resource path="res://audio/music/intro.ogg" type="AudioStream" id=119] +[ext_resource path="res://audio/music/BBBBBBBB.ogg" type="AudioStream" id=120] +[ext_resource path="res://audio/music/the_dirt_under_the_meadow.ogg" type="AudioStream" id=121] +[ext_resource path="res://audio/music/empty_motel.ogg" type="AudioStream" id=122] +[ext_resource path="res://audio/music/rumble_revolution.ogg" type="AudioStream" id=123] +[ext_resource path="res://audio/music/rumble_revolution_intro.ogg" type="AudioStream" id=124] +[ext_resource path="res://audio/music/rev83-wondering-now-short.ogg" type="AudioStream" id=125] +[ext_resource path="res://audio/music/74(game_over).ogg" type="AudioStream" id=126] +[ext_resource path="res://audio/sounds/victory_nobonus.ogg" type="AudioStream" id=127] +[ext_resource path="res://audio/sounds/shard_get.ogg" type="AudioStream" id=128] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.501961, 1, 0.929412, 1 ) +shader_param/color_2 = Color( 0, 0.713726, 0.631373, 1 ) +shader_param/checker_size = Vector2( 32, 32 ) +shader_param/pan_speed = Vector2( 12, 0 ) +shader_param/cycle_speed = Vector2( 9, 0 ) +shader_param/cycle_alternation = Vector2( 2, 1 ) +shader_param/uv_transform = Transform2D( 0, 3, 3, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=12] +shader = ExtResource( 2 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=13] +atlas = ExtResource( 12 ) +region = Rect2( 0, 0, 20, 20 ) + +[sub_resource type="AtlasTexture" id=14] +atlas = ExtResource( 12 ) +region = Rect2( 20, 0, 20, 20 ) + +[sub_resource type="SpriteFrames" id=15] +animations = [ { +"frames": [ SubResource( 13 ), SubResource( 14 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="ShaderMaterial" id=18] +shader = ExtResource( 28 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=19] +shader = ExtResource( 28 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[node name="SoundTest" type="Control"] +script = ExtResource( 26 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 +__meta__ = { +"_edit_lock_": true +} + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 83, 19 ) +texture = ExtResource( 11 ) + +[node name="AnimatedSprite2" type="AnimatedSprite" parent="."] +material = SubResource( 12 ) +position = Vector2( 72, 152 ) +scale = Vector2( 2, 2 ) +frames = SubResource( 15 ) +playing = true + +[node name="AnimatedSprite3" type="AnimatedSprite" parent="."] +material = SubResource( 12 ) +position = Vector2( 112, 152 ) +scale = Vector2( 2, 2 ) +frames = SubResource( 15 ) +playing = true + +[node name="AnimatedSprite4" type="AnimatedSprite" parent="."] +material = SubResource( 12 ) +position = Vector2( 152, 152 ) +scale = Vector2( 2, 2 ) +frames = SubResource( 15 ) +playing = true + +[node name="AnimatedSprite5" type="AnimatedSprite" parent="."] +material = SubResource( 12 ) +position = Vector2( 192, 152 ) +scale = Vector2( 2, 2 ) +frames = SubResource( 15 ) +playing = true + +[node name="Music" type="TextureButton" parent="."] +material = SubResource( 18 ) +margin_left = 38.0 +margin_top = 64.0 +margin_right = 46.0 +margin_bottom = 73.0 +texture_focused = ExtResource( 27 ) +script = ExtResource( 13 ) +titles = [ "Mute", "Vitreous Squares", "Intro", "Rumble", "Dusk Park", "Burnt Out", "Klystron", "Sleet", "Moon Trail 2023", "Precision Parasite", "klystron vip", "Spine_v2", "Cryokiller", "Mitten", "Dirt Under The Meadow", "Rumble Revolution pt1", "Rumble Revolution", "Empty Motel", "You're Wondering Now", "74 (Game Over)", "Pause", "BBBBBBBB" ] +songs = [ null, ExtResource( 109 ), ExtResource( 119 ), ExtResource( 14 ), ExtResource( 18 ), ExtResource( 17 ), ExtResource( 22 ), ExtResource( 106 ), ExtResource( 44 ), ExtResource( 23 ), ExtResource( 19 ), ExtResource( 21 ), ExtResource( 20 ), ExtResource( 98 ), ExtResource( 121 ), ExtResource( 124 ), ExtResource( 123 ), ExtResource( 122 ), ExtResource( 125 ), ExtResource( 126 ), ExtResource( 15 ), ExtResource( 120 ) ] + +[node name="MusicLabel" type="Label" parent="Music"] +material = ExtResource( 4 ) +margin_left = 10.0 +margin_top = -19.0 +margin_right = 82.0 +margin_bottom = 11.0 +theme = ExtResource( 5 ) +text = "Music" + +[node name="Panel" type="Panel" parent="Music/MusicLabel"] +margin_top = 11.0 +margin_right = 160.0 +margin_bottom = 35.0 +rect_pivot_offset = Vector2( -136, -16 ) +theme = ExtResource( 5 ) + +[node name="Label" type="Label" parent="Music/MusicLabel"] +material = ExtResource( 4 ) +margin_left = 8.0 +margin_top = 14.0 +margin_right = 152.0 +margin_bottom = 32.0 +text = "Mute" +align = 1 +valign = 1 + +[node name="Sound" type="TextureButton" parent="."] +material = SubResource( 19 ) +margin_left = 38.0 +margin_top = 112.0 +margin_right = 45.0 +margin_bottom = 121.0 +focus_neighbour_top = NodePath("../Music") +texture_focused = ExtResource( 27 ) +script = ExtResource( 16 ) +titles = [ "Select", "Confirm", "Jump", "Double Jump", "Land", "Climb", "Bmilc", "Shoot", "Die", "Sploosh", "Bzaap", "Teleport", "Gover", "Key Get", "Arrow Get", "Star Get", "Skeleton Die", "Scrump Shoot", "Scrump Hurt", "Scrump Die", "Bubble Get", "Big Explosion", "Collapse", "Glass Break", "Bullet Barrage", "Laser Charge", "Rainbow Laser", "Mech Hurt 1", "Mech Hurt 2", "Mech Hurt 3", "Small Explosion", "Bullet Casing", "Button Click", "Ominous", "GunCock", "Shards Expelled", "Shards Absorbed", "Shard Float", "Fami Transform", "Scope Squish", "Scope Splat", "Famira Roar", "2083 Shoot", "Laser Ready", "Famira Breath", "Critical Heat", "Famira Die", "Collected Shard", "Missed Shard", "Final Score", "Revolution 2083", "Shard Get", "Good Job!", "Great Job!", "Victory", "Wonderful!", "Come Here", "Help Me", "Agh!", "Fuck!", "Shit...", "Take This", "Fami's Grand Plan", "Debug M", "Spaghetti", "Sword", "Egg Collect", "Talking", "Fami Grumble", "Segz", "Mech Creak", "Mech Step 1", "Mech Step 2", "Mech Walking", "Mech Duck", "Mech Unduck", "Resolve", "Robolution 2083", "Scarletution 2083", "Dogolution 2083", "Classic Good Job", "Good Job - Scarlett", "Good Job - Dog", "Great Job - Scarlett", "Great Job - Dog", "Classic Wonderful", "Wonderful - Scarlett", "Wonderful - Dog", "Fucking Cop...", "Goddammit...", "Motherfucker...", "Intro Voiceover" ] +sounds = [ ExtResource( 7 ), ExtResource( 10 ), ExtResource( 25 ), ExtResource( 34 ), ExtResource( 8 ), ExtResource( 42 ), ExtResource( 41 ), ExtResource( 32 ), ExtResource( 30 ), ExtResource( 117 ), ExtResource( 118 ), ExtResource( 113 ), ExtResource( 35 ), ExtResource( 6 ), ExtResource( 9 ), ExtResource( 43 ), ExtResource( 33 ), ExtResource( 51 ), ExtResource( 37 ), ExtResource( 31 ), ExtResource( 24 ), ExtResource( 36 ), ExtResource( 85 ), ExtResource( 116 ), ExtResource( 39 ), ExtResource( 77 ), ExtResource( 52 ), ExtResource( 50 ), ExtResource( 47 ), ExtResource( 49 ), ExtResource( 48 ), ExtResource( 38 ), ExtResource( 29 ), ExtResource( 55 ), ExtResource( 40 ), ExtResource( 57 ), ExtResource( 58 ), ExtResource( 114 ), ExtResource( 53 ), ExtResource( 54 ), ExtResource( 56 ), ExtResource( 59 ), ExtResource( 82 ), ExtResource( 83 ), ExtResource( 72 ), ExtResource( 95 ), ExtResource( 64 ), ExtResource( 66 ), ExtResource( 61 ), ExtResource( 65 ), ExtResource( 74 ), ExtResource( 128 ), ExtResource( 62 ), ExtResource( 60 ), ExtResource( 127 ), ExtResource( 76 ), ExtResource( 69 ), ExtResource( 68 ), ExtResource( 63 ), ExtResource( 70 ), ExtResource( 71 ), ExtResource( 67 ), ExtResource( 73 ), ExtResource( 80 ), ExtResource( 79 ), ExtResource( 78 ), ExtResource( 87 ), ExtResource( 92 ), ExtResource( 81 ), ExtResource( 75 ), ExtResource( 88 ), ExtResource( 86 ), ExtResource( 94 ), ExtResource( 93 ), ExtResource( 90 ), ExtResource( 89 ), ExtResource( 91 ), ExtResource( 105 ), ExtResource( 108 ), ExtResource( 107 ), ExtResource( 111 ), ExtResource( 96 ), ExtResource( 97 ), ExtResource( 100 ), ExtResource( 99 ), ExtResource( 110 ), ExtResource( 127 ), ExtResource( 112 ), ExtResource( 103 ), ExtResource( 102 ), ExtResource( 104 ), ExtResource( 115 ) ] +categories = [ { +"color": Color( 0.690196, 0.690196, 0.690196, 1 ), +"index": 0, +"name": "Menu" +}, { +"color": Color( 1, 0.423529, 0.4, 1 ), +"index": 2, +"name": "player" +}, { +"color": Color( 1, 0.631373, 0.4, 1 ), +"index": 13, +"name": "collectibles" +} ] + +[node name="SoundLabel" type="Label" parent="Sound"] +material = ExtResource( 4 ) +margin_left = 10.0 +margin_top = -19.0 +margin_right = 82.0 +margin_bottom = 11.0 +theme = ExtResource( 5 ) +text = "Sound" + +[node name="Panel2" type="Panel" parent="Sound/SoundLabel"] +margin_top = 11.0 +margin_right = 160.0 +margin_bottom = 35.0 +rect_pivot_offset = Vector2( -136, -16 ) +theme = ExtResource( 5 ) + +[node name="Label" type="Label" parent="Sound/SoundLabel"] +material = ExtResource( 4 ) +margin_left = 8.0 +margin_top = 11.0 +margin_right = 152.0 +margin_bottom = 35.0 +text = "Select" +align = 1 +valign = 1 + +[node name="Category" type="Label" parent="Sound/SoundLabel"] +visible = false +margin_left = 42.0 +margin_right = 160.0 +margin_bottom = 10.0 +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 84 ) +text = "menu" +align = 2 + +[node name="Label" type="Label" parent="."] +material = ExtResource( 4 ) +margin_top = 180.0 +margin_right = 256.0 +margin_bottom = 194.0 +theme = ExtResource( 5 ) +text = "X - Play Z - Stop" +align = 1 + +[node name="Button" parent="." instance=ExtResource( 46 )] +margin_left = 8.0 +margin_top = 144.0 +margin_right = 60.0 +margin_bottom = 177.0 +next_scene = ExtResource( 45 ) + +[node name="ListenToTheFuture" type="Sprite" parent="."] +position = Vector2( 248, 96 ) +texture = ExtResource( 3 ) diff --git a/menus/splash_screen.gd b/menus/splash_screen.gd new file mode 100644 index 0000000..16dc3b3 --- /dev/null +++ b/menus/splash_screen.gd @@ -0,0 +1,38 @@ +extends Control + +export var next_screen: PackedScene + +var skipping: bool = false + +onready var team_sg: TextureRect = $TeamSG +onready var godot: TextureRect = $Godot + +func _ready() -> void: + yield(get_tree().create_timer(0.5), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + team_sg.visible = true + Fade.fade_in(Options.transition_speed_secs) + yield(Fade, "fade_finished") + yield(get_tree().create_timer(1.0), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + yield(get_tree().create_timer(0.5), "timeout") + godot.visible = true + Fade.fade_in(Options.transition_speed_secs) + yield(Fade, "fade_finished") + yield(get_tree().create_timer(1.0), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + _next_screen() + +func _input(event: InputEvent) -> void: + if Input.is_action_just_pressed("ui_accept"): + skipping = true + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + _next_screen() + free() + +func _next_screen() -> void: + SceneManager.current_scene = next_screen.instance() diff --git a/menus/splash_screen.tscn b/menus/splash_screen.tscn new file mode 100644 index 0000000..1f632ec --- /dev/null +++ b/menus/splash_screen.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://graphics/hud/team_sg_splash.png" type="Texture" id=1] +[ext_resource path="res://menus/splash_screen.gd" type="Script" id=2] +[ext_resource path="res://graphics/hud/godot_splash.png" type="Texture" id=3] +[ext_resource path="res://menus/title_screen.tscn" type="PackedScene" id=4] + +[node name="SplashScreen" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 2 ) +next_screen = ExtResource( 4 ) + +[node name="ColorRect" type="ColorRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 1 ) + +[node name="TeamSG" type="TextureRect" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 1 ) + +[node name="Godot" type="TextureRect" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 3 ) diff --git a/menus/submit_score.gd b/menus/submit_score.gd new file mode 100644 index 0000000..5a9464d --- /dev/null +++ b/menus/submit_score.gd @@ -0,0 +1,98 @@ +extends Node + + +const NewgroundsLogin := preload("res://menus/newgrounds_login.tscn") +const LevelSelect := preload("res://menus/level_select_scholar.tscn") + + +var _scoreboard_id: int = -1 +var _scoreboard_tag: String = "" +var _score_value: int = -1 + + +onready var tab_container: TabContainer = $"%TabContainer" + + +func _ready() -> void: + yield(get_tree(), "idle_frame") + $"%YesScore".grab_focus() + Fade.fade_in(Options.transition_speed_secs) + + +func _on_YesScore_pressed() -> void: + _scoreboard_id = LevelData.levels[Game.current_level].scores_id + _score_value = Game.final_score + _set_tag(false) + tab_container.current_tab = 2 + if yield(_submit(), "completed"): + tab_container.current_tab = 3 + else: + tab_container.current_tab = 4 + yield(get_tree().create_timer(1.0), "timeout") + tab_container.current_tab = 1 + $"%YesTime".grab_focus() + + +func _on_NoScore_pressed() -> void: + tab_container.current_tab = 1 + $"%YesTime".grab_focus() + + +func _on_YesTime_pressed() -> void: + _scoreboard_id = LevelData.levels[Game.current_level].times_id + _score_value = int(Game.time * 1000.0) + _set_tag(true) + tab_container.current_tab = 2 + if yield(_submit(), "completed"): + tab_container.current_tab = 3 + else: + tab_container.current_tab = 4 + yield(get_tree().create_timer(1.0), "timeout") + _next_screen() + + +func _on_NoTime_pressed() -> void: + _next_screen() + + +func _next_screen() -> void: + Game.clear_collectibles() + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(LevelSelect.instance()) + + +func _set_tag(include_completion: bool = false) -> void: + match Game.difficulty: + Game.Difficulty.SWEET: + _scoreboard_tag = "sweet" + Game.Difficulty.SALTY: + _scoreboard_tag = "salty" + Game.Difficulty.SPICY: + _scoreboard_tag = "spicy" + Game.Difficulty.PUNGENT: + _scoreboard_tag = "pungent" + if include_completion: + if Game.keys >= 50 and Game.shards >= 5: + _scoreboard_tag += "-100%" + else: + _scoreboard_tag += "-any%" + + +# returns true if the score was successfully submitted +func _submit() -> bool: + if Ngio.session.user == null: + var login_screen = NewgroundsLogin.instance() + add_child(login_screen) + yield(login_screen, "tree_exited") + if Ngio.session.user == null: + return false + var response = yield(Ngio.request_execute("ScoreBoard.postScore", { + id = _scoreboard_id, + tag = _scoreboard_tag, + value = _score_value, + }), "completed") + if Ngio.has_result(response): + if response.result.data.success: + return true + return false diff --git a/menus/submit_score.tscn b/menus/submit_score.tscn new file mode 100644 index 0000000..7c8ca2e --- /dev/null +++ b/menus/submit_score.tscn @@ -0,0 +1,229 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://menus/submit_score.gd" type="Script" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=4] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 8, 4 ) +shader_param/ammount = Vector2( 12, 24 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[node name="SubmitScore" type="Node"] +script = ExtResource( 1 ) + +[node name="ColorRect" type="ColorRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 1 ) + +[node name="CenterContainer" type="CenterContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) + +[node name="TabContainer" type="TabContainer" parent="CenterContainer"] +unique_name_in_owner = true +margin_left = 82.0 +margin_top = 78.0 +margin_right = 173.0 +margin_bottom = 114.0 +tabs_visible = false + +[node name="SubmitScore" type="VBoxContainer" parent="CenterContainer/TabContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="CenterContainer/TabContainer/SubmitScore"] +margin_right = 91.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 5 ) +text = "submit score?" + +[node name="YesNoPrompt" type="PanelContainer" parent="CenterContainer/TabContainer/SubmitScore"] +margin_left = 1.0 +margin_top = 14.0 +margin_right = 90.0 +margin_bottom = 36.0 +size_flags_horizontal = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 86.0 +margin_bottom = 19.0 +rect_min_size = Vector2( 0, 16 ) +rect_pivot_offset = Vector2( -174, -69 ) +custom_constants/separation = 0 +alignment = 1 + +[node name="YesScore" type="TextureButton" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +unique_name_in_owner = true +material = SubResource( 1 ) +margin_top = 4.0 +margin_right = 12.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 12, 8 ) +focus_neighbour_right = NodePath("../NoScore") +size_flags_vertical = 4 +texture_focused = ExtResource( 4 ) +expand = true +stretch_mode = 3 + +[node name="YesLabel" type="Label" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 12.0 +margin_top = 3.0 +margin_right = 33.0 +margin_bottom = 13.0 +text = "Yes" + +[node name="Spacer" type="Control" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 33.0 +margin_right = 45.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="NoScore" type="TextureButton" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +material = SubResource( 1 ) +margin_left = 45.0 +margin_top = 4.0 +margin_right = 57.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 12, 8 ) +focus_neighbour_left = NodePath("../YesScore") +size_flags_vertical = 4 +texture_focused = ExtResource( 4 ) +expand = true +stretch_mode = 3 + +[node name="NoLabel" type="Label" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 57.0 +margin_top = 3.0 +margin_right = 71.0 +margin_bottom = 13.0 +text = "No" + +[node name="Spacer2" type="Control" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 71.0 +margin_right = 83.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="SubmitTime" type="VBoxContainer" parent="CenterContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="CenterContainer/TabContainer/SubmitTime"] +margin_right = 89.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 5 ) +text = "submit time?" + +[node name="YesNoPrompt" type="PanelContainer" parent="CenterContainer/TabContainer/SubmitTime"] +margin_top = 14.0 +margin_right = 89.0 +margin_bottom = 36.0 +size_flags_horizontal = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 86.0 +margin_bottom = 19.0 +rect_min_size = Vector2( 0, 16 ) +rect_pivot_offset = Vector2( -174, -69 ) +custom_constants/separation = 0 +alignment = 1 + +[node name="YesTime" type="TextureButton" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer"] +unique_name_in_owner = true +material = SubResource( 1 ) +margin_top = 4.0 +margin_right = 12.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 12, 8 ) +focus_neighbour_right = NodePath("../NoTime") +size_flags_vertical = 4 +texture_focused = ExtResource( 4 ) +expand = true +stretch_mode = 3 + +[node name="YesLabel" type="Label" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer"] +margin_left = 12.0 +margin_top = 3.0 +margin_right = 33.0 +margin_bottom = 13.0 +text = "Yes" + +[node name="Spacer" type="Control" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer"] +margin_left = 33.0 +margin_right = 45.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="NoTime" type="TextureButton" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer"] +material = SubResource( 1 ) +margin_left = 45.0 +margin_top = 4.0 +margin_right = 57.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 12, 8 ) +focus_neighbour_left = NodePath("../YesTime") +size_flags_vertical = 4 +texture_focused = ExtResource( 4 ) +expand = true +stretch_mode = 3 + +[node name="NoLabel" type="Label" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer"] +margin_left = 57.0 +margin_top = 3.0 +margin_right = 71.0 +margin_bottom = 13.0 +text = "No" + +[node name="Spacer2" type="Control" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer"] +margin_left = 71.0 +margin_right = 83.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="LoadingGraphic" type="Label" parent="CenterContainer/TabContainer"] +visible = false +material = SubResource( 2 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_min_size = Vector2( 0, 64 ) +text = "§" +align = 1 +valign = 1 + +[node name="Success" type="Label" parent="CenterContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +custom_fonts/font = ExtResource( 5 ) +text = "success!" + +[node name="Failure" type="Label" parent="CenterContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +custom_fonts/font = ExtResource( 5 ) +text = "failture :(" + +[connection signal="pressed" from="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer/YesScore" to="." method="_on_YesScore_pressed"] +[connection signal="pressed" from="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer/NoScore" to="." method="_on_NoScore_pressed"] +[connection signal="pressed" from="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer/YesTime" to="." method="_on_YesTime_pressed"] +[connection signal="pressed" from="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer/NoTime" to="." method="_on_NoTime_pressed"] diff --git a/menus/title_screen.gd b/menus/title_screen.gd new file mode 100644 index 0000000..b78588e --- /dev/null +++ b/menus/title_screen.gd @@ -0,0 +1,42 @@ +extends Node + +const robo_voice = preload("res://audio/sounds/revolution2083.ogg") +const penny_voice = preload("res://audio/sounds/revolution2083_penny.ogg") +const haze_voice = preload("res://audio/sounds/revolution2083_haze.ogg") +const ivy_voice = preload("res://audio/sounds/revolution2083_ivy.ogg") +const dog_voice = preload("res://audio/sounds/revolution2083_dog.ogg") +onready var audio = $AudioStreamPlayer +export var next_menu: PackedScene +var has_started = false +onready var revolution_2083_robot = preload("res://audio/sounds/revolution2083.ogg") +onready var revolution_2083_penny = preload("res://audio/sounds/revolution2083_penny.ogg") +onready var revolution_2083_haze = preload("res://audio/sounds/revolution2083_haze.ogg") +onready var revolution_2083_ivy = preload("res://audio/sounds/revolution2083_ivy.ogg") + +func _input(event): + if Input.is_action_just_pressed("start") && !has_started: + Audio.play_sound(Audio.a_star,Audio.ac_collectible) + var r = 40 + if r > 0 && r < 31: audio.stream = penny_voice + if r >= 30 && r < 61: audio.stream = haze_voice + if r >= 60 && r < 91: audio.stream = ivy_voice + if r >= 90: audio.stream = dog_voice + if r == 0: audio.stream = robo_voice + audio.play() + $AnimationPlayer.play("activate") + has_started = true + +func _ready(): + Fade.fade_in(Options.transition_speed_secs) + var time = OS.get_time() + if time.hour >= 18 or time.hour < 6: + $Night.visible = true + else: + $Day.visible = true + Audio.play_music(load("res://audio/music/vitreous_squares.ogg")) + + +func _on_AudioStreamPlayer_finished(): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = next_menu.instance() diff --git a/menus/title_screen.tscn b/menus/title_screen.tscn new file mode 100644 index 0000000..57d919d --- /dev/null +++ b/menus/title_screen.tscn @@ -0,0 +1,194 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] +[ext_resource path="res://menus/title_screen.gd" type="Script" id=5] +[ext_resource path="res://menus/main_menu.tscn" type="PackedScene" id=6] +[ext_resource path="res://graphics/hud/logo.png" type="Texture" id=7] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=8] +[ext_resource path="res://graphics/backgrounds/sun_and_clouds.png" type="Texture" id=9] +[ext_resource path="res://graphics/particles/smoke.png" type="Texture" id=10] +[ext_resource path="res://shaders/color_noise.gdshader" type="Shader" id=11] +[ext_resource path="res://graphics/backgrounds/moon.png" type="Texture" id=12] +[ext_resource path="res://graphics/hud/title_credits.png" type="Texture" id=13] + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 8 ) +shader_param/color_1 = Color( 0.121569, 0.454902, 1, 1 ) +shader_param/color_2 = Color( 0.113725, 0.321569, 0.466667, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 6, 3 ) +shader_param/cycle_alternation = Vector2( 6, 3 ) +shader_param/uv_transform = Transform2D( 0, 1, 1, 0, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 8 ) +shader_param/color_1 = Color( 0.662745, 0.647059, 0.819608, 1 ) +shader_param/color_2 = Color( 0.12549, 0.133333, 0.227451, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 6, 3 ) +shader_param/cycle_alternation = Vector2( 6, 3 ) +shader_param/uv_transform = Transform2D( 0, 1, 1, 0, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 11 ) +shader_param/animate_noise = true +shader_param/noise_intensity = 1.0 +shader_param/fps = 60.0 + +[sub_resource type="Curve" id=4] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.130639, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.348684, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Animation" id=9] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Logo:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} + +[sub_resource type="Animation" id=10] +resource_name = "activate" +tracks/0/type = "value" +tracks/0/path = NodePath("Label:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Logo:scale") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.5, 0.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1.25, 1.25 ), Vector2( 1, 1 ) ] +} + +[sub_resource type="Animation" id=6] +resource_name = "blink" +length = 0.6 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Label:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[node name="TitleScreen" type="Node"] +script = ExtResource( 5 ) +next_menu = ExtResource( 6 ) + +[node name="Day" type="Node2D" parent="."] + +[node name="ColorRect" type="ColorRect" parent="Day"] +material = SubResource( 7 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="Sprite" type="Sprite" parent="Day"] +position = Vector2( 128, 96 ) +texture = ExtResource( 9 ) + +[node name="Night" type="Node2D" parent="."] +visible = false + +[node name="ColorRect2" type="ColorRect" parent="Night"] +material = SubResource( 3 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="ColorRect" type="ColorRect" parent="Night"] +material = SubResource( 5 ) +margin_right = 256.0 +margin_bottom = 192.0 +color = Color( 1, 1, 1, 0.392157 ) + +[node name="Sprite" type="Sprite" parent="Night"] +position = Vector2( 296, 96 ) +texture = ExtResource( 12 ) + +[node name="SmokeParticles" type="CPUParticles2D" parent="."] +position = Vector2( 40, 192 ) +amount = 512 +lifetime = 10.0 +preprocess = 10.0 +speed_scale = 2.0 +texture = ExtResource( 10 ) +direction = Vector2( 0, -1 ) +gravity = Vector2( 0, -5 ) +initial_velocity = 15.0 +initial_velocity_random = 1.0 +angular_velocity = 180.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 3.0 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 4 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="Logo" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +texture = ExtResource( 7 ) + +[node name="Label" type="Label" parent="."] +material = ExtResource( 4 ) +margin_top = 136.0 +margin_right = 256.0 +margin_bottom = 159.0 +theme = ExtResource( 3 ) +text = "Press start!" +align = 1 + +[node name="TitleCredits" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +texture = ExtResource( 13 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "blink" +anims/RESET = SubResource( 9 ) +anims/activate = SubResource( 10 ) +anims/blink = SubResource( 6 ) + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +volume_db = -7.866 + +[connection signal="finished" from="AudioStreamPlayer" to="." method="_on_AudioStreamPlayer_finished"] diff --git a/objects/Camera2D.tscn b/objects/Camera2D.tscn index 593286a..560267f 100644 --- a/objects/Camera2D.tscn +++ b/objects/Camera2D.tscn @@ -1,9 +1,19 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://objects/camera.gd" type="Script" id=1] +[ext_resource path="res://objects/hud/off_level_indicator.tscn" type="PackedScene" id=2] +[ext_resource path="res://objects/hud/msx_off_level_indicator.tscn" type="PackedScene" id=3] [node name="Camera2D" type="Camera2D"] offset = Vector2( 128, 96 ) current = true smoothing_speed = 8.0 script = ExtResource( 1 ) + +[node name="OffLevelIndicator" parent="." instance=ExtResource( 2 )] +visible = false +position = Vector2( 0, 12 ) + +[node name="MsxOffLevelIndicator" parent="." instance=ExtResource( 3 )] +visible = false +position = Vector2( 16, 32 ) diff --git a/objects/camera.gd b/objects/camera.gd index 6d72e06..73704bf 100644 --- a/objects/camera.gd +++ b/objects/camera.gd @@ -1,25 +1,61 @@ extends Camera2D -onready var player = get_parent().get_node("Player") -onready var last_sector = Game.get_sector(player.position) +onready var player = get_tree().get_nodes_in_group("player").front() +onready var last_sector = Game.get_sector(player.global_position + Vector2(0.0, -5.0)) +onready var off_level_indicator = $OffLevelIndicator +onready var msx_off_level_indicator = $MsxOffLevelIndicator #Scroll direction export var scroll_h = true export var scroll_v = false export var respawn_h = true +var msx = null +var msx_exists = false func _ready(): set_as_toplevel(true) Game.current_sector = last_sector + yield(get_tree(), "idle_frame") + if get_tree().get_nodes_in_group("msx").size() > 0: + msx = get_tree().get_nodes_in_group("msx").pop_front() + msx_exists = true func _process(delta): - var current_sector = Game.get_sector(player.position) - if scroll_h && current_sector.x != last_sector.x: - position.x = current_sector.x * Game.resolution.x - if respawn_h: - var offset = Vector2(8.0 * sign(current_sector.x - last_sector.x), 0.0) - Game.respawn_point = player.global_position - last_sector.x = current_sector.x - if scroll_v && current_sector.y != last_sector.y: - position.y = current_sector.y * Game.resolution.y - last_sector.y = current_sector.y - Game.current_sector = last_sector + # use pop_front() instead of [0] so that will not crash without player + if not is_instance_valid(player): + player = get_tree().get_nodes_in_group("player").pop_front() + else: + var current_sector = Game.get_sector(player.global_position + Vector2(0.0, -5.0)) + if scroll_h && current_sector.x != last_sector.x: + position.x = current_sector.x * Game.RESOLUTION.x + if respawn_h: + # TODO: decide whether to use offset with horizontal respawn +# var offset = Vector2(8.0 * sign(current_sector.x - last_sector.x), 0.0) + Game.respawn_point = player.global_position + last_sector.x = current_sector.x + if scroll_v && current_sector.y != last_sector.y: + position.y = current_sector.y * Game.RESOLUTION.y + last_sector.y = current_sector.y + Game.current_sector = last_sector + #Off level indicator + if player.global_position.y - global_position.y <= 16.0: + off_level_indicator.visible = true + off_level_indicator.global_position.x = player.global_position.x + else: + off_level_indicator.visible = false + #Ms.X off level indicator + if msx_exists: + if is_instance_valid(msx) and msx.get_parent().is_free: + msx_off_level_indicator.visible = true + var msx_sector = Game.get_sector(msx.global_position) + if msx_sector == current_sector: + msx_off_level_indicator.anims.play("onscreen") + if msx_sector < current_sector: + msx_off_level_indicator.position.y = msx.global_position.y + msx_off_level_indicator.position.x = 16 + msx_off_level_indicator.anims.play("left") + if msx_sector > current_sector: + msx_off_level_indicator.position.y = msx.global_position.y + msx_off_level_indicator.position.x = 240 + msx_off_level_indicator.anims.play("right") + else: + msx_off_level_indicator.visible = false diff --git a/objects/collectibles/arrow.gd b/objects/collectibles/arrow.gd index 4a94a12..edca381 100644 --- a/objects/collectibles/arrow.gd +++ b/objects/collectibles/arrow.gd @@ -1,11 +1,18 @@ extends Node2D + export var value = 1 -func _on_Area2D_area_entered(area): + +func _ready() -> void: + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + $Sprite.material.set_shader_param("palette", palette) + + +func _on_Area2D_body_entered(body: Node) -> void: #Collect - if area.is_in_group("player"): + if body.is_in_group("player"): Game.arrows += value Game.score += 25 - Game.play_sound(Game.a_arrow,Game.ac_collectible) + Audio.play_sound(Audio.a_arrow,Audio.ac_collectible) queue_free() diff --git a/objects/collectibles/arrow.tscn b/objects/collectibles/arrow.tscn index 86eb655..d55c601 100644 --- a/objects/collectibles/arrow.tscn +++ b/objects/collectibles/arrow.tscn @@ -1,13 +1,15 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=7 format=2] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] [ext_resource path="res://objects/collectibles/arrow.gd" type="Script" id=2] [ext_resource path="res://graphics/player/arrow.png" type="Texture" id=3] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=4] [sub_resource type="ShaderMaterial" id=7] shader = ExtResource( 1 ) shader_param/border_color = Color( 0, 0, 0, 1 ) -shader_param/border_corners = true +shader_param/border_corners = false +shader_param/palette = ExtResource( 4 ) [sub_resource type="RectangleShape2D" id=6] extents = Vector2( 4, 4 ) @@ -23,9 +25,11 @@ texture = ExtResource( 3 ) [node name="Area2D" type="Area2D" parent="."] visible = false +collision_layer = 0 +collision_mask = 128 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] position = Vector2( 4, 4 ) shape = SubResource( 6 ) -[connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] +[connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] diff --git a/objects/collectibles/gold.gd b/objects/collectibles/gold.gd deleted file mode 100644 index e1a1c8b..0000000 --- a/objects/collectibles/gold.gd +++ /dev/null @@ -1,15 +0,0 @@ -extends Node2D - -export var value = 1 - -func _ready(): - #Sync all coinframes - $AnimatedSprite.play() - -func _on_Area2D_area_entered(area): - #Collect - if area.is_in_group("player"): - Game.golds += value - Game.score += 5 - Game.play_sound(Game.a_gold,Game.ac_collectible) - queue_free() diff --git a/objects/collectibles/gold.tscn b/objects/collectibles/gold.tscn deleted file mode 100644 index eafd580..0000000 --- a/objects/collectibles/gold.tscn +++ /dev/null @@ -1,54 +0,0 @@ -[gd_scene load_steps=11 format=2] - -[ext_resource path="res://objects/collectibles/gold.gd" type="Script" id=1] -[ext_resource path="res://scripts/recolor_border.shader" type="Shader" id=2] -[ext_resource path="res://graphics/collectibles/coin.png" type="Texture" id=3] -[ext_resource path="res://graphics/collectibles/pal_penny.png" type="Texture" id=4] - -[sub_resource type="ShaderMaterial" id=1] -shader = ExtResource( 2 ) -shader_param/border_color = Color( 0, 0, 0, 1 ) -shader_param/border_corners = false -shader_param/palette = ExtResource( 4 ) - -[sub_resource type="AtlasTexture" id=2] -atlas = ExtResource( 3 ) -region = Rect2( 0, 0, 8, 8 ) - -[sub_resource type="AtlasTexture" id=3] -atlas = ExtResource( 3 ) -region = Rect2( 8, 0, 8, 8 ) - -[sub_resource type="AtlasTexture" id=4] -atlas = ExtResource( 3 ) -region = Rect2( 16, 0, 8, 8 ) - -[sub_resource type="SpriteFrames" id=5] -animations = [ { -"frames": [ SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 3 ) ], -"loop": true, -"name": "default", -"speed": 7.0 -} ] - -[sub_resource type="RectangleShape2D" id=6] -extents = Vector2( 4, 4 ) - -[node name="Gold" type="Node2D" groups=["gold"]] -script = ExtResource( 1 ) - -[node name="AnimatedSprite" type="AnimatedSprite" parent="."] -material = SubResource( 1 ) -frames = SubResource( 5 ) -frame = 2 -playing = true -centered = false - -[node name="Area2D" type="Area2D" parent="."] -visible = false - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] -position = Vector2( 4, 4 ) -shape = SubResource( 6 ) - -[connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] diff --git a/objects/collectibles/key.gd b/objects/collectibles/key.gd new file mode 100644 index 0000000..e4ad5e1 --- /dev/null +++ b/objects/collectibles/key.gd @@ -0,0 +1,32 @@ +extends Node2D + +const SEMITONE := 1.05946 +const TIMEOUT := 1000 +const MAX_PITCH := 2.0 + +const STATIC = { + pitch = -1.0, + timeout = -1, +} + + +func _ready(): + #Sync all coinframes + $AnimatedSprite.play() + + +func _on_Area2D_body_entered(body: Node) -> void: + #Collect + if body.is_in_group("player"): + Game.keys += 1 + Game.score += 5 + # pitch increase + if Time.get_ticks_msec() < STATIC.timeout: + STATIC.pitch = min(STATIC.pitch + 1.0, MAX_PITCH) + else: + STATIC.pitch = -1.0 + STATIC.timeout = Time.get_ticks_msec() + TIMEOUT + Audio.play_sound(Audio.a_key,Audio.ac_collectible, pow(SEMITONE, STATIC.pitch)) + if Game._get_shards() >= 5 && Game.keys == 50: + Audio.great_job() + queue_free() diff --git a/objects/collectibles/key.tscn b/objects/collectibles/key.tscn new file mode 100644 index 0000000..41cc04b --- /dev/null +++ b/objects/collectibles/key.tscn @@ -0,0 +1,109 @@ +[gd_scene load_steps=20 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/collectibles/key.png" type="Texture" id=2] +[ext_resource path="res://graphics/collectibles/30385.png" type="Texture" id=3] +[ext_resource path="res://objects/collectibles/key.gd" type="Script" id=4] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=5] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=6] + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=14] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 10, 10 ) + +[sub_resource type="AtlasTexture" id=15] +atlas = ExtResource( 3 ) +region = Rect2( 10, 0, 10, 10 ) + +[sub_resource type="AtlasTexture" id=16] +atlas = ExtResource( 3 ) +region = Rect2( 20, 0, 10, 10 ) + +[sub_resource type="AtlasTexture" id=8] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 8, 9 ) + +[sub_resource type="AtlasTexture" id=9] +atlas = ExtResource( 2 ) +region = Rect2( 8, 0, 8, 9 ) + +[sub_resource type="AtlasTexture" id=10] +atlas = ExtResource( 2 ) +region = Rect2( 16, 0, 8, 9 ) + +[sub_resource type="AtlasTexture" id=11] +atlas = ExtResource( 2 ) +region = Rect2( 24, 0, 8, 9 ) + +[sub_resource type="AtlasTexture" id=12] +atlas = ExtResource( 2 ) +region = Rect2( 32, 0, 8, 9 ) + +[sub_resource type="AtlasTexture" id=13] +atlas = ExtResource( 2 ) +region = Rect2( 40, 0, 8, 9 ) + +[sub_resource type="SpriteFrames" id=5] +animations = [ { +"frames": [ SubResource( 14 ), SubResource( 15 ), SubResource( 16 ) ], +"loop": true, +"name": "30385", +"speed": 5.0 +}, { +"frames": [ SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ), SubResource( 11 ), SubResource( 13 ), SubResource( 9 ) ], +"loop": true, +"name": "key", +"speed": 7.0 +} ] + +[sub_resource type="RectangleShape2D" id=6] +extents = Vector2( 4, 4 ) + +[sub_resource type="Curve" id=17] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[node name="Key" type="Node2D" groups=["gold"]] +pause_mode = 2 +script = ExtResource( 4 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +material = SubResource( 7 ) +position = Vector2( 0, -1 ) +frames = SubResource( 5 ) +animation = "key" +playing = true +centered = false + +[node name="Area2D" type="Area2D" parent="."] +visible = false +collision_layer = 0 +collision_mask = 128 +monitorable = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +position = Vector2( 4, 4 ) +shape = SubResource( 6 ) + +[node name="Sparkles" type="CPUParticles2D" parent="."] +light_mask = 0 +position = Vector2( 4.5, 4 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 5 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 17 ) +color = Color( 0.996078, 1, 0.760784, 1 ) +script = ExtResource( 6 ) + +[connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] diff --git a/objects/collectibles/shard.gd b/objects/collectibles/shard.gd index 542b439..cdf963d 100644 --- a/objects/collectibles/shard.gd +++ b/objects/collectibles/shard.gd @@ -1,18 +1,22 @@ extends Node2D -export var value = 1 +signal collected(shard_number) + export var number = 0 #Used for saving which specific shards collected func _ready(): + var hud = get_tree().get_nodes_in_group("hud").pop_back() + if hud != null: + connect("collected",hud,"shard_popup") $AnimationPlayer.play("glow") -func _on_Area2D_area_entered(area): +func _on_Area2D_body_entered(body): #Collect - if area.is_in_group("player"): - Game.ac_music.stream_paused = true - Game.play_sound(Game.a_shard,Game.ac_collectible) - Game.ac_collectible.connect("finished", Game.ac_music, "set_stream_paused", [false]) + if body.is_in_group("player"): + emit_signal("collected",number) + Audio.play_shard_sound() Game.score += 500 - Game.shards += value Game.shards_collected[number] = true + if Game._get_shards() >= 5 && Game.keys == 50: + Audio.great_job() queue_free() diff --git a/objects/collectibles/shard.tscn b/objects/collectibles/shard.tscn index 4324ea3..6550926 100644 --- a/objects/collectibles/shard.tscn +++ b/objects/collectibles/shard.tscn @@ -1,8 +1,10 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=11 format=2] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] [ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=2] [ext_resource path="res://objects/collectibles/shard.gd" type="Script" id=3] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=4] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=5] [sub_resource type="ShaderMaterial" id=7] shader = ExtResource( 1 ) @@ -10,7 +12,22 @@ shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = false [sub_resource type="RectangleShape2D" id=6] -extents = Vector2( 5.5, 5.5 ) +extents = Vector2( 3.5, 3.5 ) + +[sub_resource type="Animation" id=18] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} [sub_resource type="Animation" id=8] resource_name = "glow" @@ -26,25 +43,50 @@ tracks/0/keys = { "times": PoolRealArray( 0, 0.4, 0.8 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 0, -"values": [ Color( 0.329412, 0.360784, 0.847059, 1 ), Color( 1, 1, 1, 1 ), Color( 0.329412, 0.360784, 0.847059, 1 ) ] +"values": [ Color( 0.766, 0.73, 1, 1 ), Color( 1.1, 1.1, 1.1, 1 ), Color( 0.766, 0.73, 1, 1 ) ] } +[sub_resource type="Curve" id=17] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + [node name="Shard" type="Node2D"] +pause_mode = 2 script = ExtResource( 3 ) [node name="Sprite" type="Sprite" parent="."] -modulate = Color( 0.861621, 0.868095, 0.96844, 1 ) +light_mask = 0 material = SubResource( 7 ) position = Vector2( 5, 3 ) texture = ExtResource( 2 ) [node name="Area2D" type="Area2D" parent="."] +collision_layer = 0 +collision_mask = 128 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +visible = false position = Vector2( 4.5, 2.5 ) shape = SubResource( 6 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 18 ) anims/glow = SubResource( 8 ) -[connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] +[node name="Sparkles" type="CPUParticles2D" parent="."] +light_mask = 0 +position = Vector2( 4.5, 2.5 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 4 ) +emission_shape = 2 +emission_rect_extents = Vector2( 5, 5 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 17 ) +color = Color( 0.72549, 0.956863, 1, 1 ) +script = ExtResource( 5 ) + +[connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] diff --git a/objects/collectibles/star.gd b/objects/collectibles/star.gd index c562c13..322d6fe 100644 --- a/objects/collectibles/star.gd +++ b/objects/collectibles/star.gd @@ -1,35 +1,44 @@ +tool extends Node2D -export(int, "Red", "Yellow","Green","Blue","Magenta") var color +enum StarColor {RED, YELLOW, GREEN, BLUE, MAGENTA} + +const COLORS = [ + preload("res://graphics/collectibles/pal_star_red.png"), + preload("res://graphics/collectibles/pal_star_yellow.png"), + preload("res://graphics/collectibles/pal_star_green.png"), + preload("res://graphics/collectibles/pal_star_blue.png"), + preload("res://graphics/collectibles/pal_star_magenta.png") +] + +export(StarColor) var color setget _set_color export var value = 1 +export (Array, Color) var particle_colors := [] onready var sprite = $AnimatedSprite func _ready(): #Sync all coinframes sprite.play() #Change color - match color: - 0: - sprite.material.set_shader_param("palette",load("res://graphics/collectibles/pal_star_red.png")) - 1: - sprite.material.set_shader_param("palette",load("res://graphics/collectibles/pal_star_yellow.png")) - 2: - sprite.material.set_shader_param("palette",load("res://graphics/collectibles/pal_star_green.png")) - 3: - sprite.material.set_shader_param("palette",load("res://graphics/collectibles/pal_star_blue.png")) - 4: - sprite.material.set_shader_param("palette",load("res://graphics/collectibles/pal_star_magenta.png")) - -func _on_Area2D_area_entered(area): + _set_color(color) + +func _set_color(new_color): + color = new_color + if is_inside_tree(): + sprite.material.set_shader_param("palette", COLORS[color]) + $Sparkles.color = particle_colors[color] + +func _on_Area2D_body_entered(body): #Collect - if area.is_in_group("player"): - Game.play_sound(Game.a_star,Game.ac_collectible) + if body.is_in_group("player"): + Audio.play_sound(Audio.a_star,Audio.ac_collectible) Game.score += 100 - Game.stars[color] = true + Game.stars_collected[color] = true #5 Star reward - if Game.stars[0] && Game.stars[1] && Game.stars[2] && Game.stars[3] && Game.stars[4]: - Game.play_sound(Game.a_shard,Game.ac_collectible) - Game.shards += 1 + if Game.stars == 5: + Audio.play_shard_sound() Game.shards_collected[4] = true + if Game._get_shards() >= 5 && Game.keys == 50: + Audio.great_job() Game.score += 500 queue_free() diff --git a/objects/collectibles/star.tscn b/objects/collectibles/star.tscn index 50925dc..625ed61 100644 --- a/objects/collectibles/star.tscn +++ b/objects/collectibles/star.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=14 format=2] +[gd_scene load_steps=17 format=2] [ext_resource path="res://graphics/collectibles/pal_star_red.png" type="Texture" id=1] -[ext_resource path="res://scripts/recolor_border.shader" type="Shader" id=2] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=2] [ext_resource path="res://objects/collectibles/star.gd" type="Script" id=3] [ext_resource path="res://graphics/collectibles/star.png" type="Texture" id=4] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=5] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=6] [sub_resource type="ShaderMaterial" id=10] resource_local_to_scene = true @@ -47,22 +49,47 @@ animations = [ { [sub_resource type="RectangleShape2D" id=9] extents = Vector2( 4, 4 ) +[sub_resource type="Curve" id=17] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + [node name="Star" type="Node2D"] +pause_mode = 2 script = ExtResource( 3 ) +particle_colors = [ Color( 1, 0.741176, 0.709804, 1 ), Color( 1, 0.968627, 0.709804, 1 ), Color( 0.709804, 1, 0.74902, 1 ), Color( 0.709804, 0.752941, 1, 1 ), Color( 1, 0.709804, 0.984314, 1 ) ] [node name="AnimatedSprite" type="AnimatedSprite" parent="."] +light_mask = 0 material = SubResource( 10 ) position = Vector2( -1, -3 ) frames = SubResource( 8 ) -frame = 2 +frame = 1 playing = true centered = false [node name="Area2D" type="Area2D" parent="."] +collision_layer = 0 +collision_mask = 128 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] visible = false position = Vector2( 4, 4 ) shape = SubResource( 9 ) -[connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] +[node name="Sparkles" type="CPUParticles2D" parent="."] +light_mask = 0 +position = Vector2( 4.5, 4 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 5 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 17 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 6 ) + +[connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] diff --git a/objects/debug.tscn b/objects/debug.tscn deleted file mode 100644 index 485a4b2..0000000 --- a/objects/debug.tscn +++ /dev/null @@ -1,36 +0,0 @@ -[gd_scene load_steps=4 format=2] - -[ext_resource path="res://scripts/debug.gd" type="Script" id=1] - -[sub_resource type="InputEventAction" id=4] -action = "toggle_console" - -[sub_resource type="ShortCut" id=3] -shortcut = SubResource( 4 ) - -[node name="Debug" type="CanvasLayer"] -layer = 128 -script = ExtResource( 1 ) - -[node name="Console" type="Label" parent="."] -anchor_right = 1.0 -size_flags_vertical = 2 - -[node name="Panel" type="Panel" parent="Console"] -show_behind_parent = true -anchor_right = 1.0 -anchor_bottom = 1.0 - -[node name="VisibleToggle" type="CheckBox" parent="."] -visible = false -anchor_left = 1.0 -anchor_right = 1.0 -margin_left = -22.0 -margin_top = 173.0 -margin_right = 57.0 -margin_bottom = 197.0 -pressed = true -shortcut = SubResource( 3 ) -text = "Console" - -[connection signal="toggled" from="VisibleToggle" to="." method="_on_visible_toggled"] diff --git a/objects/delayed_instance.gd b/objects/delayed_instance.gd new file mode 100644 index 0000000..74570a9 --- /dev/null +++ b/objects/delayed_instance.gd @@ -0,0 +1,23 @@ +extends Node + +export var delay = 0.0 +export var autostart = false + +var children = [] + +func _enter_tree(): + for child in get_children(): + children.append(child) + remove_child(child) + +func _ready(): + if autostart: + start() + +func start(): + get_tree().create_timer(delay, false).connect("timeout", self, "_instance_children") + +func _instance_children(): + var parent = get_parent() + for child in children: + parent.add_child(child) diff --git a/objects/delayed_instance.tscn b/objects/delayed_instance.tscn new file mode 100644 index 0000000..25be013 --- /dev/null +++ b/objects/delayed_instance.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://objects/delayed_instance.gd" type="Script" id=1] + +[node name="DelayedInstance" type="Node"] +script = ExtResource( 1 ) diff --git a/objects/enemy/2083_bullet.gd b/objects/enemy/2083_bullet.gd new file mode 100644 index 0000000..c5ecdc0 --- /dev/null +++ b/objects/enemy/2083_bullet.gd @@ -0,0 +1,22 @@ +extends Area2D + +const SmallExplosion = preload("res://objects/enemy/boss/2600_small_explosion.tscn") + +export var direction: Vector2 = Vector2.LEFT +export var speed: float = 50.0 +export var damage: float = 0.0 +onready var sprite = $AnimatedSprite +var lifetime = 0 + +func _physics_process(delta: float) -> void: + position += direction * speed * delta + lifetime += 1 + if lifetime < 10: + var r = rand_range(0,5) + sprite.position.y += sin(Game.time * 20) + +func _exit_tree() -> void: + var explosion = SmallExplosion.instance() + explosion.quiet = true + explosion.position = position + get_parent().add_child(explosion) diff --git a/objects/enemy/2083_bullet.tscn b/objects/enemy/2083_bullet.tscn new file mode 100644 index 0000000..29c3750 --- /dev/null +++ b/objects/enemy/2083_bullet.tscn @@ -0,0 +1,41 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://graphics/enemy/stg_bullet.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/2083_bullet.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 3, 3 ) + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 6, 6 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 1 ) +region = Rect2( 6, 0, 6, 6 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 1 ) +region = Rect2( 12, 0, 6, 6 ) + +[sub_resource type="SpriteFrames" id=4] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ) ], +"loop": true, +"name": "default", +"speed": 15.0 +} ] + +[node name="2083Bullet" type="Area2D" groups=["hurt_famira"]] +collision_layer = 128 +collision_mask = 128 +monitoring = false +script = ExtResource( 2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 5 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +frames = SubResource( 4 ) +frame = 2 +playing = true diff --git a/objects/enemy/2600_bullet.gd b/objects/enemy/2600_bullet.gd new file mode 100644 index 0000000..f282180 --- /dev/null +++ b/objects/enemy/2600_bullet.gd @@ -0,0 +1,7 @@ +extends "res://objects/enemy/enemy.gd" + +export var direction: Vector2 = Vector2.LEFT +export var speed: float = 50 + +func _physics_process(delta): + position += direction * speed * delta diff --git a/objects/enemy/2600_bullet.tscn b/objects/enemy/2600_bullet.tscn new file mode 100644 index 0000000..de18a9c --- /dev/null +++ b/objects/enemy/2600_bullet.tscn @@ -0,0 +1,42 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://graphics/enemy/stg_bullet.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/2600_bullet.gd" type="Script" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 6, 6 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 1 ) +region = Rect2( 6, 0, 6, 6 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 1 ) +region = Rect2( 12, 0, 6, 6 ) + +[sub_resource type="SpriteFrames" id=4] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ) ], +"loop": true, +"name": "default", +"speed": 15.0 +} ] + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 3, 3 ) + +[node name="2600Bullet" type="Node2D"] +script = ExtResource( 2 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +frames = SubResource( 4 ) +frame = 2 +playing = true + +[node name="Hitbox" type="Area2D" parent="." groups=["arrow"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +shape = SubResource( 5 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/antlion.gd b/objects/enemy/antlion.gd new file mode 100644 index 0000000..29f51cd --- /dev/null +++ b/objects/enemy/antlion.gd @@ -0,0 +1,11 @@ +extends "res://objects/enemy/enemy.gd" + +onready var raycast = $Rotation/RayCast2D +onready var anims = $AnimationPlayer + +func _on_Sight_area_entered(area): + if area.is_in_group("player_hitbox"): + anims.play("lunge") + +func _on_AnimationPlayer_animation_finished(anim_name): + if anim_name == "lunge": anims.play("spin") diff --git a/objects/enemy/antlion.tscn b/objects/enemy/antlion.tscn new file mode 100644 index 0000000..ee7095d --- /dev/null +++ b/objects/enemy/antlion.tscn @@ -0,0 +1,163 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://graphics/enemy/antlion.png" type="Texture" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://objects/enemy/antlion.gd" type="Script" id=3] +[ext_resource path="res://graphics/enemy/antlion_body.png" type="Texture" id=4] + +[sub_resource type="Animation" id=7] +resource_name = "lunge" +length = 1.1 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Hitbox:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.3, 0.7, 1.1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, -72 ), Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Head:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1, 1.05, 1.1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Vector2( 0, 0 ), Vector2( 0, -9 ), Vector2( 0, -18 ), Vector2( 0, -27 ), Vector2( 0, -36 ), Vector2( 0, -45 ), Vector2( 0, -54 ), Vector2( 0, -63 ), Vector2( 0, -72 ), Vector2( 0, -63 ), Vector2( 0, -54 ), Vector2( 0, -45 ), Vector2( 0, -36 ), Vector2( 0, -27 ), Vector2( 0, -18 ), Vector2( 0, -9 ), Vector2( 0, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Head/Body:region_rect") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1, 1.05, 1.1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Rect2( 0, 0, 10, 0 ), Rect2( 0, 0, 10, 9 ), Rect2( 0, 0, 10, 18 ), Rect2( 0, 0, 10, 27 ), Rect2( 0, 0, 10, 36 ), Rect2( 0, 0, 10, 45 ), Rect2( 0, 0, 10, 54 ), Rect2( 0, 0, 10, 63 ), Rect2( 0, 0, 10, 72 ), Rect2( 0, 0, 10, 63 ), Rect2( 0, 0, 10, 54 ), Rect2( 0, 0, 10, 45 ), Rect2( 0, 0, 10, 36 ), Rect2( 0, 0, 10, 27 ), Rect2( 0, 0, 10, 18 ), Rect2( 0, 0, 10, 9 ), Rect2( 0, 0, 10, 0 ) ] +} + +[sub_resource type="Animation" id=5] +resource_name = "spin" +length = 0.8 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Head:region_rect") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Head:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0.0, -45.0, 0.0, -45.0, 0.0, -45.0, 0.0, -45.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Head:offset") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Vector2( 0, -4 ), Vector2( 3, -4 ), Vector2( 0, -4 ), Vector2( 3, -4 ), Vector2( 0, -4 ), Vector2( 3, -4 ), Vector2( 0, -4 ), Vector2( 3, -4 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Head/Body:region_rect") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Rect2( 0, 0, 10, 0 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0.0, 45.0, 90.0, 135.0, 180.0, 225.0, 270.0, 315.0 ] +} + +[sub_resource type="RectangleShape2D" id=6] +extents = Vector2( 4, 8 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 4, 32 ) + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[node name="Antlion" type="Node2D"] +script = ExtResource( 3 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "spin" +anims/lunge = SubResource( 7 ) +anims/spin = SubResource( 5 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 0, -4 ) +shape = SubResource( 6 ) + +[node name="Sight" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Sight"] +position = Vector2( 0, -36 ) +shape = SubResource( 8 ) + +[node name="Head" type="Sprite" parent="."] +material = SubResource( 1 ) +scale = Vector2( 1, 1 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -4 ) +region_enabled = true +region_rect = Rect2( 0, 0, 20, 20 ) + +[node name="Body" type="Sprite" parent="Head"] +visible = false +position = Vector2( -5, 4 ) +texture = ExtResource( 4 ) +centered = false +region_enabled = true +region_rect = Rect2( 0, 0, 10, 0 ) + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="area_entered" from="Sight" to="." method="_on_Sight_area_entered"] diff --git a/objects/enemy/artificial_soul.gd b/objects/enemy/artificial_soul.gd new file mode 100644 index 0000000..e6c2fe2 --- /dev/null +++ b/objects/enemy/artificial_soul.gd @@ -0,0 +1,38 @@ +tool +extends "res://objects/enemy/enemy.gd" + +## radius in tiles the ghost orbits around +export var radius: float = 0.0 +## initital rotation offset in 8th circles +export var initial_angle: float = 0.0 +## speed the ghost revolves in 8th cycles / second +export var speed: float = 0.0 + +onready var pivot: Node2D = $Pivot +onready var remote_transform: RemoteTransform2D = $Pivot/RemoteTransform + +func _ready() -> void: + pivot.rotation = initial_angle * 0.785398 # TAU / 8.0 + remote_transform.position.x = radius * 8.0 + if Engine.editor_hint: + return + # adjust to difficulty + speed *= Game.enemy_speed_factor + +func _physics_process(delta: float) -> void: + if Engine.editor_hint: + return + # update radius + remote_transform.position.x = radius * 8.0 + # process rotation + pivot.rotation += speed * delta * 0.785398 # TAU / 8.0 + +func _process(delta: float) -> void: + if Engine.editor_hint and Engine.get_frames_drawn() % 10 == 0: + get_node("Pivot").rotation = initial_angle * 0.785398 # TAU / 8.0 + get_node("Pivot/RemoteTransform").position.x = radius * 8.0 + update() + +func _draw() -> void: + if Engine.editor_hint: + draw_arc(Vector2(4.0, 4.0), radius * 8.0, 0.0, TAU, 17, Color(0.0, 1.0, 1.0, 0.1), 1.5) diff --git a/objects/enemy/artificial_soul.tscn b/objects/enemy/artificial_soul.tscn new file mode 100644 index 0000000..b7592c4 --- /dev/null +++ b/objects/enemy/artificial_soul.tscn @@ -0,0 +1,73 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://graphics/enemy/tin_eye.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/artificial_soul.gd" type="Script" id=2] +[ext_resource path="res://graphics/enemy/artificial_soul.png" type="Texture" id=3] + +[sub_resource type="Animation" id=2] +resource_name = "eye hue" +loop = true +step = 0.125 +tracks/0/type = "value" +tracks/0/path = NodePath("Eye:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.560784, 1, 0.560784, 1 ), Color( 1, 0.560784, 0.568627, 1 ), Color( 0.560784, 1, 0.560784, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 360.0, -90.0, -180.0, -270.0, -360.0, -90.0, -180.0, -270.0, -360.0 ] +} + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 2, 2 ) + +[node name="ArtificialSoul" type="Node2D" groups=["enemy"]] +script = ExtResource( 2 ) +radius = 4.0 +speed = 2.0 + +[node name="Hitbox" type="Area2D" parent="."] +position = Vector2( 36, 4 ) + +[node name="Sprite" type="Sprite" parent="Hitbox"] +unique_name_in_owner = true +rotation = 6.28319 +texture = ExtResource( 3 ) + +[node name="Eye" type="Sprite" parent="Hitbox/Sprite"] +modulate = Color( 0.560784, 1, 0.560784, 1 ) +position = Vector2( 1, 0 ) +texture = ExtResource( 1 ) + +[node name="EyeAnim" type="AnimationPlayer" parent="Hitbox/Sprite"] +autoplay = "eye hue" +"anims/eye hue" = SubResource( 2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +shape = SubResource( 1 ) + +[node name="Pivot" type="Node2D" parent="."] +position = Vector2( 4, 4 ) + +[node name="RemoteTransform" type="RemoteTransform2D" parent="Pivot"] +position = Vector2( 32, 0 ) +remote_path = NodePath("../../Hitbox") +update_rotation = false +update_scale = false + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/bat.tscn b/objects/enemy/bat.tscn index 2a7bdec..6361873 100644 --- a/objects/enemy/bat.tscn +++ b/objects/enemy/bat.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=9 format=2] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] [ext_resource path="res://graphics/enemy/bat.png" type="Texture" id=2] [ext_resource path="res://objects/enemy/enemy_move_sidesideupdown.gd" type="Script" id=3] @@ -33,7 +33,6 @@ script = ExtResource( 3 ) score_for_killing = 25 speed = 40 move_direction = 1 -flip_sprite = false [node name="AnimatedSprite" type="AnimatedSprite" parent="."] material = SubResource( 1 ) diff --git a/objects/enemy/boss/2600.gd b/objects/enemy/boss/2600.gd new file mode 100644 index 0000000..58c2483 --- /dev/null +++ b/objects/enemy/boss/2600.gd @@ -0,0 +1,86 @@ +extends "res://objects/enemy/enemy.gd" + +signal entered_phase(phase) + +const Bullet = preload("res://objects/enemy/2600_bullet.tscn") +const SmallExplosion = preload("res://objects/enemy/boss/2600_small_explosion.tscn") +const IntelliHead = preload("res://objects/enemy/boss/intelli_head.tscn") + +export var shot_speed: float = 50 +export var fire_rate: float = 1 +export var can_shoot: bool = false +export var explosion_rect: Rect2 +export var make_explosions: bool = true + +var hp: int = 3 + +onready var bullet_positions = $"%BulletPositions" +onready var shoot_timer = $ShootTimer +onready var anims = $AnimationPlayer +onready var head_sprite = $"%Head" + + +func _on_ShootTimer_timeout(): + if can_shoot: shoot() + +func shoot(): + Audio.play_sound(Audio.a_bullet_barrage,Audio.ac_boss) + for pos in bullet_positions.get_children(): + var bullet = Bullet.instance() + bullet.global_position = pos.global_position + bullet.direction = Vector2.LEFT.rotated(pos.rotation) + bullet.speed = shot_speed + get_parent().add_child(bullet) + shoot_timer.wait_time = fire_rate + +func _play_laser_sound(play: bool): + if play: + Audio.play_sound(Audio.a_rainbow_laser,Audio.ac_boss) + else: + Audio.ac_boss.playing = false + +func _play_charge_sound(play: bool): + if play: + Audio.play_sound(Audio.a_2600_charge,Audio.ac_boss) + else: + Audio.ac_boss.playing = false + + +func _spawn_explosions() -> void: + var head = IntelliHead.instance() + head.global_position = $"%IntelliHeadPos".global_position + get_parent().add_child(head) + while make_explosions: + yield(get_tree().create_timer(randf() * 0.5, false), "timeout") + var explosion = SmallExplosion.instance() + explosion.position = Vector2( + rand_range(explosion_rect.position.x, explosion_rect.end.x), + rand_range(explosion_rect.position.y, explosion_rect.end.y) + ) + add_child(explosion) + +func die(): + hp -= 1 + if hp > 0: + anims.play("Beam") + match hp: + 2: + Game.instance_node(preload("res://objects/enemy/boss/collapse_blocks.tscn"),0,0,get_parent()) + emit_signal("entered_phase", 2) + head_sprite.texture = preload("res://graphics/enemy/boss/stg_2600/head_cracked.png") + 1: + shot_speed = 70 + $"%GlassShape".queue_free() + $"%GlassBreakParticles".emitting = true + emit_signal("entered_phase", 3) + head_sprite.texture = preload("res://graphics/enemy/boss/stg_2600/head_broken.png") + 0: + anims.play("die") + Audio.play_sound(Audio.a_die, Audio.ac_die) + yield(anims, "animation_finished") + emit_signal("entered_phase", 4) + + +func _on_animation_finished(anim_name: String) -> void: + if anim_name == "Beam": + anims.play("stomping") diff --git a/objects/enemy/boss/2600.tscn b/objects/enemy/boss/2600.tscn new file mode 100644 index 0000000..eaf3db8 --- /dev/null +++ b/objects/enemy/boss/2600.tscn @@ -0,0 +1,1127 @@ +[gd_scene load_steps=37 format=2] + +[ext_resource path="res://objects/enemy/boss/2600.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/boss/stg_2600/tailpipes.png" type="Texture" id=2] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/enemy/boss/stg_2600/beam.png" type="Texture" id=4] +[ext_resource path="res://graphics/npc/intelli_idle.png" type="Texture" id=5] +[ext_resource path="res://graphics/enemy/boss/stg_2600/head_intact.png" type="Texture" id=6] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_large.png" type="Texture" id=7] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_medium.png" type="Texture" id=8] +[ext_resource path="res://graphics/enemy/boss/stg_2600/leg.png" type="Texture" id=9] +[ext_resource path="res://scripts/sprite_ext.gd" type="Script" id=10] +[ext_resource path="res://shaders/scale3x.gdshader" type="Shader" id=11] +[ext_resource path="res://graphics/enemy/boss/stg_2600/foot.png" type="Texture" id=12] +[ext_resource path="res://graphics/enemy/boss/stg_2600/beam_gradient.png" type="Texture" id=13] +[ext_resource path="res://shaders/beam_cycle.gdshader" type="Shader" id=14] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=15] +[ext_resource path="res://graphics/particles/smoke.png" type="Texture" id=16] +[ext_resource path="res://shaders/fade.gdshader" type="Shader" id=17] +[ext_resource path="res://graphics/fade_patterns/stg_explosion.png" type="Texture" id=18] +[ext_resource path="res://graphics/particles/glass_shard.png" type="Texture" id=19] + +[sub_resource type="ShaderMaterial" id=11] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 16, 32 ) +shader_param/ammount = Vector2( 0.6, 0.6 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="Curve" id=12] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.130639, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.348684, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 14 ) +shader_param/cycle_speed = 1.0 +shader_param/gradient = ExtResource( 13 ) + +[sub_resource type="RectangleShape2D" id=6] +extents = Vector2( 128, 8 ) + +[sub_resource type="Curve" id=13] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.803571, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Curve" id=21] +_data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.937702, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), -25.1918, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=8] +shader = ExtResource( 11 ) +shader_param/pixel_scale = 1.0 + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 20.5, 15.5 ) + +[sub_resource type="RectangleShape2D" id=19] +extents = Vector2( 5.5, 5.5 ) + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 23, 13 ) + +[sub_resource type="ShaderMaterial" id=20] +resource_local_to_scene = true +shader = ExtResource( 17 ) +shader_param/color = Color( 1, 1, 1, 1 ) +shader_param/smooth_mode = true +shader_param/reverse = true +shader_param/opacity = 0.0 + +[sub_resource type="Animation" id=17] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExplosionRect:material:shader_param/reverse") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ExplosionRect:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} + +[sub_resource type="Animation" id=18] +resource_name = "explode" +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExplosionRect:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.833333 ), Color( 1, 1, 1, 0.666667 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.333333 ), Color( 1, 1, 1, 0.166667 ), Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="Animation" id=4] +resource_name = "Beam" +length = 4.0 +tracks/0/type = "value" +tracks/0/path = NodePath(".:can_shoot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 3.7 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/1/type = "method" +tracks/1/path = NodePath(".") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1.6, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"values": [ { +"args": [ true ], +"method": "_play_charge_sound" +}, { +"args": [ true ], +"method": "_play_laser_sound" +}, { +"args": [ false ], +"method": "_play_laser_sound" +} ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/Beam:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1.5, 1.6, 3.3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1e-05 ), Vector2( 1, 1e-05 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1e-05 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/Head/InternalBeam:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 1.3, 1.5, 3.3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1e-05 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/Head/Beam/Hitbox/BeamShape:disabled") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 1.6, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ true, false, true ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/Head:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 1.3, 1.6, 3.3, 3.4, 3.7 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 15.0, 15.0, -15.0, -15.0, 0.0 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/Head/BeamChargeParticles:emitting") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 1.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -25.1199, -25.1199 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 51.0254, 51.0254 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -26.8344, -26.8344 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -25.1199, -25.1199 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 51.0254, 51.0254 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -26.8344, -26.8344 ] +} + +[sub_resource type="Animation" id=5] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath(".:can_shoot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle/Head/Beam:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1e-05 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/InternalBeam:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 1 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/Head/Beam/Hitbox/BeamShape:disabled") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/Head:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/Head/Beam:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/Head/BeamChargeParticles:emitting") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Axle:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 66, 78 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Axle/Head/Intelli:visible") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/16/type = "value" +tracks/16/path = NodePath(".:make_explosions") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Axle:visible") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hitbox:monitoring") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hitbox:monitorable") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} + +[sub_resource type="Animation" id=15] +resource_name = "die" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ) ] +} +tracks/1/type = "method" +tracks/1/path = NodePath(".") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "_spawn_explosions" +} ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/Intelli:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:can_shoot") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/4/type = "animation" +tracks/4/path = NodePath("BigExplosion/ExplosionAnimation") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"clips": PoolStringArray( "explode" ), +"times": PoolRealArray( 2 ) +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:make_explosions") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 2.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hitbox:monitoring") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 2.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hitbox:monitorable") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 2.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[sub_resource type="Animation" id=14] +resource_name = "stomping" +length = 5.0 +loop = true +tracks/0/type = "bezier" +tracks/0/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"points": PoolRealArray( -25.1199, -0.25, 0, 0, -2.10696, -33.4027, -0.7, 0.0638618, 0.25, 0, -33.4027, -0.25, 0, 0.25, 0, -25.1199, 0, -0.968742, 0, -2.10696 ), +"times": PoolRealArray( 0, 1.2, 1.5, 1.8 ) +} +tracks/1/type = "bezier" +tracks/1/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"points": PoolRealArray( 51.0254, -0.25, 0, 0, 6.18464, 84.1092, -0.5, 0.233734, 0.25, 0, 84.1092, -0.25, 0, 0.25, 0, 51.0254, 0, 5.17889, 0, 6.18464 ), +"times": PoolRealArray( 0, 1.2, 1.5, 1.8 ) +} +tracks/2/type = "bezier" +tracks/2/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"points": PoolRealArray( -26.8344, -0.25, 0, 0, -5.79777, -51.6355, -0.6, 0.20406, 0.25, 0, -51.6355, -0.25, 0, 0.25, 0, -26.8344, 0, -5.58774, 0, -5.79777 ), +"times": PoolRealArray( 0, 1.2, 1.5, 1.8 ) +} +tracks/3/type = "bezier" +tracks/3/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"points": PoolRealArray( -25.1199, -0.25, 0, 0.25, 0, -25.1199, -0.25, 0, 0, -2.10696, -33.4027, -0.7, 0.0638618, 0.25, 0, -33.4027, -0.25, 0, 0.25, 0, -25.1199, 0, -0.968742, 0, -2.10696 ), +"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3 ) +} +tracks/4/type = "bezier" +tracks/4/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"points": PoolRealArray( 51.0254, -0.25, 0, 0.25, 0, 51.0254, -0.25, 0, 0, 6.18464, 84.1092, -0.5, 0.233734, 0.25, 0, 84.1092, -0.25, 0, 0.25, 0, 51.0254, 0, 5.17889, 0, 6.18464 ), +"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3 ) +} +tracks/5/type = "bezier" +tracks/5/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"points": PoolRealArray( -26.8344, -0.25, 0, 0.25, 0, -26.8344, -0.25, 0, 0, -5.79777, -51.6355, -0.6, 0.20406, 0.25, 0, -51.6355, -0.25, 0, 0.25, 0, -26.8344, 0, -5.58774, 0, -5.79777 ), +"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3 ) +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[node name="2600" type="Node2D"] +script = ExtResource( 1 ) +can_shoot = true +explosion_rect = Rect2( 8, 16, 84, 64 ) + +[node name="Axle" type="Node2D" parent="."] +position = Vector2( 66, 78 ) + +[node name="JointBack" type="Sprite" parent="Axle"] +modulate = Color( 0.75, 0.75, 0.75, 1 ) +position = Vector2( -10, -4 ) +z_index = -1 +texture = ExtResource( 7 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="LegBack" type="Sprite" parent="Axle/JointBack"] +show_behind_parent = true +rotation = -0.468349 +texture = ExtResource( 9 ) +offset = Vector2( 0, 18 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="KneeBack" type="Node2D" parent="Axle/JointBack/LegBack"] +position = Vector2( 0, 36 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="ShinBack" type="Sprite" parent="Axle/JointBack/LegBack/KneeBack"] +rotation = 0.890561 +texture = ExtResource( 9 ) +offset = Vector2( 0, 24 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 48 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="FootBack" type="Sprite" parent="Axle/JointBack/LegBack/KneeBack/ShinBack"] +position = Vector2( 0.00983047, 47.8521 ) +rotation = -0.438425 +texture = ExtResource( 12 ) +offset = Vector2( -11.6527, 2.61113 ) +script = ExtResource( 10 ) +__meta__ = { +"_edit_bone_": true +} +rotation_lock = 0.0 + +[node name="Endpoint" type="Position2D" parent="Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack"] +position = Vector2( -17, 0 ) +__meta__ = { +"_edit_bone_": true, +"_gizmo_extents_": 4.0 +} + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack"] +position = Vector2( -8.99999, 5 ) +remote_path = NodePath("../../../../../../../Hitbox/FootShapeBack") + +[node name="KneeBack" type="Sprite" parent="Axle/JointBack/LegBack/KneeBack"] +texture = ExtResource( 8 ) +hframes = 8 +script = ExtResource( 10 ) +fps = 4.0 +rotation_lock = 0.0 + +[node name="Head" type="Sprite" parent="Axle"] +unique_name_in_owner = true +position = Vector2( 0, -4 ) +texture = ExtResource( 6 ) +offset = Vector2( -13, -25 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="End" type="Position2D" parent="Axle/Head"] +position = Vector2( -20, -28 ) +__meta__ = { +"_edit_bone_": true, +"_gizmo_extents_": 4.0 +} + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Axle/Head"] +position = Vector2( -18, -10 ) +remote_path = NodePath("../../../Hitbox/HeadShape") + +[node name="CannonBG" type="ColorRect" parent="Axle/Head"] +show_behind_parent = true +margin_left = -64.0 +margin_top = -18.0 +margin_right = -32.0 +margin_bottom = -2.0 +color = Color( 0.266667, 0.266667, 0.305882, 1 ) + +[node name="Tailpipes" type="Sprite" parent="Axle/Head"] +show_behind_parent = true +material = SubResource( 11 ) +position = Vector2( 21, -36 ) +texture = ExtResource( 2 ) + +[node name="SmokeParticles" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] +position = Vector2( 10, -10 ) +amount = 12 +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 +gravity = Vector2( 0, -30 ) +initial_velocity = 20.0 +initial_velocity_random = 1.0 +angular_velocity = 180.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 12 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="SmokeParticles2" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] +position = Vector2( 8, 0 ) +amount = 12 +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 +gravity = Vector2( 0, -30 ) +initial_velocity = 20.0 +initial_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 12 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="SmokeParticles3" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] +position = Vector2( 5, -9 ) +amount = 12 +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 +gravity = Vector2( 0, -30 ) +initial_velocity = 20.0 +initial_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 12 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="Intelli" type="Sprite" parent="Axle/Head"] +show_behind_parent = true +position = Vector2( -37, -32 ) +texture = ExtResource( 5 ) +flip_h = true + +[node name="IntelliHeadPos" type="Position2D" parent="Axle/Head/Intelli"] +unique_name_in_owner = true +position = Vector2( 0, -4 ) + +[node name="Beam" type="Sprite" parent="Axle/Head"] +show_behind_parent = true +material = SubResource( 10 ) +position = Vector2( -58, -10 ) +scale = Vector2( 1, 1e-05 ) +texture = ExtResource( 4 ) +offset = Vector2( -128, 0 ) +region_enabled = true +region_rect = Rect2( 0, 0, 256, 16 ) + +[node name="Hitbox" type="Area2D" parent="Axle/Head/Beam" groups=["blocks arrow", "enemy_hitbox"]] + +[node name="BeamShape" type="CollisionShape2D" parent="Axle/Head/Beam/Hitbox"] +position = Vector2( -128, 0 ) +shape = SubResource( 6 ) +disabled = true + +[node name="InternalBeam" type="Sprite" parent="Axle/Head"] +show_behind_parent = true +material = SubResource( 10 ) +position = Vector2( -33, -10 ) +scale = Vector2( 1e-05, 1 ) +texture = ExtResource( 4 ) +offset = Vector2( -12, 0 ) +region_enabled = true +region_rect = Rect2( 0, 0, 24, 16 ) + +[node name="BeamChargeParticles" type="CPUParticles2D" parent="Axle/Head"] +show_behind_parent = true +material = SubResource( 10 ) +position = Vector2( -62, -10 ) +scale = Vector2( 1, 0.987022 ) +emitting = false +amount = 12 +lifetime = 1.5 +speed_scale = 3.0 +texture = ExtResource( 15 ) +emission_shape = 3 +emission_points = PoolVector2Array( -32, 0, -28, -12, -28, 12, -24, -16, -24, 16, -30, -8, -30, 8, -32, -4, -32, 4 ) +emission_colors = PoolColorArray( ) +gravity = Vector2( 0, 0 ) +radial_accel = -32.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 0.5 +scale_amount_curve = SubResource( 13 ) + +[node name="GlassBreakParticles" type="CPUParticles2D" parent="Axle/Head"] +unique_name_in_owner = true +position = Vector2( -35, -39 ) +emitting = false +amount = 24 +lifetime = 3.0 +one_shot = true +explosiveness = 0.95 +randomness = 0.5 +lifetime_randomness = 0.5 +texture = ExtResource( 19 ) +emission_shape = 2 +emission_rect_extents = Vector2( 16, 12 ) +direction = Vector2( 0, -1 ) +spread = 90.0 +gravity = Vector2( 0, 80 ) +initial_velocity = 80.0 +initial_velocity_random = 0.25 +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.25 +scale_amount_random = 0.5 +scale_amount_curve = SubResource( 21 ) + +[node name="JointFront" type="Sprite" parent="Axle"] +position = Vector2( 11, -4 ) +texture = ExtResource( 7 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="LegFront" type="Sprite" parent="Axle/JointFront"] +show_behind_parent = true +rotation = -0.468349 +texture = ExtResource( 9 ) +offset = Vector2( 0, 18 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="ShinFront" type="Sprite" parent="Axle/JointFront/LegFront"] +material = SubResource( 8 ) +position = Vector2( 3.8147e-06, 36 ) +rotation = 0.890561 +texture = ExtResource( 9 ) +offset = Vector2( 0, 24 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 48 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="FootFront" type="Sprite" parent="Axle/JointFront/LegFront/ShinFront"] +position = Vector2( 0.00983047, 47.8521 ) +rotation = -0.438425 +texture = ExtResource( 12 ) +offset = Vector2( -11.6527, 2.61113 ) +script = ExtResource( 10 ) +__meta__ = { +"_edit_bone_": true +} +rotation_lock = 0.0 + +[node name="Endpoint" type="Position2D" parent="Axle/JointFront/LegFront/ShinFront/FootFront"] +position = Vector2( -17, 0 ) +__meta__ = { +"_edit_bone_": true, +"_gizmo_extents_": 4.0 +} + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Axle/JointFront/LegFront/ShinFront/FootFront"] +position = Vector2( -8.99999, 5 ) +remote_path = NodePath("../../../../../../Hitbox/FootShapeFront") + +[node name="KneeFront" type="Sprite" parent="Axle/JointFront/LegFront"] +position = Vector2( 3.8147e-06, 36 ) +texture = ExtResource( 8 ) +hframes = 8 +script = ExtResource( 10 ) +fps = 4.0 +rotation_lock = 0.0 + +[node name="BulletPositions" type="Node2D" parent="."] +unique_name_in_owner = true +position = Vector2( -153, -24 ) + +[node name="Position1" type="Position2D" parent="BulletPositions"] +position = Vector2( 152, 80 ) + +[node name="Position2" type="Position2D" parent="BulletPositions"] +position = Vector2( 152, 88 ) +rotation = -0.436332 + +[node name="Position3" type="Position2D" parent="BulletPositions"] +position = Vector2( 152, 96 ) +rotation = -0.872665 + +[node name="ShootTimer" type="Timer" parent="."] +unique_name_in_owner = true +autostart = true + +[node name="WeakSpot" type="Area2D" parent="." groups=["boss_weakspot", "enemy_hitbox"]] +position = Vector2( 1, 0 ) + +[node name="GlassShape" type="CollisionShape2D" parent="WeakSpot"] +unique_name_in_owner = true +position = Vector2( 26.5, 32.5 ) +shape = SubResource( 1 ) + +[node name="IntelliShape" type="CollisionShape2D" parent="WeakSpot"] +position = Vector2( 27.5, 37.5 ) +shape = SubResource( 19 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["blocks_arrow", "enemy_hitbox"]] +position = Vector2( 1, 0 ) + +[node name="HeadShape" type="CollisionPolygon2D" parent="Hitbox"] +position = Vector2( 47, 64 ) +polygon = PoolVector2Array( -1, -48, 25, -48, 37, -36, 47, 8, 39, 17, -42, 17, -47, 6, -47, -6, -42, -17, -1, -17 ) + +[node name="FootShapeFront" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 63.7333, 154.923 ) +rotation = -0.0162131 +scale = Vector2( 1, 1 ) +shape = SubResource( 3 ) + +[node name="FootShapeBack" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 42.7333, 154.923 ) +rotation = -0.0162131 +scale = Vector2( 1, 1 ) +shape = SubResource( 3 ) +disabled = true + +[node name="BigExplosion" type="CanvasLayer" parent="."] +layer = 101 + +[node name="ExplosionRect" type="TextureRect" parent="BigExplosion"] +material = SubResource( 20 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 18 ) + +[node name="ExplosionAnimation" type="AnimationPlayer" parent="BigExplosion"] +anims/RESET = SubResource( 17 ) +anims/explode = SubResource( 18 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "stomping" +playback_default_blend_time = 0.5 +anims/Beam = SubResource( 4 ) +anims/RESET = SubResource( 5 ) +anims/die = SubResource( 15 ) +anims/stomping = SubResource( 14 ) + +[connection signal="area_entered" from="Axle/Head/Beam/Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="timeout" from="ShootTimer" to="." method="_on_ShootTimer_timeout"] +[connection signal="area_entered" from="WeakSpot" to="." method="_on_WeakSpot_area_entered"] +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_finished"] diff --git a/objects/enemy/boss/2600_die.tscn b/objects/enemy/boss/2600_die.tscn new file mode 100644 index 0000000..ebb7cb5 --- /dev/null +++ b/objects/enemy/boss/2600_die.tscn @@ -0,0 +1,181 @@ +[gd_scene load_steps=11 format=2] + +[ext_resource path="res://scripts/launch_rigid.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/boss/stg_2600/head_broken.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_large.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/boss/stg_2600/leg.png" type="Texture" id=6] +[ext_resource path="res://graphics/enemy/boss/stg_2600/foot.png" type="Texture" id=7] +[ext_resource path="res://graphics/enemy/boss/stg_2600/tailpipes.png" type="Texture" id=8] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_medium.png" type="Texture" id=10] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 5.98485, 17.9739 ) + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 5.78793, 21.068 ) + +[sub_resource type="CircleShape2D" id=3] +radius = 12.0 + +[node name="2600Die" type="Node2D"] + +[node name="LegR" type="RigidBody2D" parent="."] +position = Vector2( 61, 85 ) +rotation = -0.436332 +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="LegR"] +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="LegR"] +position = Vector2( 0.221909, 0.014267 ) +shape = SubResource( 1 ) + +[node name="LargeBoltR" type="RigidBody2D" parent="."] +position = Vector2( 56, 74 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="LargeBoltR"] +position = Vector2( -0.400002, 0.400002 ) +texture = ExtResource( 3 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="LargeBoltR"] +position = Vector2( -77.4, -73.6 ) +polygon = PoolVector2Array( 86, 60, 68, 60, 61, 73, 68, 88, 86, 88, 93, 75 ) + +[node name="Leg2R" type="RigidBody2D" parent="."] +position = Vector2( 61, 128 ) +rotation = 0.418879 +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="Leg2R"] +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 42 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Leg2R"] +position = Vector2( 0, 0.0500336 ) +shape = SubResource( 2 ) + +[node name="SmallBoltR" type="RigidBody2D" parent="."] +position = Vector2( 71, 107 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="SmallBoltR"] +texture = ExtResource( 10 ) +region_enabled = true +region_rect = Rect2( 0, 0, 24, 24 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SmallBoltR"] +shape = SubResource( 3 ) + +[node name="Head" type="RigidBody2D" parent="."] +position = Vector2( 46, 46 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Tailpipe" type="Sprite" parent="Head"] +position = Vector2( 41, -8 ) +texture = ExtResource( 8 ) + +[node name="Head" type="Sprite" parent="Head"] +position = Vector2( 7, 3 ) +texture = ExtResource( 2 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Head"] +polygon = PoolVector2Array( 2, -29, -17, -29, -26, -25, -32, -19, -34, -16, -35, -14, -37, -10, -38, -7, -39, -2, -39, 1, -40, 2, -42, 4, -43, 8, -44, 12, -44, 24, -43, 29, -41, 33, -40, 35, 40, 35, 49, 26, 49, 22, 48, 18, 46, 10, 44, 2, 43, -2, 41, -10, 40, -14, 39, -18, 27, -30, 2, -30 ) + +[node name="LegL" type="RigidBody2D" parent="."] +position = Vector2( 82, 85 ) +rotation = -0.436332 +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="LegL"] +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="LegL"] +position = Vector2( 0.221909, 0.014267 ) +shape = SubResource( 1 ) + +[node name="LargeBoltL" type="RigidBody2D" parent="."] +position = Vector2( 77, 74 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="LargeBoltL"] +position = Vector2( -0.400002, 0.400002 ) +texture = ExtResource( 3 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="LargeBoltL"] +position = Vector2( -77.4, -73.6 ) +polygon = PoolVector2Array( 86, 60, 68, 60, 61, 73, 68, 88, 86, 88, 93, 75 ) + +[node name="Leg2L" type="RigidBody2D" parent="."] +position = Vector2( 81, 130 ) +rotation = 0.418879 +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="Leg2L"] +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 42 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Leg2L"] +position = Vector2( 0, 0.0500336 ) +shape = SubResource( 2 ) + +[node name="SmallBoltL" type="RigidBody2D" parent="."] +position = Vector2( 92, 107 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="SmallBoltL"] +texture = ExtResource( 10 ) +region_enabled = true +region_rect = Rect2( 0, 0, 24, 24 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SmallBoltL"] +shape = SubResource( 3 ) + +[node name="FootR" type="RigidBody2D" parent="."] +position = Vector2( 39, 152 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="FootR"] +texture = ExtResource( 7 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="FootR"] +polygon = PoolVector2Array( -2, -10, -20, 0, -20, 16, 26, 16, 26, -10, 21, -10, 18, -7, 16, -8, 14, -9, 8, -9, 5, -7, 3, -10 ) + +[node name="FootL" type="RigidBody2D" parent="."] +position = Vector2( 60, 152 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="FootL"] +texture = ExtResource( 7 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="FootL"] +polygon = PoolVector2Array( -2, -10, -20, 0, -20, 16, 26, 16, 26, -10, 21, -10, 18, -7, 16, -8, 14, -9, 8, -9, 5, -7, 3, -10 ) diff --git a/objects/enemy/boss/2600_explosion.tscn b/objects/enemy/boss/2600_explosion.tscn new file mode 100644 index 0000000..1ab0b80 --- /dev/null +++ b/objects/enemy/boss/2600_explosion.tscn @@ -0,0 +1,92 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://shaders/fade.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/fade_patterns/stg_explosion.png" type="Texture" id=2] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color = Color( 1, 1, 1, 1 ) +shader_param/smooth_mode = true +shader_param/reverse = true +shader_param/opacity = 0.0 + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExplosionRect:material:shader_param/reverse") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ExplosionRect:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} + +[sub_resource type="Animation" id=3] +resource_name = "explode" +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExplosionRect:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.833333 ), Color( 1, 1, 1, 0.666667 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.333333 ), Color( 1, 1, 1, 0.166667 ), Color( 1, 1, 1, 0 ) ] +} + +[node name="2600Explosion" type="CanvasLayer"] +layer = 101 + +[node name="ExplosionRect" type="TextureRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 2 ) + +[node name="ExplosionAnimation" type="AnimationPlayer" parent="."] +autoplay = "explode" +anims/RESET = SubResource( 2 ) +anims/explode = SubResource( 3 ) diff --git a/objects/enemy/boss/2600_small_explosion.gd b/objects/enemy/boss/2600_small_explosion.gd new file mode 100644 index 0000000..ba072e2 --- /dev/null +++ b/objects/enemy/boss/2600_small_explosion.gd @@ -0,0 +1,16 @@ +extends Node2D + +var quiet = false + +func _ready() -> void: + if quiet: + Audio.play_sound(Audio.a_explosion,Audio.ac_small_explosion) + else: + Audio.play_sound(Audio.a_explosion,Audio.ac_die) + var sprite: AnimatedSprite = get_child(randi() % get_child_count()) + sprite.visible = true + sprite.play() + + +func _on_animation_finished() -> void: + queue_free() diff --git a/objects/enemy/boss/2600_small_explosion.tscn b/objects/enemy/boss/2600_small_explosion.tscn new file mode 100644 index 0000000..5e3af58 --- /dev/null +++ b/objects/enemy/boss/2600_small_explosion.tscn @@ -0,0 +1,86 @@ +[gd_scene load_steps=18 format=2] + +[ext_resource path="res://objects/enemy/boss/2600_small_explosion.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/explosion_small.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/explosion.png" type="Texture" id=3] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 2 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 2 ) +region = Rect2( 32, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 2 ) +region = Rect2( 48, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 2 ) +region = Rect2( 64, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 2 ) +region = Rect2( 80, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=14] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ) ], +"loop": false, +"name": "explode", +"speed": 20.0 +} ] + +[sub_resource type="AtlasTexture" id=8] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=9] +atlas = ExtResource( 3 ) +region = Rect2( 64, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=10] +atlas = ExtResource( 3 ) +region = Rect2( 128, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=11] +atlas = ExtResource( 3 ) +region = Rect2( 192, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=12] +atlas = ExtResource( 3 ) +region = Rect2( 256, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=13] +atlas = ExtResource( 3 ) +region = Rect2( 320, 0, 64, 64 ) + +[sub_resource type="SpriteFrames" id=15] +animations = [ { +"frames": [ SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ), SubResource( 13 ) ], +"loop": false, +"name": "explode", +"speed": 10.0 +} ] + +[node name="2600Explosion" type="Node2D"] +z_index = 50 +script = ExtResource( 1 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +visible = false +frames = SubResource( 14 ) +animation = "explode" + +[node name="AnimatedSprite2" type="AnimatedSprite" parent="."] +visible = false +frames = SubResource( 15 ) +animation = "explode" + +[connection signal="animation_finished" from="AnimatedSprite" to="." method="_on_animation_finished"] +[connection signal="animation_finished" from="AnimatedSprite2" to="." method="_on_animation_finished"] diff --git a/objects/enemy/boss/collapse_blocks.tscn b/objects/enemy/boss/collapse_blocks.tscn new file mode 100644 index 0000000..78edf94 --- /dev/null +++ b/objects/enemy/boss/collapse_blocks.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/environment/collapse_block/collapse_block.tscn" type="PackedScene" id=1] +[ext_resource path="res://audio/sounds/collapse_block_fall.ogg" type="AudioStream" id=2] + +[sub_resource type="PhysicsMaterial" id=2] +bounce = 0.07 + +[node name="CollapseBlocks" type="Node2D"] + +[node name="CollapseBlock" parent="." instance=ExtResource( 1 )] +position = Vector2( 16, 72 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock2" parent="." instance=ExtResource( 1 )] +position = Vector2( 24, 72 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock3" parent="." instance=ExtResource( 1 )] +position = Vector2( 32, 72 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock4" parent="." instance=ExtResource( 1 )] +position = Vector2( 72, 72 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock5" parent="." instance=ExtResource( 1 )] +position = Vector2( 64, 72 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock9" parent="." instance=ExtResource( 1 )] +position = Vector2( 56, 72 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock7" parent="." instance=ExtResource( 1 )] +position = Vector2( 64, 104 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock8" parent="." instance=ExtResource( 1 )] +position = Vector2( 72, 104 ) +physics_material_override = SubResource( 2 ) + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 2 ) +volume_db = -8.0 +autoplay = true diff --git a/objects/enemy/boss/fami_transform.material b/objects/enemy/boss/fami_transform.material new file mode 100644 index 0000000..89da501 Binary files /dev/null and b/objects/enemy/boss/fami_transform.material differ diff --git a/objects/enemy/boss/famira.gd b/objects/enemy/boss/famira.gd new file mode 100644 index 0000000..7e00812 --- /dev/null +++ b/objects/enemy/boss/famira.gd @@ -0,0 +1,153 @@ +extends Node2D + + +signal died() +signal health_changed(amount) + + +const DeathParticles = preload("res://objects/enemy/death_particles_famira.tscn") + + +export var push_speed: float = 30.0 +export var chase_speed: float = 65.0 +export var breath_dps: float = 14.25 +export var breath_knockback: float = 16.0 +export var punch_damage: float = 5.25 +export var punch_knockback: float = 40.0 +export var hurting: bool = false +export var hp: float = 100.0 +export var sg2083_beam_dps: float = 10.0 +export var sg2083_path: NodePath +export var defense: float = 0.45 +export var credits: bool = false + + +onready var animation_player: AnimationPlayer = $"%AnimationPlayer" +onready var state_chart: StateChart = $StateChart +onready var in_range_cast: RayCast2D = $InRangeCast +onready var out_range_cast: RayCast2D = $OutRangeCast +onready var shoot_range_cast: RayCast2D = $ShootRangeCast +onready var grumble = $Grumble + +func _ready(): + if credits: animation_player.play("roar") + +func _physics_process(delta: float) -> void: + if !credits: + var sg2083 := get_node(sg2083_path) + if sg2083 and sg2083.state == 0: + state_chart.set_guard_property("player_dead", true) + state_chart.send_event("player_dead") + else: + state_chart.set_guard_property("player_dead", false) + if not out_range_cast.is_colliding(): + state_chart.send_event("out_of_range") + elif in_range_cast.is_colliding(): + state_chart.send_event("in_range") + if fmod(Game.time, 15.0) == 0.0: + Audio.play_sound(Audio.a_grumble,Audio.ac_boss) + + +func start_push() -> void: + state_chart.send_event("start_push") + + +func stop_push() -> void: + state_chart.send_event("stop_push") + + +func hurt(amount: float) -> void: + if hp <= 0.0: + return + hp -= amount * defense + hp = max(hp, 0.0) + emit_signal("health_changed", hp) + if hp <= 0.0: + state_chart.send_event("die") + emit_signal("died") + + +func _attack() -> void: + var sg2083 := get_node(sg2083_path) + if sg2083.has_method("hurt"): + var r = RandomNumberGenerator.new() + r.randomize() + var snd = r.randi_range(0,2) + match snd: + 0: + Audio.play_sound(Audio.a_mech_hurt_1,Audio.ac_die) + 1: + Audio.play_sound(Audio.a_mech_hurt_2,Audio.ac_die) + 2: + Audio.play_sound(Audio.a_mech_hurt_3,Audio.ac_die) + sg2083.hurt(punch_damage) + sg2083.knock_back(punch_knockback) + + +func _on_Roar_state_entered() -> void: + + animation_player.play("roar", 0.25) + + +func _roar() -> void: + if credits == false: + Audio.play_sound(Audio.a_famira, Audio.ac_boss) + + +func _on_Chasing_state_entered() -> void: + animation_player.play("chasing", 0.25) + + +func _on_Punching_state_entered() -> void: + animation_player.play("punching", 0.25) + + +func _on_PunchCooldown_state_entered() -> void: + animation_player.play("RESET", 0.5) + + +func _on_Shooting_state_entered() -> void: + animation_player.play("shooting") + + +func _on_PushedBack_state_entered() -> void: + animation_player.play("pushed", 0.25) + + +func _on_Dying_state_entered() -> void: + Game.save_boss() + animation_player.play("die", 0.25) + Audio.play_sound(Audio.a_famira_die, Audio.ac_boss) + var tween = $Tween + tween.interpolate_property(Audio.ac_music, "volume_db", + Audio.ac_music.volume_db, -99, 16, + Tween.TRANS_LINEAR, Tween.EASE_IN_OUT) + tween.start() + + + +func _on_Chasing_state_physics_processing(delta) -> void: + position.x -= chase_speed * delta + + +func _on_PushedBack_state_physics_processing(delta) -> void: + hurt(sg2083_beam_dps * delta) + position.x += push_speed * delta + + +func _on_Shooting_state_physics_processing(delta) -> void: + if hurting and shoot_range_cast.is_colliding(): + var sg2083 := get_node(sg2083_path) + if sg2083.has_method("hurt"): + var distance := shoot_range_cast.to_local(shoot_range_cast.get_collision_point()).x + var weight := inverse_lerp(shoot_range_cast.cast_to.x, 0.0, distance) + if !Audio.ac_climb.is_playing() && sg2083.state != sg2083.State.DUCK: + Audio.play_sound(Audio.a_critical_heat,Audio.ac_climb) + sg2083.hurt(breath_dps * weight * delta, true) + sg2083.knock_back(breath_knockback * weight * delta, true) + + +func _on_Hitbox_area_entered(area: Area2D) -> void: + if area.is_in_group("hurt_famira"): + hurt(area.damage) + area.queue_free() diff --git a/objects/enemy/boss/famira.tscn b/objects/enemy/boss/famira.tscn new file mode 100644 index 0000000..2a97a65 --- /dev/null +++ b/objects/enemy/boss/famira.tscn @@ -0,0 +1,4833 @@ +[gd_scene load_steps=65 format=2] + +[ext_resource path="res://objects/enemy/boss/famira.gd" type="Script" id=1] +[ext_resource path="res://shaders/scale3x.gdshader" type="Shader" id=2] +[ext_resource path="res://addons/godot_state_charts/state_chart.gd" type="Script" id=3] +[ext_resource path="res://addons/godot_state_charts/compound_state.gd" type="Script" id=4] +[ext_resource path="res://addons/godot_state_charts/atomic_state.gd" type="Script" id=5] +[ext_resource path="res://addons/godot_state_charts/transition.gd" type="Script" id=6] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/eye.png" type="Texture" id=7] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/headlower.png" type="Texture" id=8] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/headupper.png" type="Texture" id=9] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/brain2.png" type="Texture" id=10] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/tentacle4.png" type="Texture" id=11] +[ext_resource path="res://scripts/ball_snake.gd" type="Script" id=12] +[ext_resource path="res://graphics/enemy/antlion_body.png" type="Texture" id=13] +[ext_resource path="res://graphics/enemy/tentacle.png" type="Texture" id=14] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=15] +[ext_resource path="res://graphics/enemy/antlion_body_border.png" type="Texture" id=16] +[ext_resource path="res://objects/enemy/boss/fami_transform.material" type="Material" id=17] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=18] +[ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=19] +[ext_resource path="res://graphics/enemy/boss/famira_dissolve.png" type="Texture" id=20] +[ext_resource path="res://graphics/enemy/boss/fami_parts/leg.png" type="Texture" id=21] +[ext_resource path="res://graphics/enemy/boss/fami_parts/body.png" type="Texture" id=22] +[ext_resource path="res://graphics/enemy/boss/fami_parts/head_back.png" type="Texture" id=23] +[ext_resource path="res://graphics/enemy/boss/fami_parts/head_lower.png" type="Texture" id=24] +[ext_resource path="res://graphics/enemy/boss/fami_parts/head_upper.png" type="Texture" id=25] +[ext_resource path="res://graphics/enemy/boss/fami_parts/mouth_tendril.png" type="Texture" id=26] +[ext_resource path="res://audio/sounds/fami_fire.ogg" type="AudioStream" id=27] +[ext_resource path="res://graphics/enemy/boss/famira_fire.png" type="Texture" id=28] +[ext_resource path="res://graphics/enemy/boss/fami_parts/leg_lower.png" type="Texture" id=29] +[ext_resource path="res://graphics/enemy/boss/fami_parts/hand.png" type="Texture" id=30] +[ext_resource path="res://graphics/enemy/boss/fami_parts/arm_segment.png" type="Texture" id=31] +[ext_resource path="res://graphics/enemy/boss/fami_parts/foot.png" type="Texture" id=32] +[ext_resource path="res://graphics/enemy/boss/fami_parts/arm_segment_border.png" type="Texture" id=33] +[ext_resource path="res://graphics/enemy/boss/fami_parts/head_upper_glow_mask.png" type="Texture" id=34] +[ext_resource path="res://graphics/enemy/boss/fami_parts/body_glow_mask.png" type="Texture" id=35] +[ext_resource path="res://graphics/enemy/boss/fami_parts/head_back_glow_mask.png" type="Texture" id=36] +[ext_resource path="res://shaders/elecricity_no_blood.tres" type="Shader" id=37] + +[sub_resource type="RectangleShape2D" id=11] +extents = Vector2( 28, 64 ) + +[sub_resource type="ShaderMaterial" id=18] +shader = ExtResource( 18 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Curve" id=19] +_data = [ Vector2( 0, 0 ), 0.0, 12.4999, 0, 0, Vector2( 0.21317, 1 ), 2.06228, 0.0, 0, 0, Vector2( 0.722098, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), -7.91544, 0.0, 0, 0 ] + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -119.87 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:initial_velocity") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 230.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Body/Neck/BreathParticles:lifetime") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 2.0 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("..:hurting") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip:scale") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath(".:material:shader_param/background_color") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath(".:material:shader_param/arc_color") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/20/type = "value" +tracks/20/path = NodePath(".:scale") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("../DissolveMask:position") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -63, -322 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("../ShardParticles:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -165 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("../ShardParticles:emitting") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("../DissolveParticles:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("../DissolveParticles:emitting") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("../DissolveParticles:emission_rect_extents") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 24, 0 ) ] +} + +[sub_resource type="Animation" id=4] +resource_name = "chasing" +length = 0.4 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -26.9991, 26.9994 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( -35.9992, -7.99675 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 2 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -0.657538, 20.1267, -0.657538, -31.2638 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 2 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -0.657538, -17.623, -0.657538, 23.7159 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -119.87, -80.0395 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=12] +resource_name = "die" +length = 11.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -41.0008, -18.9997 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 37.9987, -18.9981 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -109.576 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 28.215 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.5991, -9.59989 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -23.1788 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 38.5195 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 2 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("../DissolveMask:position") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -28, -300 ), Vector2( 58, -84 ) ] +} +tracks/14/type = "value" +tracks/14/path = NodePath(".:material:shader_param/arc_color") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 2, 8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath(".:material:shader_param/background_color") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 2, 8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 1 ) ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("../ShardParticles:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -197 ), Vector2( 4, 19 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("../ShardParticles:emitting") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0.2, 7 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("../DissolveParticles:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -197 ), Vector2( 4, 19 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("../DissolveParticles:emitting") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 7.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("../DissolveParticles:emission_rect_extents") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 1.8, 2.2, 2.8, 3.2, 3.4, 4, 5.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 24, 0 ), Vector2( 24, 0 ), Vector2( 48, 0 ), Vector2( 48, 0 ), Vector2( 16, 0 ), Vector2( 64, 0 ), Vector2( 24, 0 ), Vector2( 16, 0 ) ] +} + +[sub_resource type="Animation" id=17] +resource_name = "grow" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -119.87 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:initial_velocity") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 230.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Body/Neck/BreathParticles:lifetime") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 2.0 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("..:hurting") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/16/type = "value" +tracks/16/path = NodePath(".:material:shader_param/background_color") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 2, 3 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 0 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath(".:material:shader_param/arc_color") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 2, 3 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/18/type = "value" +tracks/18/path = NodePath(".:scale") +tracks/18/interp = 2 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1e-05 ), Vector2( 1, 1 ) ] +} +tracks/19/type = "method" +tracks/19/path = NodePath("../StateChart") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 2.9 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "transformed" ], +"method": "send_event" +} ] +} + +[sub_resource type="Animation" id=5] +resource_name = "punching" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.3, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -12.999, -17.0009 ), Vector2( -65.0015, -0.996742 ), Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 0.7, 0.8, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( -31.9996, 22.0018 ), Vector2( -14.9986, -8.9978 ), Vector2( -72.9994, 19.0063 ), Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.2621, 47.7735, 55.2621, 47.7735, 55.2621, 47.7735, 55.2621, 47.7735, 55.2621, 47.7735, 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.2, 0.3, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -102.737, -102.737, -102.737, -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.5, 0.7, 0.8, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -119.87, -119.87, -73.1186, -96.9535, -119.87 ] +} +tracks/11/type = "method" +tracks/11/path = NodePath("..") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0.3, 0.8 ), +"transitions": PoolRealArray( 1, 1 ), +"values": [ { +"args": [ ], +"method": "_attack" +}, { +"args": [ ], +"method": "_attack" +} ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0.6 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=6] +resource_name = "pushed" +length = 0.2 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -11.0004, -12 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -16.001, -9.99852 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -104.392 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -37.6956 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 32.9738 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -21.0393, -8.75184 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -49.0541 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -49.6616 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 2 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 12, 53 ), Vector2( 4, 53 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0.2 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("..:hurting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=3] +resource_name = "roar" +length = 1.5 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -41.0008, -18.9997 ), Vector2( -41.0008, -18.9997 ), Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( 37.9987, -18.9981 ), Vector2( 37.9987, -18.9981 ), Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -137.823, -109.576, -109.576, -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.2621, 28.215, 28.215, 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.8929, -8.09683 ), Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -102.737, -23.1788, -23.1788, -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -122.256, 38.5195, 38.5195, -122.256 ] +} +tracks/11/type = "method" +tracks/11/path = NodePath("../StateChart") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 1.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "roar_done" ], +"method": "send_event" +} ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0.6 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/14/type = "method" +tracks/14/path = NodePath("..") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "_roar" +} ] +} + +[sub_resource type="Animation" id=7] +resource_name = "shooting" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 89.3425, 112.803, 112.803, 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -51.8512, 24.5478 ), Vector2( -51.8512, 24.5478 ), Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( -11.3985, 19.1772 ), Vector2( -11.3985, 19.1772 ), Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -137.823, -139.456, -139.456, -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.2621, 22.2965, 22.2965, 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 2 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 45.9167, 45.9167, 45.9167, 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 2 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ), Vector2( -25.8929, -8.09683 ), Vector2( -25.8929, -8.09683 ), Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -102.737, -109.655, -109.655, -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -119.87, -131.542, -131.542, -119.87 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.4, 2.7 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/13/type = "method" +tracks/13/path = NodePath("../StateChart") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 3 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "shoot_done" ], +"method": "send_event" +} ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("..:hurting") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.6, 2.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/pixel_scale = 1.0 + +[sub_resource type="Curve" id=8] +_data = [ Vector2( 0, 0.5 ), 0.0, 0.890696, 0, 0, Vector2( 0.814474, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), -13.2988, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=9] +offsets = PoolRealArray( 0, 0.163743, 0.432749, 0.596491, 0.853801, 1 ) +colors = PoolColorArray( 0.859375, 1, 0.974457, 1, 0.425781, 0.650085, 1, 1, 0.858946, 0.258824, 0.909804, 1, 0.925781, 0, 0.520752, 1, 0, 0, 0, 1, 0, 0, 0, 1 ) + +[sub_resource type="Animation" id=20] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 22.2642 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 34.9602 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -119.87 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:initial_velocity") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 230.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Body/Neck/BreathParticles:lifetime") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 2.0 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("..:hurting") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip:scale") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath(".:material:shader_param/background_color") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath(".:material:shader_param/arc_color") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/20/type = "value" +tracks/20/path = NodePath(".:scale") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("../DissolveMask:position") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -63, -322 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("../ShardParticles:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -165 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("../ShardParticles:emitting") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("../DissolveParticles:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("../DissolveParticles:emitting") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("../DissolveParticles:emission_rect_extents") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 24, 0 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -35.4461 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -40.649 ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/LegBack/LegBackLower/FootBack/Sprite:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 1.7669 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/LegFront/LegFrontLower/FootBack/Sprite:rotation_degrees") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 7.19214 ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 4.12537 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 6.06945 ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Body/Neck/NeckSprite/NeckGlow:modulate") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ) ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Body/BodySprite/BodyGlow:modulate") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Body/Neck/Headupper/HeadUpperSprite/HeadGlow:modulate") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="Animation" id=21] +resource_name = "chasing" +length = 0.4 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -26.9991, 26.9994 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( -35.9992, -7.99675 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 2 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 32.3015, 44.3723, 41.3636, 17.8021 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 2 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 44.6147, 26.0416, 5.78129, 37.7545 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -119.87, -80.0395 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 8, 44 ), Vector2( 8, 38 ), Vector2( 8, 44 ), Vector2( 8, 38 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -63.8771, -45.6187, -53.8034, -71.6519 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -61.1199, -75.5622, -49.6529, -36.7481 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 21.9642, 21.9642, 1.92975, 11.947 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 17.7387, 17.7387, 45.0376, 31.3882 ] +} + +[sub_resource type="Animation" id=22] +resource_name = "die" +length = 8.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -41.0008, -18.9997 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 37.9987, -18.9981 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -109.576 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 28.215 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 32.3323 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.3821 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.5991, -9.59989 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -23.1788 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 38.5195 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 2 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9, 8 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("../DissolveMask:position") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -28, -300 ), Vector2( 58, -84 ) ] +} +tracks/14/type = "value" +tracks/14/path = NodePath(".:material:shader_param/arc_color") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 2, 8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath(".:material:shader_param/background_color") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 2, 8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 1 ) ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("../ShardParticles:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -197 ), Vector2( 4, 19 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("../ShardParticles:emitting") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0.2, 7 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("../DissolveParticles:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -197 ), Vector2( 4, 19 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("../DissolveParticles:emitting") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 7.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("../DissolveParticles:emission_rect_extents") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 1.8, 2.2, 2.8, 3.2, 3.4, 4, 5.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 24, 0 ), Vector2( 24, 0 ), Vector2( 48, 0 ), Vector2( 48, 0 ), Vector2( 16, 0 ), Vector2( 64, 0 ), Vector2( 24, 0 ), Vector2( 16, 0 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -63.39 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -63.3081 ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 10.1577 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 23.868 ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Body/BodySprite/BodyGlow:visible") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Body/Neck/NeckSprite/NeckGlow:visible") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Body/Neck/Headupper/HeadUpperSprite/HeadGlow:visible") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=23] +resource_name = "grow" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 22.2642 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 34.9602 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -119.87 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:initial_velocity") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 230.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Body/Neck/BreathParticles:lifetime") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 2.0 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("..:hurting") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/16/type = "value" +tracks/16/path = NodePath(".:material:shader_param/background_color") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 2, 3 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 0 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath(".:material:shader_param/arc_color") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 2, 3 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/18/type = "value" +tracks/18/path = NodePath(".:scale") +tracks/18/interp = 2 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1e-05 ), Vector2( 1, 1 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -35.4461 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -40.649 ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 6.06945 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip:rotation_degrees") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 4.12537 ] +} + +[sub_resource type="Animation" id=24] +resource_name = "punching" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.3, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -12.999, -17.0009 ), Vector2( -65.0015, -0.996742 ), Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 0.7, 0.8, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( -31.9996, 22.0018 ), Vector2( -14.9986, -8.9978 ), Vector2( -72.9994, 19.0063 ), Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.2621, 47.7735, 55.2621, 47.7735, 55.2621, 47.7735, 55.2621, 47.7735, 55.2621, 47.7735, 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 22.2642 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 34.9602 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.2, 0.3, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -102.737, -102.737, -102.737, -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.5, 0.7, 0.8, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -119.87, -119.87, -73.1186, -96.9535, -119.87 ] +} +tracks/11/type = "method" +tracks/11/path = NodePath("..") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0.3, 0.8 ), +"transitions": PoolRealArray( 1, 1 ), +"values": [ { +"args": [ ], +"method": "_attack" +}, { +"args": [ ], +"method": "_attack" +} ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0.6 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -35.4461 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -40.649 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 5.718 ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 3.9058 ] +} + +[sub_resource type="Animation" id=25] +resource_name = "pushed" +length = 0.2 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -11.0004, -12 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -16.001, -9.99852 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -104.392 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 44.8764 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.9632 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -21.0393, -8.75184 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -49.0541 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -49.6616 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 2 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 12, 53 ), Vector2( 4, 53 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0.2 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("..:hurting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -86.6408 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -85.4956 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 28.1131 ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 32.6704 ] +} + +[sub_resource type="Animation" id=26] +resource_name = "roar" +length = 1.5 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -41.0008, -18.9997 ), Vector2( -41.0008, -18.9997 ), Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( 37.9987, -18.9981 ), Vector2( 37.9987, -18.9981 ), Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -137.823, -109.576, -109.576, -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.2621, 28.215, 28.215, 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 22.2642 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 34.9602 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.8929, -8.09683 ), Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -102.737, -23.1788, -23.1788, -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -122.256, 38.5195, 38.5195, -122.256 ] +} +tracks/11/type = "method" +tracks/11/path = NodePath("../StateChart") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 1.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "roar_done" ], +"method": "send_event" +} ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0.6 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/14/type = "method" +tracks/14/path = NodePath("..") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0.1 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "_roar" +} ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -35.4461 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -40.649 ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 5.96071 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 3.82105 ] +} + +[sub_resource type="Animation" id=27] +resource_name = "shooting" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 89.3425, 112.803, 112.803, 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -51.8512, 24.5478 ), Vector2( -51.8512, 24.5478 ), Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( -11.3985, 19.1772 ), Vector2( -11.3985, 19.1772 ), Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -137.823, -139.456, -139.456, -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.2621, 22.2965, 22.2965, 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 2 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 45.9167, 45.9167, 45.9167, 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 22.2642 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 34.9602 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 2 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ), Vector2( -31.8378, -8.41777 ), Vector2( -31.8378, -8.41777 ), Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -102.737, -109.655, -109.655, -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -119.87, -131.542, -131.542, -119.87 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.4, 2.7 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/13/type = "method" +tracks/13/path = NodePath("../StateChart") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 3 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "shoot_done" ], +"method": "send_event" +} ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("..:hurting") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.6, 2.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -35.4461 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -40.649 ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("../Fire:playing") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 0.3, 2.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 3.82105 ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 5.96071 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Body/Neck/NeckSprite/NeckGlow:modulate") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 0.4, 2.8, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Body/BodySprite/BodyGlow:modulate") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 0.4, 2.8, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Body/Neck/Headupper/HeadUpperSprite/HeadGlow:modulate") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0, 0.4, 2.8, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="ShaderMaterial" id=28] +resource_local_to_scene = true +shader = ExtResource( 37 ) +shader_param/arc_speed = 1.5 +shader_param/arc_fps = 60.0 +shader_param/arc_scale = 8.0 +shader_param/arc_threshold = 0.2 +shader_param/arc_color = Color( 0.345098, 0.74902, 0.878431, 1 ) +shader_param/gamma = 1.0 +shader_param/flash_rate = 3.0 +shader_param/flash_intensity = 0.0 +shader_param/background_color = Color( 0.396078, 1, 1, 1 ) + +[sub_resource type="CapsuleShape2D" id=13] +radius = 24.0 +height = 16.0 + +[sub_resource type="CapsuleShape2D" id=14] +radius = 17.2705 +height = 33.3754 + +[sub_resource type="CapsuleShape2D" id=15] +radius = 16.0 +height = 55.8645 + +[sub_resource type="CapsuleShape2D" id=16] +radius = 16.0 +height = 55.8645 + +[node name="Famira" type="Node2D"] +script = ExtResource( 1 ) +__meta__ = { +"_edit_horizontal_guides_": [ -211.0 ], +"_edit_vertical_guides_": [ ] +} + +[node name="Collision" type="KinematicBody2D" parent="."] +collision_layer = 4 +collision_mask = 128 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Collision"] +position = Vector2( 12, -64 ) +shape = SubResource( 11 ) + +[node name="ShardParticles" type="CPUParticles2D" parent="."] +material = SubResource( 18 ) +position = Vector2( 4, -165 ) +emitting = false +amount = 48 +lifetime = 4.0 +local_coords = false +texture = ExtResource( 19 ) +emission_shape = 2 +emission_rect_extents = Vector2( 16, 0 ) +direction = Vector2( 0, -2 ) +spread = 60.0 +gravity = Vector2( 0, 24 ) +initial_velocity = 250.0 +initial_velocity_random = 0.35 +linear_accel = -30.19 + +[node name="DissolveParticles" type="CPUParticles2D" parent="."] +material = ExtResource( 17 ) +position = Vector2( 4, -8 ) +z_index = -20 +emitting = false +amount = 16 +local_coords = false +texture = ExtResource( 15 ) +emission_shape = 2 +emission_rect_extents = Vector2( 24, 0 ) +direction = Vector2( 0, -1 ) +gravity = Vector2( 0, 0 ) +initial_velocity = 1.0 +linear_accel = 48.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_curve = SubResource( 19 ) +color = Color( 0.968627, 0.839216, 0.152941, 1 ) + +[node name="DissolveMask" type="Light2D" parent="."] +position = Vector2( -63, -322 ) +texture = ExtResource( 20 ) +mode = 3 +range_item_cull_mask = 32 + +[node name="ChickenMan" type="Node2D" parent="."] +visible = false +light_mask = 33 +material = ExtResource( 17 ) +position = Vector2( 0, -96 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="ChickenMan"] +anims/RESET = SubResource( 2 ) +anims/chasing = SubResource( 4 ) +anims/die = SubResource( 12 ) +anims/grow = SubResource( 17 ) +anims/punching = SubResource( 5 ) +anims/pushed = SubResource( 6 ) +anims/roar = SubResource( 3 ) +anims/shooting = SubResource( 7 ) + +[node name="Hip" type="Node2D" parent="ChickenMan"] +light_mask = 33 +use_parent_material = true +position = Vector2( 8, 39 ) + +[node name="LegBack" type="Sprite" parent="ChickenMan/Hip"] +light_mask = 33 +use_parent_material = true +position = Vector2( -9.49483, 5.9499 ) +rotation = -0.0114762 +scale = Vector2( 2.33905, 2.82204 ) +texture = ExtResource( 11 ) +offset = Vector2( -7.02542, -13.2616 ) + +[node name="Body" type="Sprite" parent="ChickenMan/Hip"] +light_mask = 33 +use_parent_material = true +position = Vector2( -1, 1 ) +rotation = 1.55932 +scale = Vector2( 2.33213, 2.33905 ) +texture = ExtResource( 9 ) +offset = Vector2( -14.8861, -10.6454 ) +flip_v = true + +[node name="HitboxTransform" type="RemoteTransform2D" parent="ChickenMan/Hip/Body"] +light_mask = 33 +position = Vector2( -10.255, -0.546865 ) +rotation = -1.57079 +remote_path = NodePath("../../../../Hitbox/Body") +update_scale = false + +[node name="BackArm" type="Node2D" parent="ChickenMan/Hip/Body"] +light_mask = 33 +use_parent_material = true +position = Vector2( -15.0905, 7.09585 ) +rotation = -1.55929 +scale = Vector2( 0.427524, 0.428792 ) +z_index = -2 +script = ExtResource( 12 ) +texture = ExtResource( 13 ) +segments = 4 +target = NodePath("HandBack") + +[node name="HandBack" type="Sprite" parent="ChickenMan/Hip/Body/BackArm"] +light_mask = 33 +material = SubResource( 1 ) +use_parent_material = true +position = Vector2( -34, 6 ) +rotation = -1.7931 +texture = ExtResource( 14 ) +offset = Vector2( 0, -6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 16, 12 ) + +[node name="BackArmBorder" type="Node2D" parent="ChickenMan/Hip/Body/BackArm"] +show_behind_parent = true +light_mask = 33 +use_parent_material = true +script = ExtResource( 12 ) +texture = ExtResource( 16 ) +segments = 4 +target = NodePath("../HandBack") + +[node name="FrontArm" type="Node2D" parent="ChickenMan/Hip/Body"] +light_mask = 33 +use_parent_material = true +position = Vector2( -15.3626, -6.5891 ) +rotation = -1.55929 +scale = Vector2( 0.427524, 0.428792 ) +z_index = 2 +script = ExtResource( 12 ) +texture = ExtResource( 13 ) +segments = 4 +target = NodePath("HandFront") + +[node name="HandFront" type="Sprite" parent="ChickenMan/Hip/Body/FrontArm"] +light_mask = 33 +material = SubResource( 1 ) +use_parent_material = true +position = Vector2( -31.9996, 22.0018 ) +rotation = -2.09213 +texture = ExtResource( 14 ) +offset = Vector2( 0, -6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 16, 12 ) + +[node name="FrontArmBorder" type="Node2D" parent="ChickenMan/Hip/Body/FrontArm"] +show_behind_parent = true +light_mask = 33 +use_parent_material = true +script = ExtResource( 12 ) +texture = ExtResource( 16 ) +segments = 4 +target = NodePath("../HandFront") + +[node name="Neck" type="Sprite" parent="ChickenMan/Hip/Body"] +show_behind_parent = true +light_mask = 33 +use_parent_material = true +position = Vector2( -25.8929, -8.09683 ) +rotation = -2.40547 +scale = Vector2( 1.3366, 1.4288 ) +z_index = 1 +texture = ExtResource( 10 ) +offset = Vector2( -12.5338, -3.19571 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="ChickenMan/Hip/Body/Neck"] +light_mask = 33 +position = Vector2( 7.47667, -8.4856 ) +rotation = -2.96856 +remote_path = NodePath("../../../../../Hitbox/Brain") +update_scale = false + +[node name="BreathParticles" type="CPUParticles2D" parent="ChickenMan/Hip/Body/Neck"] +light_mask = 33 +position = Vector2( 2.97876, -8.17331 ) +rotation = 0.437951 +scale = Vector2( 0.724233, 0.497597 ) +z_index = -1 +emitting = false +amount = 80 +lifetime = 2.0 +lifetime_randomness = 0.5 +local_coords = false +draw_order = 1 +texture = ExtResource( 15 ) +emission_shape = 2 +emission_rect_extents = Vector2( 0, 0 ) +direction = Vector2( -1, 0 ) +spread = 5.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 230.0 +initial_velocity_random = 0.25 +angular_velocity = 360.0 +angular_velocity_random = 1.0 +tangential_accel = 100.0 +tangential_accel_random = 1.0 +damping = 350.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 4.0 +scale_amount_random = 0.5 +scale_amount_curve = SubResource( 8 ) +color_ramp = SubResource( 9 ) + +[node name="Headlower" type="Sprite" parent="ChickenMan/Hip/Body/Neck"] +light_mask = 33 +use_parent_material = true +position = Vector2( 6.09458, -5.24508 ) +rotation = 0.964506 +scale = Vector2( 0.72205, 0.726798 ) +z_index = 1 +texture = ExtResource( 8 ) +offset = Vector2( -23.6288, 1.97347 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="ChickenMan/Hip/Body/Neck/Headlower"] +light_mask = 33 +position = Vector2( -15.6932, 6.83872 ) +rotation = -4.70641 +remote_path = NodePath("../../../../../../Hitbox/LowerJaw") +update_scale = false + +[node name="Headupper" type="Sprite" parent="ChickenMan/Hip/Body/Neck"] +light_mask = 33 +use_parent_material = true +position = Vector2( 6.70938, -6.04151 ) +rotation = 0.801398 +scale = Vector2( 0.72205, 0.49751 ) +z_index = 1 +texture = ExtResource( 9 ) +offset = Vector2( -21.4816, 1.20875 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="ChickenMan/Hip/Body/Neck/Headupper"] +light_mask = 33 +position = Vector2( -15.711, -8.80663 ) +rotation = -1.57994 +remote_path = NodePath("../../../../../../Hitbox/UpperJaw") +update_scale = false + +[node name="Eye" type="Sprite" parent="ChickenMan/Hip/Body/Neck/Headupper"] +light_mask = 33 +use_parent_material = true +position = Vector2( -22.5774, -9.61752 ) +texture = ExtResource( 7 ) +offset = Vector2( 20.9715, 12.1291 ) + +[node name="LegFront" type="Sprite" parent="ChickenMan/Hip"] +light_mask = 33 +use_parent_material = true +position = Vector2( 12.9916, 6.2433 ) +rotation = -0.0114762 +scale = Vector2( 2.33905, 2.82204 ) +texture = ExtResource( 11 ) +offset = Vector2( -6.66188, -13.4386 ) + +[node name="Graphics" type="Node2D" parent="."] +light_mask = 33 +material = ExtResource( 17 ) +position = Vector2( 0, -96 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Graphics"] +unique_name_in_owner = true +anims/RESET = SubResource( 20 ) +anims/chasing = SubResource( 21 ) +anims/die = SubResource( 22 ) +anims/grow = SubResource( 23 ) +anims/punching = SubResource( 24 ) +anims/pushed = SubResource( 25 ) +anims/roar = SubResource( 26 ) +anims/shooting = SubResource( 27 ) + +[node name="Hip" type="Node2D" parent="Graphics"] +light_mask = 33 +use_parent_material = true +position = Vector2( 8, 39 ) + +[node name="LegBack" type="Node2D" parent="Graphics/Hip"] +light_mask = 33 +use_parent_material = true +position = Vector2( -15, -9 ) +rotation = 0.610171 + +[node name="LegSprite" type="Sprite" parent="Graphics/Hip/LegBack"] +light_mask = 33 +use_parent_material = true +texture = ExtResource( 21 ) + +[node name="LegBackLower" type="Node2D" parent="Graphics/Hip/LegBack"] +use_parent_material = true +position = Vector2( 0.540121, 33.0107 ) +rotation = -0.709459 + +[node name="LegBackSprite" type="Sprite" parent="Graphics/Hip/LegBack/LegBackLower"] +light_mask = 33 +use_parent_material = true +z_index = -1 +texture = ExtResource( 29 ) + +[node name="FootBack" type="Node2D" parent="Graphics/Hip/LegBack/LegBackLower"] +use_parent_material = true +position = Vector2( 1.51298, 29.934 ) +rotation = 0.0720013 + +[node name="Sprite" type="Sprite" parent="Graphics/Hip/LegBack/LegBackLower/FootBack"] +light_mask = 33 +use_parent_material = true +position = Vector2( 0.00275612, -0.0820584 ) +rotation = 0.0308382 +texture = ExtResource( 32 ) +offset = Vector2( -7.25486, 7.03402 ) + +[node name="Body" type="Node2D" parent="Graphics/Hip"] +light_mask = 33 +use_parent_material = true +position = Vector2( -1, 1 ) +rotation = 1.55932 +scale = Vector2( 2.33213, 2.33905 ) + +[node name="BodySprite" type="Sprite" parent="Graphics/Hip/Body"] +light_mask = 33 +use_parent_material = true +position = Vector2( -15.5869, -11.0406 ) +scale = Vector2( 0.427524, 0.428792 ) +texture = ExtResource( 22 ) +offset = Vector2( 32, 0 ) + +[node name="BodyGlow" type="Sprite" parent="Graphics/Hip/Body/BodySprite"] +visible = false +modulate = Color( 1, 1, 1, 0 ) +material = SubResource( 28 ) +texture = ExtResource( 35 ) +offset = Vector2( 32, 0 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Graphics/Hip/Body"] +light_mask = 33 +position = Vector2( -10.255, -0.546865 ) +rotation = -1.57079 +remote_path = NodePath("../../../../Hitbox/Body") +update_scale = false + +[node name="BackArm" type="Node2D" parent="Graphics/Hip/Body"] +light_mask = 33 +use_parent_material = true +position = Vector2( -20.2307, 6.609 ) +rotation = -1.55929 +scale = Vector2( 0.427524, 0.428792 ) +z_index = -2 +script = ExtResource( 12 ) +texture = ExtResource( 31 ) +segments = 6 +target = NodePath("HandBack") + +[node name="HandBack" type="Sprite" parent="Graphics/Hip/Body/BackArm"] +light_mask = 33 +material = SubResource( 1 ) +use_parent_material = true +position = Vector2( -34, 6 ) +rotation = -1.7931 +texture = ExtResource( 30 ) +offset = Vector2( 0, -6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 16, 16 ) + +[node name="BackArmBorder" type="Node2D" parent="Graphics/Hip/Body/BackArm"] +show_behind_parent = true +light_mask = 33 +use_parent_material = true +script = ExtResource( 12 ) +texture = ExtResource( 33 ) +segments = 6 +target = NodePath("../HandBack") + +[node name="FrontArm" type="Node2D" parent="Graphics/Hip/Body"] +light_mask = 33 +use_parent_material = true +position = Vector2( -20.4922, -7.93076 ) +rotation = -1.55929 +scale = Vector2( 0.427524, 0.428792 ) +z_index = 2 +script = ExtResource( 12 ) +texture = ExtResource( 31 ) +segments = 6 +target = NodePath("HandFront") + +[node name="HandFront" type="Sprite" parent="Graphics/Hip/Body/FrontArm"] +light_mask = 33 +material = SubResource( 1 ) +use_parent_material = true +position = Vector2( -31.9996, 22.0018 ) +rotation = -2.09213 +texture = ExtResource( 30 ) +offset = Vector2( 0, -6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 16, 16 ) + +[node name="FrontArmBorder" type="Node2D" parent="Graphics/Hip/Body/FrontArm"] +show_behind_parent = true +light_mask = 33 +use_parent_material = true +script = ExtResource( 12 ) +texture = ExtResource( 33 ) +segments = 6 +target = NodePath("../HandFront") + +[node name="Neck" type="Node2D" parent="Graphics/Hip/Body"] +show_behind_parent = true +light_mask = 33 +use_parent_material = true +position = Vector2( -25.8929, -8.09683 ) +rotation = -2.40547 +scale = Vector2( 1.3366, 1.4288 ) +z_index = 1 + +[node name="NeckSprite" type="Sprite" parent="Graphics/Hip/Body/Neck"] +light_mask = 33 +use_parent_material = true +rotation = 0.898541 +scale = Vector2( 0.308458, 0.311881 ) +z_index = -2 +texture = ExtResource( 23 ) + +[node name="NeckGlow" type="Sprite" parent="Graphics/Hip/Body/Neck/NeckSprite"] +visible = false +modulate = Color( 1, 1, 1, 0 ) +material = SubResource( 28 ) +texture = ExtResource( 36 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Graphics/Hip/Body/Neck"] +light_mask = 33 +position = Vector2( 7.47667, -8.4856 ) +rotation = -2.96856 +remote_path = NodePath("../../../../../Hitbox/Brain") +update_scale = false + +[node name="BreathParticles" type="CPUParticles2D" parent="Graphics/Hip/Body/Neck"] +light_mask = 33 +position = Vector2( 2.97876, -8.17331 ) +rotation = 0.437951 +scale = Vector2( 0.724233, 0.497597 ) +z_index = -1 +emitting = false +amount = 80 +lifetime = 2.0 +lifetime_randomness = 0.5 +local_coords = false +draw_order = 1 +texture = ExtResource( 28 ) +emission_shape = 2 +emission_rect_extents = Vector2( 0, 0 ) +direction = Vector2( -1, 0 ) +spread = 5.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 230.0 +initial_velocity_random = 0.25 +angular_velocity = 360.0 +angular_velocity_random = 1.0 +tangential_accel = 100.0 +tangential_accel_random = 1.0 +damping = 350.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 4.0 +scale_amount_random = 0.5 +scale_amount_curve = SubResource( 8 ) +color_ramp = SubResource( 9 ) + +[node name="Headlower" type="Node2D" parent="Graphics/Hip/Body/Neck"] +light_mask = 33 +use_parent_material = true +position = Vector2( 6.09458, -5.24508 ) +rotation = 0.964506 +scale = Vector2( 0.72205, 0.726798 ) +z_index = 1 + +[node name="HeadLowerSprite" type="Sprite" parent="Graphics/Hip/Body/Neck/Headlower"] +light_mask = 33 +use_parent_material = true +position = Vector2( -24.4207, 1.14932 ) +scale = Vector2( 0.427134, 0.429136 ) +texture = ExtResource( 24 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Graphics/Hip/Body/Neck/Headlower"] +light_mask = 33 +position = Vector2( -15.6932, 6.83872 ) +rotation = 1.57678 +remote_path = NodePath("../../../../../../Hitbox/LowerJaw") +update_scale = false + +[node name="TendrilEnd1" type="Node2D" parent="Graphics/Hip/Body/Neck/Headlower"] +position = Vector2( -30.5343, 9.51069 ) + +[node name="TendrilEnd2" type="Node2D" parent="Graphics/Hip/Body/Neck/Headlower"] +position = Vector2( -25.9981, 10.4675 ) + +[node name="TendrilEnd3" type="Node2D" parent="Graphics/Hip/Body/Neck/Headlower"] +position = Vector2( -22.5259, 9.9095 ) + +[node name="TendrilEnd4" type="Node2D" parent="Graphics/Hip/Body/Neck/Headlower"] +position = Vector2( -17.1706, 10.3132 ) + +[node name="Headupper" type="Node2D" parent="Graphics/Hip/Body/Neck"] +light_mask = 33 +use_parent_material = true +position = Vector2( 6.70938, -6.04151 ) +rotation = 0.801398 +scale = Vector2( 0.72205, 0.49751 ) +z_index = 1 + +[node name="HeadUpperSprite" type="Sprite" parent="Graphics/Hip/Body/Neck/Headupper"] +light_mask = 33 +use_parent_material = true +position = Vector2( -21.2833, 1.46694 ) +scale = Vector2( 0.427229, 0.625891 ) +texture = ExtResource( 25 ) +centered = false +offset = Vector2( -45, -72 ) + +[node name="HeadGlow" type="Sprite" parent="Graphics/Hip/Body/Neck/Headupper/HeadUpperSprite"] +visible = false +modulate = Color( 1, 1, 1, 0 ) +material = SubResource( 28 ) +texture = ExtResource( 34 ) +centered = false +offset = Vector2( -45, -72 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Graphics/Hip/Body/Neck/Headupper"] +light_mask = 33 +position = Vector2( -15.711, -8.80663 ) +rotation = -1.57994 +remote_path = NodePath("../../../../../../Hitbox/UpperJaw") +update_scale = false + +[node name="MouthTendril1" type="Node2D" parent="Graphics/Hip/Body/Neck/Headupper"] +light_mask = 33 +use_parent_material = true +position = Vector2( -31.9772, -4.35265 ) +scale = Vector2( 0.214, 0.626 ) +z_index = -4 +script = ExtResource( 12 ) +texture = ExtResource( 26 ) +segments = 10 +target = NodePath("../../Headlower/TendrilEnd1") + +[node name="MouthTendril2" type="Node2D" parent="Graphics/Hip/Body/Neck/Headupper"] +light_mask = 33 +use_parent_material = true +position = Vector2( -28.5394, -4.15707 ) +scale = Vector2( 0.214, 0.626 ) +z_index = -4 +script = ExtResource( 12 ) +texture = ExtResource( 26 ) +segments = 10 +target = NodePath("../../Headlower/TendrilEnd2") + +[node name="MouthTendril3" type="Node2D" parent="Graphics/Hip/Body/Neck/Headupper"] +light_mask = 33 +use_parent_material = true +position = Vector2( -24.8826, -4.80403 ) +scale = Vector2( 0.214, 0.626 ) +z_index = -4 +script = ExtResource( 12 ) +texture = ExtResource( 26 ) +segments = 10 +target = NodePath("../../Headlower/TendrilEnd3") + +[node name="MouthTendril4" type="Node2D" parent="Graphics/Hip/Body/Neck/Headupper"] +light_mask = 33 +use_parent_material = true +position = Vector2( -20.0951, -4.9203 ) +scale = Vector2( 0.214, 0.626 ) +z_index = -4 +script = ExtResource( 12 ) +texture = ExtResource( 26 ) +segments = 10 +target = NodePath("../../Headlower/TendrilEnd4") + +[node name="LegFront" type="Node2D" parent="Graphics/Hip"] +light_mask = 33 +use_parent_material = true +position = Vector2( 12, -8 ) +rotation = 0.388584 +z_index = 1 + +[node name="LegSprite" type="Sprite" parent="Graphics/Hip/LegFront"] +light_mask = 33 +use_parent_material = true +texture = ExtResource( 21 ) + +[node name="LegFrontLower" type="Node2D" parent="Graphics/Hip/LegFront"] +use_parent_material = true +position = Vector2( -0.355755, 30.998 ) +rotation = -0.618651 + +[node name="Sprite" type="Sprite" parent="Graphics/Hip/LegFront/LegFrontLower"] +light_mask = 33 +use_parent_material = true +z_index = -1 +texture = ExtResource( 29 ) + +[node name="FootBack" type="Node2D" parent="Graphics/Hip/LegFront/LegFrontLower"] +use_parent_material = true +position = Vector2( 1.51297, 29.934 ) +rotation = 0.105932 + +[node name="Sprite" type="Sprite" parent="Graphics/Hip/LegFront/LegFrontLower/FootBack"] +light_mask = 33 +use_parent_material = true +position = Vector2( 0.110806, 0.250104 ) +rotation = 0.125527 +texture = ExtResource( 32 ) +offset = Vector2( -7.36291, 6.70186 ) + +[node name="Hitbox" type="Area2D" parent="."] +position = Vector2( 8, -56 ) +collision_layer = 128 +collision_mask = 128 +monitorable = false + +[node name="Body" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 0.00459766, -23.9291 ) +rotation = -0.0114701 +shape = SubResource( 13 ) + +[node name="Brain" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 11.5069, -96.7914 ) +rotation = 2.48158 +z_index = 100 +shape = SubResource( 14 ) + +[node name="LowerJaw" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( -21.3083, -76.1164 ) +rotation = 1.66395 +z_index = 100 +shape = SubResource( 15 ) + +[node name="UpperJaw" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( -21.8184, -103.259 ) +rotation = -1.66239 +z_index = 100 +shape = SubResource( 16 ) + +[node name="StateChart" type="Node" parent="."] +script = ExtResource( 3 ) + +[node name="Root" type="Node" parent="StateChart"] +script = ExtResource( 4 ) +initial_state = NodePath("Growing") + +[node name="On StartPush" type="Node" parent="StateChart/Root"] +script = ExtResource( 6 ) +to = NodePath("../PushedBack") +event = "start_push" + +[node name="On PlayerDead" type="Node" parent="StateChart/Root"] +script = ExtResource( 6 ) +to = NodePath("../Roar") +event = "player_dead" + +[node name="On Die" type="Node" parent="StateChart/Root"] +script = ExtResource( 6 ) +to = NodePath("../Dying") +event = "die" + +[node name="Growing" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On Transformed" type="Node" parent="StateChart/Root/Growing"] +script = ExtResource( 6 ) +to = NodePath("../../Roar") +event = "transformed" + +[node name="Roar" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On RoarDone" type="Node" parent="StateChart/Root/Roar"] +script = ExtResource( 6 ) +to = NodePath("../../Chasing") +event = "roar_done" +guard_expression = "not player_dead" + +[node name="Chasing" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On Cooldown" type="Node" parent="StateChart/Root/Chasing"] +script = ExtResource( 6 ) +to = NodePath("../../Shooting") +delay = 2.0 + +[node name="On InRange" type="Node" parent="StateChart/Root/Chasing"] +script = ExtResource( 6 ) +to = NodePath("../../Punching") +event = "in_range" + +[node name="Punching" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On OutOfRange" type="Node" parent="StateChart/Root/Punching"] +script = ExtResource( 6 ) +to = NodePath("../../Roar") +event = "out_of_range" + +[node name="PunchCooldown" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On Cooldown" type="Node" parent="StateChart/Root/PunchCooldown"] +script = ExtResource( 6 ) +to = NodePath("../../Roar") +delay = 0.5 + +[node name="Shooting" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On ShootDone" type="Node" parent="StateChart/Root/Shooting"] +script = ExtResource( 6 ) +to = NodePath("../../Chasing") +event = "shoot_done" + +[node name="PushedBack" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On StopPush" type="Node" parent="StateChart/Root/PushedBack"] +script = ExtResource( 6 ) +to = NodePath("../../Roar") +event = "stop_push" + +[node name="Dying" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="InRangeCast" type="RayCast2D" parent="."] +position = Vector2( 0, -64 ) +enabled = true +cast_to = Vector2( -48, 0 ) +collision_mask = 4 +collide_with_areas = true +collide_with_bodies = false + +[node name="OutRangeCast" type="RayCast2D" parent="."] +position = Vector2( 0, -72 ) +enabled = true +cast_to = Vector2( -64, 0 ) +collision_mask = 4 +collide_with_areas = true +collide_with_bodies = false + +[node name="ShootRangeCast" type="RayCast2D" parent="."] +position = Vector2( 0, -80 ) +enabled = true +cast_to = Vector2( -192, 0 ) +collision_mask = 4 +collide_with_areas = true +collide_with_bodies = false + +[node name="Grumble" type="AudioStreamPlayer" parent="."] + +[node name="Fire" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 27 ) +volume_db = -10.0 + +[node name="Tween" type="Tween" parent="."] + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] +[connection signal="state_entered" from="StateChart/Root/Roar" to="." method="_on_Roar_state_entered" flags=3] +[connection signal="state_entered" from="StateChart/Root/Chasing" to="." method="_on_Chasing_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Chasing" to="." method="_on_Chasing_state_physics_processing"] +[connection signal="state_entered" from="StateChart/Root/Punching" to="." method="_on_Punching_state_entered"] +[connection signal="state_entered" from="StateChart/Root/PunchCooldown" to="." method="_on_PunchCooldown_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Shooting" to="." method="_on_Shooting_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Shooting" to="." method="_on_Shooting_state_physics_processing"] +[connection signal="state_entered" from="StateChart/Root/PushedBack" to="." method="_on_PushedBack_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/PushedBack" to="." method="_on_PushedBack_state_physics_processing"] +[connection signal="state_entered" from="StateChart/Root/Dying" to="." method="_on_Dying_state_entered"] diff --git a/objects/enemy/boss/intelli_head.tscn b/objects/enemy/boss/intelli_head.tscn new file mode 100644 index 0000000..ed77b03 --- /dev/null +++ b/objects/enemy/boss/intelli_head.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://graphics/npc/intelli_head.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/constant_bleed.tscn" type="PackedScene" id=2] + +[sub_resource type="PhysicsMaterial" id=17] +bounce = 0.5 + +[sub_resource type="CircleShape2D" id=16] +radius = 5.0 + +[node name="IntelliHead" type="RigidBody2D"] +position = Vector2( 0, -4 ) +mass = 2.0 +physics_material_override = SubResource( 17 ) +linear_velocity = Vector2( -80, -80 ) + +[node name="DeathSplatter" parent="." instance=ExtResource( 2 )] +position = Vector2( -1, 5 ) +emission_shape = 0 +direction = Vector2( 0, 1 ) +spread = 60.0 + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) +flip_h = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 16 ) diff --git a/objects/enemy/boss/scrump.gd b/objects/enemy/boss/scrump.gd new file mode 100644 index 0000000..90901a1 --- /dev/null +++ b/objects/enemy/boss/scrump.gd @@ -0,0 +1,69 @@ +extends "res://objects/enemy/enemy_move_sidesideupdown.gd" + +signal entered_phase(phase) + +#Stats +var hp = 3 +var arrow_speed = 80 +var shoot_time = Vector2(0.4,0.7) +export var phase2_speed = 100 +export var phase3_speed = 150 +#Onready +onready var shoot_timer = $ShootTimer +onready var shootpoint = $Position2D +onready var blood_position = $BloodPosition +onready var shoot_sound = $ShootSound +onready var map = get_owner() +const Projectile = preload("res://objects/enemy/boss/scrump_projectile.tscn") +const Gore = preload("res://objects/enemy/boss/scrump_gore.tscn") + + +func _ready(): + if Debug.sus_monster == true: sus_monster() + seed(hash("HEROMARK2")) + # adjust to difficulty + arrow_speed *= Game.enemy_speed_factor + shoot_time /= Game.enemy_speed_factor + speed *= Game.enemy_speed_factor + phase2_speed *= Game.enemy_speed_factor + phase3_speed *= Game.enemy_speed_factor + +func shoot(): + var r = rand_range(0.8,1.2) + shoot_sound.pitch_scale = r + shoot_sound.play() + Game.instance_node(Projectile,shootpoint.global_position.x,stepify(shootpoint.global_position.y,8),map) + +func _on_ShootTimer_timeout(): + shoot_timer.start(rand_range(shoot_time.x,shoot_time.y)) + shoot() + +func die(): + hp -= 1 + Audio.play_sound(Audio.a_scrump_hurt,Audio.ac_boss) + match hp: + 2: + emit_signal("entered_phase", 2) + speed = phase2_speed + shoot_time = Vector2(0.4,0.5) + 1: + emit_signal("entered_phase", 3) + speed = phase3_speed + shoot_time = Vector2(0.3,0.5) + 0: + Game.instance_node(Gore,position.x,position.y,map) + Audio.play_sound(Audio.a_scrump_die,Audio.ac_boss) + emit_signal("entered_phase",4) + queue_free() + + #Bleed particles + var death_particles = DeathParticles.instance() + death_particles.global_position = blood_position.global_position + death_particles.emitting = true + death_particles.amount = 64 + death_particles.lifetime = 0.45 + get_parent().add_child(death_particles) + +func sus_monster(): + $Sus.visible = true + $Sprite.visible = false diff --git a/objects/enemy/boss/scrump.tscn b/objects/enemy/boss/scrump.tscn new file mode 100644 index 0000000..ccffb1a --- /dev/null +++ b/objects/enemy/boss/scrump.tscn @@ -0,0 +1,110 @@ +[gd_scene load_steps=11 format=2] + +[ext_resource path="res://objects/enemy/boss/scrump.gd" type="Script" id=1] +[ext_resource path="res://audio/sounds/gover.ogg" type="AudioStream" id=2] +[ext_resource path="res://audio/sounds/die.ogg" type="AudioStream" id=3] +[ext_resource path="res://graphics/enemy/boss/the_scrump.png" type="Texture" id=4] +[ext_resource path="res://audio/sounds/scrump_shot.ogg" type="AudioStream" id=5] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 5.5, 9.5 ) + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 20, 27 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 4 ) +region = Rect2( 0, 0, 55, 64 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 4 ) +region = Rect2( 55, 0, 55, 64 ) + +[sub_resource type="SpriteFrames" id=5] +animations = [ { +"frames": [ SubResource( 3 ), SubResource( 4 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] + +[node name="TheScrump" type="Node2D" groups=["scrump"]] +script = ExtResource( 1 ) +move_direction = 1 +phase2_speed = 75 +phase3_speed = 100 + +[node name="Sus" type="ColorRect" parent="."] +visible = false +margin_left = 8.0 +margin_right = 40.0 +margin_bottom = 40.0 +color = Color( 0.960784, 0.2, 0.258824, 1 ) + +[node name="BackPack" type="ColorRect" parent="Sus"] +margin_left = 24.0 +margin_top = 8.0 +margin_right = 40.0 +margin_bottom = 32.0 +color = Color( 0.960784, 0.2, 0.258824, 1 ) + +[node name="LegR" type="ColorRect" parent="Sus"] +margin_top = 40.0 +margin_right = 8.0 +margin_bottom = 48.0 +color = Color( 0.960784, 0.2, 0.258824, 1 ) + +[node name="LegL" type="ColorRect" parent="Sus"] +margin_left = 24.0 +margin_top = 40.0 +margin_right = 32.0 +margin_bottom = 48.0 +color = Color( 0.960784, 0.2, 0.258824, 1 ) + +[node name="Visor" type="ColorRect" parent="Sus"] +margin_left = -8.0 +margin_top = 8.0 +margin_right = 16.0 +margin_bottom = 24.0 +color = Color( 0.27451, 0.796078, 0.756863, 1 ) + +[node name="WeakSpot" type="Area2D" parent="." groups=["boss_weakspot", "enemy_hitbox"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="WeakSpot"] +position = Vector2( 5.5, 14.5 ) +shape = SubResource( 1 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["blocks_arrow", "enemy_hitbox"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 32, 32 ) +shape = SubResource( 2 ) + +[node name="ShootTimer" type="Timer" parent="."] +wait_time = 0.5 +one_shot = true +autostart = true + +[node name="Position2D" type="Position2D" parent="."] +position = Vector2( 14, 29 ) + +[node name="Sprite" type="AnimatedSprite" parent="."] +position = Vector2( 26, 27 ) +frames = SubResource( 5 ) +playing = true + +[node name="BloodPosition" type="Position2D" parent="."] +position = Vector2( 0, 14 ) + +[node name="HurtSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 3 ) + +[node name="DeathSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 2 ) + +[node name="ShootSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 5 ) +volume_db = -8.0 + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="timeout" from="ShootTimer" to="." method="_on_ShootTimer_timeout"] diff --git a/objects/enemy/boss/scrump_gore.tscn b/objects/enemy/boss/scrump_gore.tscn new file mode 100644 index 0000000..576d0bd --- /dev/null +++ b/objects/enemy/boss/scrump_gore.tscn @@ -0,0 +1,368 @@ +[gd_scene load_steps=37 format=2] + +[ext_resource path="res://objects/enemy/constant_bleed.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/tentacle5.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/tentacle1.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/brain4.png" type="Texture" id=4] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/eyestalk.png" type="Texture" id=5] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/eye.png" type="Texture" id=6] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/tentacle3.png" type="Texture" id=7] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/tentacle6.png" type="Texture" id=8] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/brain1.png" type="Texture" id=9] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/headlower.png" type="Texture" id=10] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/brain3.png" type="Texture" id=11] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/brain2.png" type="Texture" id=12] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/headupper.png" type="Texture" id=13] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/tentacle4.png" type="Texture" id=14] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/tentacle2.png" type="Texture" id=15] +[ext_resource path="res://scripts/launch_rigid.gd" type="Script" id=16] +[ext_resource path="res://shaders/scale3x.gdshader" type="Shader" id=17] + +[sub_resource type="PhysicsMaterial" id=21] +bounce = 0.3 + +[sub_resource type="ShaderMaterial" id=22] +shader = ExtResource( 17 ) +shader_param/pixel_scale = 1.0 + +[sub_resource type="CapsuleShape2D" id=17] +radius = 7.26425 +height = 4.59118 + +[sub_resource type="CapsuleShape2D" id=18] +radius = 4.7065 +height = 9.55582 + +[sub_resource type="CapsuleShape2D" id=19] +radius = 7.26425 +height = 6.06268 + +[sub_resource type="CapsuleShape2D" id=20] +radius = 2.66902 +height = 10.9959 + +[sub_resource type="PhysicsMaterial" id=4] +bounce = 0.9 + +[sub_resource type="CircleShape2D" id=3] +radius = 6.0 + +[sub_resource type="CapsuleShape2D" id=13] +radius = 1.27316 +height = 11.6157 + +[sub_resource type="CapsuleShape2D" id=14] +radius = 1.27316 +height = 9.45369 + +[sub_resource type="CapsuleShape2D" id=15] +radius = 1.27316 +height = 9.45369 + +[sub_resource type="CapsuleShape2D" id=5] +radius = 12.0465 +height = 15.9447 + +[sub_resource type="CapsuleShape2D" id=6] +radius = 7.00002 + +[sub_resource type="CapsuleShape2D" id=7] +radius = 2.0 +height = 10.5018 + +[sub_resource type="CapsuleShape2D" id=8] +radius = 2.0 +height = 12.0 + +[sub_resource type="CapsuleShape2D" id=9] +radius = 3.0 +height = 14.0 + +[sub_resource type="CapsuleShape2D" id=10] +radius = 3.0 +height = 12.0 + +[sub_resource type="CapsuleShape2D" id=11] +radius = 2.0 +height = 12.0 + +[sub_resource type="CapsuleShape2D" id=12] +radius = 3.0 +height = 14.0 + +[node name="Gore" type="Node2D"] + +[node name="Brain1" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) + +[node name="Sprite" type="Sprite" parent="Brain1"] +material = SubResource( 22 ) +position = Vector2( 27, 27 ) +texture = ExtResource( 9 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Brain1"] +position = Vector2( 23, 18 ) +rotation = 0.504296 +shape = SubResource( 17 ) + +[node name="DeathSplatter" parent="Brain1" instance=ExtResource( 1 )] +position = Vector2( 29, 9 ) + +[node name="DeathSplatter2" parent="Brain1" instance=ExtResource( 1 )] +position = Vector2( 15, 24 ) + +[node name="Brain2" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) + +[node name="DeathSplatter" parent="Brain2" instance=ExtResource( 1 )] +position = Vector2( 48, 11 ) + +[node name="DeathSplatter2" parent="Brain2" instance=ExtResource( 1 )] +position = Vector2( 37, 29 ) + +[node name="Sprite2" type="Sprite" parent="Brain2"] +material = SubResource( 22 ) +position = Vector2( 27, 27 ) +texture = ExtResource( 12 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Brain2"] +position = Vector2( 47, 23 ) +rotation = 0.34434 +shape = SubResource( 18 ) + +[node name="Brain3" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) + +[node name="DeathSplatter" parent="Brain3" instance=ExtResource( 1 )] +position = Vector2( 44, 7 ) + +[node name="DeathSplatter2" parent="Brain3" instance=ExtResource( 1 )] +position = Vector2( 32, 25 ) + +[node name="Sprite3" type="Sprite" parent="Brain3"] +material = SubResource( 22 ) +position = Vector2( 27, 27 ) +texture = ExtResource( 11 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Brain3"] +position = Vector2( 38, 17 ) +rotation = 0.504296 +shape = SubResource( 19 ) + +[node name="Brain4" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) + +[node name="DeathSplatter" parent="Brain4" instance=ExtResource( 1 )] +position = Vector2( 49, 23 ) + +[node name="Sprite3" type="Sprite" parent="Brain4"] +material = SubResource( 22 ) +position = Vector2( 27, 27 ) +texture = ExtResource( 4 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Brain4"] +position = Vector2( 46, 32 ) +rotation = 0.294044 +shape = SubResource( 20 ) + +[node name="Eye" type="RigidBody2D" parent="."] +position = Vector2( 5, 15 ) +physics_material_override = SubResource( 4 ) +script = ExtResource( 16 ) + +[node name="DeathSplatter" parent="Eye" instance=ExtResource( 1 )] +position = Vector2( 1, -6 ) + +[node name="Sprite" type="Sprite" parent="Eye"] +material = SubResource( 22 ) +position = Vector2( 21, 12 ) +texture = ExtResource( 6 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Eye"] +shape = SubResource( 3 ) + +[node name="Eyestalk" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) +script = ExtResource( 16 ) + +[node name="DeathSplatter" parent="Eyestalk" instance=ExtResource( 1 )] +position = Vector2( 6, 8 ) + +[node name="DeathSplatter2" parent="Eyestalk" instance=ExtResource( 1 )] +position = Vector2( 25, 5 ) + +[node name="Sprite" type="Sprite" parent="Eyestalk"] +material = SubResource( 22 ) +position = Vector2( 26, 27 ) +texture = ExtResource( 5 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Eyestalk"] +position = Vector2( 9, 3 ) +rotation = 0.669829 +shape = SubResource( 13 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="Eyestalk"] +position = Vector2( 18, -3 ) +rotation = 1.57079 +shape = SubResource( 14 ) + +[node name="CollisionShape2D3" type="CollisionShape2D" parent="Eyestalk"] +position = Vector2( 25, 1 ) +rotation = 2.57212 +shape = SubResource( 15 ) + +[node name="UpperHead" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) +script = ExtResource( 16 ) + +[node name="DeathSplatter" parent="UpperHead" instance=ExtResource( 1 )] +position = Vector2( 41, 10 ) + +[node name="DeathSplatter2" parent="UpperHead" instance=ExtResource( 1 )] +position = Vector2( 49, 20 ) + +[node name="DeathSplatter3" parent="UpperHead" instance=ExtResource( 1 )] +position = Vector2( 42, 26 ) + +[node name="DeathSplatter4" parent="UpperHead" instance=ExtResource( 1 )] +position = Vector2( 33, 28 ) + +[node name="Sprite" type="Sprite" parent="UpperHead"] +material = SubResource( 22 ) +position = Vector2( 26, 27 ) +texture = ExtResource( 13 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="UpperHead"] +position = Vector2( 33, 19 ) +rotation = 1.59593 +shape = SubResource( 5 ) + +[node name="LowerHead" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) +script = ExtResource( 16 ) + +[node name="DeathSplatter" parent="LowerHead" instance=ExtResource( 1 )] +position = Vector2( 32, 28 ) + +[node name="DeathSplatter2" parent="LowerHead" instance=ExtResource( 1 )] +position = Vector2( 43, 27 ) + +[node name="DeathSplatter3" parent="LowerHead" instance=ExtResource( 1 )] +position = Vector2( 18, 37 ) + +[node name="DeathSplatter4" parent="LowerHead" instance=ExtResource( 1 )] +position = Vector2( 26, 38 ) + +[node name="DeathSplatter5" parent="LowerHead" instance=ExtResource( 1 )] +position = Vector2( 35, 37 ) + +[node name="DeathSplatter6" parent="LowerHead" instance=ExtResource( 1 )] +position = Vector2( 44, 37 ) + +[node name="Sprite" type="Sprite" parent="LowerHead"] +material = SubResource( 22 ) +position = Vector2( 26, 27 ) +texture = ExtResource( 10 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="LowerHead"] +position = Vector2( 35, 33 ) +rotation = 1.57079 +shape = SubResource( 6 ) + +[node name="Tentacle1" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) +script = ExtResource( 16 ) + +[node name="DeathSplatter" parent="Tentacle1" instance=ExtResource( 1 )] +position = Vector2( 19, 37 ) + +[node name="Sprite" type="Sprite" parent="Tentacle1"] +material = SubResource( 22 ) +position = Vector2( 26, 27 ) +texture = ExtResource( 3 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Tentacle1"] +position = Vector2( 19, 45 ) +rotation = 0.188719 +shape = SubResource( 7 ) + +[node name="Tentacle2" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) +script = ExtResource( 16 ) + +[node name="DeathSplatter" parent="Tentacle2" instance=ExtResource( 1 )] +position = Vector2( 23, 38 ) + +[node name="Sprite" type="Sprite" parent="Tentacle2"] +material = SubResource( 22 ) +position = Vector2( 26, 27 ) +texture = ExtResource( 15 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Tentacle2"] +position = Vector2( 24, 47 ) +rotation = 0.16322 +shape = SubResource( 8 ) + +[node name="Tentacle3" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) +script = ExtResource( 16 ) + +[node name="DeathSplatter" parent="Tentacle3" instance=ExtResource( 1 )] +position = Vector2( 27, 38 ) + +[node name="Sprite" type="Sprite" parent="Tentacle3"] +material = SubResource( 22 ) +position = Vector2( 26, 27 ) +texture = ExtResource( 7 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Tentacle3"] +position = Vector2( 27, 48 ) +shape = SubResource( 9 ) + +[node name="Tentacle4" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) +script = ExtResource( 16 ) + +[node name="DeathSplatter" parent="Tentacle4" instance=ExtResource( 1 )] +position = Vector2( 33, 38 ) + +[node name="Sprite" type="Sprite" parent="Tentacle4"] +material = SubResource( 22 ) +position = Vector2( 26, 27 ) +texture = ExtResource( 14 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Tentacle4"] +position = Vector2( 33, 48 ) +shape = SubResource( 10 ) + +[node name="Tentacle5" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) +script = ExtResource( 16 ) + +[node name="DeathSplatter" parent="Tentacle5" instance=ExtResource( 1 )] +position = Vector2( 38, 38 ) + +[node name="Sprite" type="Sprite" parent="Tentacle5"] +material = SubResource( 22 ) +position = Vector2( 26, 27 ) +texture = ExtResource( 2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Tentacle5"] +position = Vector2( 39, 47 ) +shape = SubResource( 11 ) + +[node name="Tentacle6" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 21 ) +script = ExtResource( 16 ) + +[node name="DeathSplatter" parent="Tentacle6" instance=ExtResource( 1 )] +position = Vector2( 43, 38 ) + +[node name="Sprite" type="Sprite" parent="Tentacle6"] +material = SubResource( 22 ) +position = Vector2( 26, 27 ) +texture = ExtResource( 8 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Tentacle6"] +position = Vector2( 44, 48 ) +shape = SubResource( 12 ) diff --git a/objects/enemy/boss/scrump_projectile.gd b/objects/enemy/boss/scrump_projectile.gd new file mode 100644 index 0000000..6c45fd9 --- /dev/null +++ b/objects/enemy/boss/scrump_projectile.gd @@ -0,0 +1,26 @@ +extends "res://objects/enemy/enemy.gd" + + +var speed: float = 80.0 + + +func _physics_process(delta: float) -> void: + position.x -= speed * delta + +func _on_Hitbox_area_entered(area: Node) -> void: + ._on_Hitbox_area_entered(area) + if area.is_in_group("player_hitbox"): + _stop() + + +func _on_Hitbox_body_entered(body: Node) -> void: + if body is TileMap: + _stop() + + +func _stop() -> void: + speed = 0.0 + $Hitbox.queue_free() + for child in $Particles.get_children(): + if child is CPUParticles2D: + child.emitting = false diff --git a/objects/enemy/boss/scrump_projectile.tscn b/objects/enemy/boss/scrump_projectile.tscn new file mode 100644 index 0000000..d2524cf --- /dev/null +++ b/objects/enemy/boss/scrump_projectile.tscn @@ -0,0 +1,92 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://graphics/particles/goo_back.png" type="Texture" id=1] +[ext_resource path="res://graphics/particles/goo_trail.png" type="Texture" id=2] +[ext_resource path="res://graphics/particles/goo.png" type="Texture" id=3] +[ext_resource path="res://objects/enemy/boss/scrump_projectile.gd" type="Script" id=4] + +[sub_resource type="Curve" id=2] +_data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Curve" id=3] +_data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 3, 3 ) + +[node name="Boss1Projectile" type="Node2D"] +z_index = -1 +script = ExtResource( 4 ) + +[node name="Particles" type="Node2D" parent="."] +position = Vector2( 0, 4 ) + +[node name="GooTrail" type="CPUParticles2D" parent="Particles"] +z_index = -1 +local_coords = false +texture = ExtResource( 2 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +spread = 180.0 +gravity = Vector2( 0, 40 ) +initial_velocity = 8.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_curve = SubResource( 2 ) + +[node name="GooBackground" type="CPUParticles2D" parent="Particles"] +amount = 16 +texture = ExtResource( 1 ) +emission_shape = 2 +emission_rect_extents = Vector2( 2, 2 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 4.0 +angular_velocity = 180.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.8 +scale_amount_curve = SubResource( 3 ) + +[node name="GooBackgroundFall" type="CPUParticles2D" parent="Particles"] +amount = 16 +preprocess = 1.0 +texture = ExtResource( 1 ) +emission_shape = 2 +emission_rect_extents = Vector2( 2, 2 ) +spread = 180.0 +gravity = Vector2( 80, 0 ) +initial_velocity = 4.0 +angular_velocity = 180.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.8 +scale_amount_curve = SubResource( 3 ) + +[node name="GooForeground" type="CPUParticles2D" parent="Particles"] +lifetime = 0.5 +preprocess = 0.5 +texture = ExtResource( 3 ) +emission_shape = 2 +emission_rect_extents = Vector2( 2, 2 ) +spread = 180.0 +gravity = Vector2( 80, 0 ) +initial_velocity = 4.0 +angular_velocity = 180.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.4 +scale_amount_curve = SubResource( 3 ) + +[node name="Hitbox" type="Area2D" parent="."] +position = Vector2( 0, 4 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +shape = SubResource( 1 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] diff --git a/objects/enemy/boss/sg2083.gd b/objects/enemy/boss/sg2083.gd new file mode 100644 index 0000000..d76304e --- /dev/null +++ b/objects/enemy/boss/sg2083.gd @@ -0,0 +1,178 @@ +extends KinematicBody2D + + +signal died() +signal health_changed(amount) +signal energy_changed(amount,laser_energy) + + +enum State {DEAD, STAND, FORWARD, BACK, DUCK, BEAM, INACTIVE} + +const Bullet = preload("res://objects/enemy/2083_bullet.tscn") +const SmallExplosion = preload("res://objects/enemy/boss/2600_small_explosion.tscn") + + +export var hp: float = 100.0 +export var max_energy: float = 100.0 +export var energy_recovery: float = 5.0 +export var shot_speed: float = 50.0 +export var move_speed: float = 30.0 +export var safe_from_breath: bool = false +export var make_explosions: bool = false +export var bullet_damage: float = 0.2 +export var bullet_energy: float = 0.0 +export var beam_energy: float = 75.0 +export var duck_energy: float = 0.15 +export var explosion_rect: Rect2 +export var famira_path: NodePath + + +var state: int = State.STAND +var knockback: float = 0.0 +var energy: float = max_energy + + +onready var bullet_positions = $"%BulletPositions" +onready var anims: AnimationPlayer = $"%AnimationPlayer" +onready var head_sprite = $"%Head" + + +func _physics_process(delta: float) -> void: + match state: + State.DEAD: + return + State.INACTIVE: + return + State.STAND: + if sign(Input.get_axis("move_up", "move_down") + get_stick_input(JOY_AXIS_1)) == 1 and energy >= duck_energy: + state = State.DUCK + anims.play("Duck") + elif Input.is_action_pressed("move_right"): + state = State.FORWARD + anims.play("Walk") + elif Input.is_action_pressed("move_left"): + state = State.BACK + anims.play("Walk", -1.0, -1.0, true) + State.DUCK: + if (!Input.is_action_pressed("move_down") && get_stick_input(JOY_AXIS_1) != 1) and anims.current_animation.empty(): + anims.play("UnDuck") + energy -= duck_energy + + State.FORWARD: + move_and_slide(Vector2(move_speed, 0.0)) + State.BACK: + move_and_slide(Vector2(-move_speed, 0.0)) + move_and_slide(Vector2(-knockback, 0.0)) + knockback *= pow(0.1, delta) + set_energy(energy + energy_recovery * delta) + + +func _input(event: InputEvent) -> void: + if state == State.DEAD or state == State.INACTIVE: + return + if event.is_action_pressed("shoot") and (state == State.STAND or state == State.FORWARD or state == State.BACK) and energy >= bullet_energy: + shoot() + if event.is_action_pressed("jump") and state == State.STAND and energy >= beam_energy: + beam() + +func get_stick_input(axis): + var inp = Input.get_joy_axis(0,axis) + if abs(inp) >= 0.5: + return sign(inp) + else: + return 0 + +func set_energy(value: float) -> void: + energy = clamp(value, 0.0, max_energy) + emit_signal("energy_changed", energy, beam_energy) + +func land(duck: bool) -> void: + if duck: + anims.play("Duck") + else: + anims.play("UnDuck") + + +func shoot() -> void: + set_energy(energy - bullet_energy) + Audio.play_sound(Audio.a_vulcan,Audio.ac_mech_shoot) + for pos in bullet_positions.get_children(): + var bullet = Bullet.instance() + bullet.global_position = pos.global_position + bullet.direction = Vector2.LEFT.rotated(pos.rotation) + bullet.speed = shot_speed + bullet.damage = bullet_damage + get_parent().add_child(bullet) + + +func beam() -> void: + state = State.BEAM + var tween = create_tween() + tween.tween_method(self, "set_energy", energy, energy - beam_energy, 0.9) + anims.play("Beam") + + +func hurt(amount: float, can_duck: bool = false) -> void: + if can_duck and state == State.DUCK: + return + hp -= amount + emit_signal("health_changed", hp) + if state != State.DEAD and hp <= 0.0: + state = State.DEAD + emit_signal("died") + anims.play("die") + + +func knock_back(amount: float, can_duck: bool = false) -> void: + if can_duck and state == State.DUCK: + return + knockback += amount + + +func _play_laser_sound(play: bool): + var famira = get_node(famira_path) + if play: + if famira.has_method("start_push"): + famira.start_push() + Audio.play_sound(Audio.a_rainbow_laser,Audio.ac_collectible) + else: + if famira.has_method("stop_push"): + famira.stop_push() + Audio.ac_collectible.playing = false + + +func _play_charge_sound(play: bool): + if play: + Audio.play_sound(Audio.a_2600_charge,Audio.ac_collectible) + else: + Audio.ac_collectible.playing = false + + +func _spawn_explosions() -> void: + while make_explosions: + yield(get_tree().create_timer(randf() * 0.5, false), "timeout") + var explosion = SmallExplosion.instance() + explosion.position = Vector2( + rand_range(explosion_rect.position.x, explosion_rect.end.x), + rand_range(explosion_rect.position.y, explosion_rect.end.y) + ) + add_child(explosion) + + +func _on_animation_finished(anim_name: String) -> void: + if state == State.INACTIVE: + return + match anim_name: + "UnDuck": + state = State.STAND + "Walk": + if state == State.FORWARD and Input.is_action_pressed("move_right"): + anims.play("Walk") + elif state == State.BACK and Input.is_action_pressed("move_left"): + anims.play("Walk", -1.0, -1.0, true) + else: + state = State.STAND + "Beam": + state = State.STAND + "die": + Game.change_map(load("res://menus/game_over.tscn")) diff --git a/objects/enemy/boss/sg2083.tscn b/objects/enemy/boss/sg2083.tscn new file mode 100644 index 0000000..fa76448 --- /dev/null +++ b/objects/enemy/boss/sg2083.tscn @@ -0,0 +1,2265 @@ +[gd_scene load_steps=40 format=2] + +[ext_resource path="res://shaders/color_noise.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/enemy/boss/stg_2600/tailpipes.png" type="Texture" id=2] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/enemy/boss/stg_2600/beam.png" type="Texture" id=4] +[ext_resource path="res://graphics/npc/intelli_idle.png" type="Texture" id=5] +[ext_resource path="res://graphics/enemy/boss/stg_2600/sg_2083.png" type="Texture" id=6] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_large.png" type="Texture" id=7] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_medium.png" type="Texture" id=8] +[ext_resource path="res://graphics/enemy/boss/stg_2600/leg.png" type="Texture" id=9] +[ext_resource path="res://scripts/sprite_ext.gd" type="Script" id=10] +[ext_resource path="res://shaders/scale3x.gdshader" type="Shader" id=11] +[ext_resource path="res://graphics/enemy/boss/stg_2600/foot.png" type="Texture" id=12] +[ext_resource path="res://graphics/enemy/boss/stg_2600/beam_gradient.png" type="Texture" id=13] +[ext_resource path="res://shaders/beam_cycle.gdshader" type="Shader" id=14] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=15] +[ext_resource path="res://graphics/particles/smoke.png" type="Texture" id=16] +[ext_resource path="res://shaders/fade.gdshader" type="Shader" id=17] +[ext_resource path="res://graphics/fade_patterns/stg_explosion.png" type="Texture" id=18] +[ext_resource path="res://objects/enemy/boss/sg2083.gd" type="Script" id=19] + +[sub_resource type="RectangleShape2D" id=27] +extents = Vector2( 44, 76 ) + +[sub_resource type="Animation" id=4] +resource_name = "Beam" +length = 4.0 +tracks/0/type = "method" +tracks/0/path = NodePath(".") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"values": [ { +"args": [ true ], +"method": "_play_charge_sound" +}, { +"args": [ true ], +"method": "_play_laser_sound" +}, { +"args": [ false ], +"method": "_play_laser_sound" +} ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle/Head/Beam:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.9, 1, 3.3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1e-05 ), Vector2( 1, 1e-05 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1e-05 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/InternalBeam:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.7, 3.3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1e-05 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/Head/Beam/Hitbox/BeamShape:disabled") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 1, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ true, false, true ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/Head/BeamChargeParticles:emitting") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -25.1199, -25.1199 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 51.0254, 51.0254 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -26.8344, -26.8344 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -25.1199, -25.1199 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 51.0254, 51.0254 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -26.8344, -26.8344 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/Head/Beam:visible") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.9, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} + +[sub_resource type="Animation" id=21] +resource_name = "Duck" +length = 0.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 42, 78 ), Vector2( 42, 87.5 ), Vector2( 42, 97 ), Vector2( 42, 106.5 ), Vector2( 42, 116 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ), Vector2( 0.00786438, 47.8817 ), Vector2( 0.005, 47.75 ), Vector2( 0.00294914, 47.9556 ), Vector2( 0, 48 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -25.1199, -42.8239, -52.6 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/JointFront/LegFront/ShinFront:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 51.0254, 71.6413, 96.9236, 110.502, 128.135 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointFront/LegFront:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -26.8344, -38.9649, -54.4339, -63.1815, -75.4293 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ), Vector2( 0.00589828, 47.9113 ), Vector2( 0, 47.75 ), Vector2( 0.004, 48 ), Vector2( 0.01, 48 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -25.1199, -42.6063, -52.8 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 51.0254, -5939.68, -82.9, 2.5, 128.421 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointBack/LegBack/KneeBack:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 36 ), Vector2( 0, 36 ), Vector2( 0, 36 ), Vector2( 0, 36 ), Vector2( 0, 36 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 6012.0, 180.0, 108.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Axle/JointBack/LegBack:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -26.8344, -39.4117, -54.688, -63.5339, -76.1645 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath(".:safe_from_breath") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 0.15 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} + +[sub_resource type="Animation" id=5] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle/Head/Beam:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1e-05 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle/Head/InternalBeam:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/Beam/Hitbox/BeamShape:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/Head:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/Head/Beam:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/Head/BeamChargeParticles:emitting") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle:position") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 42, 78 ) ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Axle/Head/Intelli:visible") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Axle:visible") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:position") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ) ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Axle:rotation_degrees") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Axle/JointFront/LegFront/ShinFront:position") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 3.8147e-06, 36 ) ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Axle/JointFront/LegFront:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:position") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Axle/JointBack/LegBack/KneeBack:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 36 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Axle/JointBack/LegBack:position") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Axle/JointFront:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 11, -4 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Axle/JointFront:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath(".:make_explosions") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} + +[sub_resource type="Animation" id=24] +resource_name = "UnDuck" +length = 0.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 42, 116 ), Vector2( 42, 106.5 ), Vector2( 42, 97 ), Vector2( 42, 87.5 ), Vector2( 42, 78 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 48 ), Vector2( 0.00294914, 47.9556 ), Vector2( 0.005, 47.75 ), Vector2( 0.00786438, 47.8817 ), Vector2( 0.00983047, 47.8521 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -52.5731, -42.8239, -25.1199 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/JointFront/LegFront/ShinFront:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 129.974, 110.502, 96.9236, 71.6413, 51.0254 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointFront/LegFront:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -77.3026, -63.1815, -54.4339, -38.9649, -26.8344 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0.01, 48 ), Vector2( 0.004, 48 ), Vector2( 0, 47.75 ), Vector2( 0.00589828, 47.9113 ), Vector2( 0.00983047, 47.8521 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -52.1914, -42.6063, -25.1199 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 130.023, 2.5, -82.9, -5939.68, 51.0254 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointBack/LegBack/KneeBack:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 36 ), Vector2( 0, 36 ), Vector2( 0, 36 ), Vector2( 0, 36 ), Vector2( 0, 36 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 108.0, 180.0, 6012.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Axle/JointBack/LegBack:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -77.4075, -63.5339, -54.688, -39.4117, -26.8344 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath(".:safe_from_breath") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0.05 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("UnDuck:playing") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=25] +resource_name = "Walk" +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 42, 78 ), Vector2( 42, 72 ), Vector2( 42, 78 ), Vector2( 42, 72 ), Vector2( 42, 78 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0, 0.0, 0.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -25.1199, -43.1593, -34.7251, -0.87926, -25.1199 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 51.0254, 60.0, 37.1965, -18.9988, 51.0254 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -26.8344, -13.4621, -3.40035, 19.2038, -26.8344 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -25.1199, -4.6348, -6.27576, -43.6, -25.1199 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 51.0254, 23.4, 43.8, 74.0, 51.0254 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -26.8344, -19.6257, -38.4223, -36.3773, -26.8344 ] +} + +[sub_resource type="Animation" id=15] +resource_name = "die" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ) ] +} +tracks/1/type = "method" +tracks/1/path = NodePath(".") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "_spawn_explosions" +} ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/Intelli:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/3/type = "animation" +tracks/3/path = NodePath("BigExplosion/ExplosionAnimation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"clips": PoolStringArray( "explode" ), +"times": PoolRealArray( 2 ) +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 2.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:make_explosions") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointBack:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -10, -4 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointBack/LegBack:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 36 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Axle/JointFront:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 11, -4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Axle/JointFront:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Axle/JointFront/LegFront:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Axle/JointFront/LegFront/ShinFront:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 3.8147e-06, 36 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Axle/KneeBack:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 6.25088, 28.1233 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Axle/KneeBack:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -8.65142e-06 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Axle/KneeFront:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 27.2509, 28.1233 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Axle/KneeFront:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -8.65142e-06 ] +} + +[sub_resource type="Animation" id=28] +resource_name = "force idle" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle/Head/Beam:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1e-05 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle/Head/InternalBeam:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/Beam/Hitbox/BeamShape:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/Head:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/Head/Beam:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/Head/BeamChargeParticles:emitting") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle:position") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 42, 78 ) ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Axle/Head/Intelli:visible") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Axle:visible") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:position") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ) ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Axle:rotation_degrees") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Axle/JointFront/LegFront/ShinFront:position") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 3.8147e-06, 36 ) ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Axle/JointFront/LegFront:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:position") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Axle/JointBack/LegBack/KneeBack:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 36 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Axle/JointBack/LegBack:position") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Axle/JointFront:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 11, -4 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Axle/JointFront:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath(".:make_explosions") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} + +[sub_resource type="Animation" id=14] +resource_name = "stomping" +length = 5.0 +loop = true +tracks/0/type = "bezier" +tracks/0/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"points": PoolRealArray( -25.1199, -0.25, 0, 0, -2.10696, -33.4027, -0.7, 0.0638618, 0.25, 0, -33.4027, -0.25, 0, 0.25, 0, -25.1199, 0, -0.968742, 0, -2.10696 ), +"times": PoolRealArray( 0, 1.2, 1.5, 1.8 ) +} +tracks/1/type = "bezier" +tracks/1/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"points": PoolRealArray( 51.0254, -0.25, 0, 0, 6.18464, 84.1092, -0.5, 0.233734, 0.25, 0, 84.1092, -0.25, 0, 0.25, 0, 51.0254, 0, 5.17889, 0, 6.18464 ), +"times": PoolRealArray( 0, 1.2, 1.5, 1.8 ) +} +tracks/2/type = "bezier" +tracks/2/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"points": PoolRealArray( -26.8344, -0.25, 0, 0, -5.79777, -51.6355, -0.6, 0.20406, 0.25, 0, -51.6355, -0.25, 0, 0.25, 0, -26.8344, 0, -5.58774, 0, -5.79777 ), +"times": PoolRealArray( 0, 1.2, 1.5, 1.8 ) +} +tracks/3/type = "bezier" +tracks/3/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"points": PoolRealArray( -25.1199, -0.25, 0, 0.25, 0, -25.1199, -0.25, 0, 0, -2.10696, -33.4027, -0.7, 0.0638618, 0.25, 0, -33.4027, -0.25, 0, 0.25, 0, -25.1199, 0, -0.968742, 0, -2.10696 ), +"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3 ) +} +tracks/4/type = "bezier" +tracks/4/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"points": PoolRealArray( 51.0254, -0.25, 0, 0.25, 0, 51.0254, -0.25, 0, 0, 6.18464, 84.1092, -0.5, 0.233734, 0.25, 0, 84.1092, -0.25, 0, 0.25, 0, 51.0254, 0, 5.17889, 0, 6.18464 ), +"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3 ) +} +tracks/5/type = "bezier" +tracks/5/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"points": PoolRealArray( -26.8344, -0.25, 0, 0.25, 0, -26.8344, -0.25, 0, 0, -5.79777, -51.6355, -0.6, 0.20406, 0.25, 0, -51.6355, -0.25, 0, 0.25, 0, -26.8344, 0, -5.58774, 0, -5.79777 ), +"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3 ) +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="ShaderMaterial" id=11] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 16, 32 ) +shader_param/ammount = Vector2( 0.6, 0.6 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="Curve" id=12] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.130639, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.348684, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 14 ) +shader_param/cycle_speed = 1.0 +shader_param/gradient = ExtResource( 13 ) + +[sub_resource type="RectangleShape2D" id=6] +extents = Vector2( 128, 8 ) + +[sub_resource type="Curve" id=13] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.803571, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=22] +shader = ExtResource( 1 ) +shader_param/animate_noise = true +shader_param/noise_intensity = 1.0 +shader_param/fps = 60.0 + +[sub_resource type="ShaderMaterial" id=8] +shader = ExtResource( 11 ) +shader_param/pixel_scale = 1.0 + +[sub_resource type="ShaderMaterial" id=20] +resource_local_to_scene = true +shader = ExtResource( 17 ) +shader_param/color = Color( 1, 1, 1, 1 ) +shader_param/smooth_mode = true +shader_param/reverse = true +shader_param/opacity = 0.0 + +[sub_resource type="Animation" id=17] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExplosionRect:material:shader_param/reverse") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ExplosionRect:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} + +[sub_resource type="Animation" id=18] +resource_name = "explode" +length = 0.7 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExplosionRect:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.833333 ), Color( 1, 1, 1, 0.666667 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.333333 ), Color( 1, 1, 1, 0.166667 ), Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="SegmentShape2D" id=26] +a = Vector2( 4, -76 ) +b = Vector2( 4, 76 ) + +[node name="2083" type="KinematicBody2D"] +collision_mask = 5 +script = ExtResource( 19 ) +explosion_rect = Rect2( 24, 16, 88, 64 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( 60, 92 ) +shape = SubResource( 27 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +unique_name_in_owner = true +anims/Beam = SubResource( 4 ) +anims/Duck = SubResource( 21 ) +anims/RESET = SubResource( 5 ) +anims/UnDuck = SubResource( 24 ) +anims/Walk = SubResource( 25 ) +anims/die = SubResource( 15 ) +"anims/force idle" = SubResource( 28 ) +anims/stomping = SubResource( 14 ) + +[node name="Axle" type="Node2D" parent="."] +position = Vector2( 42, 78 ) +scale = Vector2( -1, 1 ) + +[node name="JointBack" type="Sprite" parent="Axle"] +modulate = Color( 0.74902, 0.74902, 0.74902, 1 ) +position = Vector2( -10, -4 ) +z_index = -1 +texture = ExtResource( 7 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="LegBack" type="Sprite" parent="Axle/JointBack"] +show_behind_parent = true +rotation = -0.468349 +texture = ExtResource( 9 ) +offset = Vector2( 0, 18 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="KneeBack" type="Node2D" parent="Axle/JointBack/LegBack"] +position = Vector2( 0, 36 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="ShinBack" type="Sprite" parent="Axle/JointBack/LegBack/KneeBack"] +rotation = 0.890561 +texture = ExtResource( 9 ) +offset = Vector2( 0, 24 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 48 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="FootBack" type="Sprite" parent="Axle/JointBack/LegBack/KneeBack/ShinBack"] +position = Vector2( 0.00983047, 47.8521 ) +rotation = -0.438425 +texture = ExtResource( 12 ) +offset = Vector2( -11.6527, 2.61113 ) +script = ExtResource( 10 ) +__meta__ = { +"_edit_bone_": true +} +rotation_lock = nan + +[node name="Endpoint" type="Position2D" parent="Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack"] +position = Vector2( -17, 0 ) +__meta__ = { +"_edit_bone_": true, +"_gizmo_extents_": 4.0 +} + +[node name="KneeGraphic" type="RemoteTransform2D" parent="Axle/JointBack/LegBack/KneeBack"] +remote_path = NodePath("../../../../KneeBack") +update_rotation = false +update_scale = false + +[node name="Head" type="Sprite" parent="Axle"] +unique_name_in_owner = true +position = Vector2( 0, -4 ) +z_index = 5 +texture = ExtResource( 6 ) +offset = Vector2( -13, -25 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="End" type="Position2D" parent="Axle/Head"] +position = Vector2( -20, -28 ) +__meta__ = { +"_edit_bone_": true, +"_gizmo_extents_": 4.0 +} + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Axle/Head"] +position = Vector2( -18, -10 ) + +[node name="CannonBG" type="ColorRect" parent="Axle/Head"] +show_behind_parent = true +margin_left = -64.0 +margin_top = -18.0 +margin_right = -32.0 +margin_bottom = -2.0 +color = Color( 0.266667, 0.266667, 0.305882, 1 ) + +[node name="Tailpipes" type="Sprite" parent="Axle/Head"] +visible = false +show_behind_parent = true +material = SubResource( 11 ) +position = Vector2( 21, -36 ) +texture = ExtResource( 2 ) + +[node name="SmokeParticles" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] +position = Vector2( 10, -10 ) +amount = 12 +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 +gravity = Vector2( 0, -30 ) +initial_velocity = 20.0 +initial_velocity_random = 1.0 +angular_velocity = 180.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 12 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="SmokeParticles2" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] +position = Vector2( 8, 0 ) +amount = 12 +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 +gravity = Vector2( 0, -30 ) +initial_velocity = 20.0 +initial_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 12 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="SmokeParticles3" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] +position = Vector2( 5, -9 ) +amount = 12 +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 +gravity = Vector2( 0, -30 ) +initial_velocity = 20.0 +initial_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 12 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="Intelli" type="Sprite" parent="Axle/Head"] +show_behind_parent = true +position = Vector2( -37, -32 ) +texture = ExtResource( 5 ) +flip_h = true + +[node name="IntelliHeadPos" type="Position2D" parent="Axle/Head/Intelli"] +unique_name_in_owner = true +position = Vector2( 0, -4 ) + +[node name="Beam" type="Sprite" parent="Axle/Head"] +visible = false +show_behind_parent = true +material = SubResource( 10 ) +position = Vector2( -58, -10 ) +scale = Vector2( 1, 1e-05 ) +texture = ExtResource( 4 ) +offset = Vector2( -128, 0 ) +region_enabled = true +region_rect = Rect2( 0, 0, 256, 16 ) + +[node name="Hitbox" type="Area2D" parent="Axle/Head/Beam" groups=["blocks arrow", "enemy_hitbox"]] + +[node name="BeamShape" type="CollisionShape2D" parent="Axle/Head/Beam/Hitbox"] +position = Vector2( -128, 0 ) +z_index = 10 +shape = SubResource( 6 ) +disabled = true + +[node name="InternalBeam" type="Sprite" parent="Axle/Head"] +show_behind_parent = true +material = SubResource( 10 ) +position = Vector2( -33, -10 ) +scale = Vector2( 1e-05, 1 ) +texture = ExtResource( 4 ) +offset = Vector2( -12, 0 ) +region_enabled = true +region_rect = Rect2( 0, 0, 24, 16 ) + +[node name="BeamChargeParticles" type="CPUParticles2D" parent="Axle/Head"] +show_behind_parent = true +material = SubResource( 10 ) +position = Vector2( -62, -10 ) +scale = Vector2( 1, 0.987022 ) +emitting = false +amount = 12 +lifetime = 1.5 +speed_scale = 3.0 +texture = ExtResource( 15 ) +emission_shape = 3 +emission_points = PoolVector2Array( -32, 0, -28, -12, -28, 12, -24, -16, -24, 16, -30, -8, -30, 8, -32, -4, -32, 4 ) +emission_colors = PoolColorArray( ) +gravity = Vector2( 0, 0 ) +radial_accel = -32.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 0.5 +scale_amount_curve = SubResource( 13 ) + +[node name="Static" type="ColorRect" parent="Axle/Head"] +material = SubResource( 22 ) +margin_left = -28.0 +margin_top = -15.0 +margin_right = -14.0 +margin_bottom = -4.0 + +[node name="BulletPositions" type="Node2D" parent="Axle/Head"] +unique_name_in_owner = true +position = Vector2( -61, -18 ) +rotation = 3.14159 +scale = Vector2( 1, -1 ) + +[node name="Position1" type="Position2D" parent="Axle/Head/BulletPositions"] +position = Vector2( 6.08833, 2.28882e-05 ) +rotation = 2.87979 + +[node name="Position2" type="Position2D" parent="Axle/Head/BulletPositions"] +position = Vector2( 6.08832, 8.00003 ) +rotation = 3.14159 + +[node name="Position3" type="Position2D" parent="Axle/Head/BulletPositions"] +position = Vector2( 6.08832, 16 ) +rotation = 3.40339 + +[node name="JointFront" type="Sprite" parent="Axle"] +position = Vector2( 11, -4 ) +z_index = 5 +texture = ExtResource( 7 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="LegFront" type="Sprite" parent="Axle/JointFront"] +show_behind_parent = true +rotation = -0.468349 +texture = ExtResource( 9 ) +offset = Vector2( 0, 18 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="ShinFront" type="Sprite" parent="Axle/JointFront/LegFront"] +material = SubResource( 8 ) +position = Vector2( 3.8147e-06, 36 ) +rotation = 0.890561 +texture = ExtResource( 9 ) +offset = Vector2( 0, 24 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 48 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="FootFront" type="Sprite" parent="Axle/JointFront/LegFront/ShinFront"] +position = Vector2( 0.00983047, 47.8521 ) +rotation = -0.438425 +texture = ExtResource( 12 ) +offset = Vector2( -11.6527, 2.61113 ) +script = ExtResource( 10 ) +__meta__ = { +"_edit_bone_": true +} +rotation_lock = nan + +[node name="Endpoint" type="Position2D" parent="Axle/JointFront/LegFront/ShinFront/FootFront"] +position = Vector2( -17, 0 ) +__meta__ = { +"_edit_bone_": true, +"_gizmo_extents_": 4.0 +} + +[node name="KneeGraphic" type="RemoteTransform2D" parent="Axle/JointFront/LegFront"] +position = Vector2( 7.62939e-06, 36 ) +remote_path = NodePath("../../../KneeFront") +update_rotation = false +update_scale = false + +[node name="KneeBack" type="Sprite" parent="Axle"] +modulate = Color( 0.74902, 0.74902, 0.74902, 1 ) +position = Vector2( 6.25089, 28.1233 ) +scale = Vector2( 1, -1 ) +z_index = -1 +texture = ExtResource( 8 ) +hframes = 8 +script = ExtResource( 10 ) +fps = 4.0 +ping_pong = true +rotation_lock = 0.0 + +[node name="KneeFront" type="Sprite" parent="Axle"] +position = Vector2( 27.2509, 28.1233 ) +z_index = 5 +texture = ExtResource( 8 ) +hframes = 8 +script = ExtResource( 10 ) +fps = 4.0 +rotation_lock = 0.0 + +[node name="BigExplosion" type="CanvasLayer" parent="."] +layer = 101 + +[node name="ExplosionRect" type="TextureRect" parent="BigExplosion"] +material = SubResource( 20 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 18 ) +flip_h = true +__meta__ = { +"_edit_lock_": true +} + +[node name="ExplosionAnimation" type="AnimationPlayer" parent="BigExplosion"] +anims/RESET = SubResource( 17 ) +anims/explode = SubResource( 18 ) + +[node name="DetectionBox" type="Area2D" parent="."] +collision_layer = 4 +collision_mask = 0 +monitoring = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="DetectionBox"] +position = Vector2( 100, 92 ) +shape = SubResource( 26 ) + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_finished"] diff --git a/objects/enemy/bullet_casing.gd b/objects/enemy/bullet_casing.gd new file mode 100644 index 0000000..ea7236f --- /dev/null +++ b/objects/enemy/bullet_casing.gd @@ -0,0 +1,12 @@ +extends RigidBody2D + + +var has_played_sound = false + + + +func _on_BoneParticle_body_entered(body): + if !has_played_sound: + Audio.play_sound(Audio.a_bullet_casing, Audio.ac_climb) + has_played_sound = true + diff --git a/objects/enemy/bullet_casing.tscn b/objects/enemy/bullet_casing.tscn new file mode 100644 index 0000000..32239f0 --- /dev/null +++ b/objects/enemy/bullet_casing.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://graphics/particles/bullet_casing.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/bullet_casing.gd" type="Script" id=2] + +[sub_resource type="PhysicsMaterial" id=4] +bounce = 0.5 + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 1, 1.5 ) + +[node name="BoneParticle" type="RigidBody2D"] +collision_layer = 17 +physics_material_override = SubResource( 4 ) +contacts_reported = 1 +contact_monitor = true +script = ExtResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( 0, 0.5 ) +shape = SubResource( 3 ) +__meta__ = { +"_edit_group_": true +} + +[connection signal="body_entered" from="." to="." method="_on_BoneParticle_body_entered"] +[connection signal="body_shape_entered" from="." to="." method="_on_BoneParticle_body_shape_entered"] diff --git a/objects/enemy/constant_bleed.tscn b/objects/enemy/constant_bleed.tscn new file mode 100644 index 0000000..6f8435d --- /dev/null +++ b/objects/enemy/constant_bleed.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://graphics/particles/blood.png" type="Texture" id=1] + +[sub_resource type="Curve" id=43] +_data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] + +[node name="DeathSplatter" type="CPUParticles2D"] +lifetime = 0.2 +local_coords = false +texture = ExtResource( 1 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 50 ) +initial_velocity = 60.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 43 ) diff --git a/objects/enemy/cop.gd b/objects/enemy/cop.gd new file mode 100644 index 0000000..47e0f9d --- /dev/null +++ b/objects/enemy/cop.gd @@ -0,0 +1,185 @@ +tool +extends "res://objects/enemy/enemy.gd" + +export var walk_speed = 25.0 +export var left_boundary = 0.0 setget _set_left_boundary +export var right_boundary = 0.0 setget _set_right_boundary +export var direction = 1.0 +export var idle_turns = 0 +export var turn_time = 0.5 +export var shoot_time = 1.0 + +export var bones_amount = 8 +export var bones_speed = 50.0 + +onready var sprite = $AnimatedSprite +onready var shoot_position = $"%ShootPosition" +onready var shoot_cast = $"%ShootCast" +onready var graphics_cast = $"%GraphicsCast" +onready var shoot_line = $"%ShootLine" +onready var sparks = $SparkParticles +onready var muzzle_flash = $"%MuzzleFlashParticles" + +var shooting = false +var turns = 0 + +const BoneParticle = preload("res://objects/enemy/bone_particle.tscn") +const GoreParticle = preload("res://objects/enemy/gore_particle.tscn") +const EasyBullet = preload("res://objects/enemy/roboturret_proj.tscn") +const BulletCasing = preload("res://objects/enemy/bullet_casing.tscn") + +func _ready(): + if Engine.editor_hint: + update() + return + # convert boundaries into actual coordinate positions + left_boundary = position.x - left_boundary * 8.0 + right_boundary = position.x + right_boundary * 8.0 + # make facing match direction + sprite.scale.x = direction + # make animation speed sync to walk speed + sprite.speed_scale = inverse_lerp(0.0, 25.0, walk_speed) + +func _physics_process(delta): + if Engine.editor_hint: + return + if !shooting: + # check for player in raycast + var collider = shoot_cast.get_collider() + if collider != null && (collider.is_in_group("player_hitbox") or collider.is_in_group("msx")): + if Game.get_sector(global_position) == Game.get_sector(collider.global_position): + if Game.is_easy_mode: + var easy_bullet = EasyBullet.instance() + easy_bullet.target_group = "player_hitbox" + easy_bullet.direction = sign(shoot_position.global_position.x - global_position.x) + easy_bullet.global_position = shoot_position.global_position + easy_bullet.speed = 100 + get_parent().call_deferred("add_child", easy_bullet) + else: + # kill player and enter shooting state temporarily + collider.get_parent().die() + + # play sound + Audio.play_sound(Audio.a_explosion, Audio.ac_boss) + + # muzzle flash + muzzle_flash.emitting = true + shooting = true + get_tree().create_timer(0.5, false).connect("timeout", self, "_stop_shoot") + sprite.play("shoot") + + # check other raycast to find collision passing through player + graphics_cast.force_raycast_update() + var hit_position = graphics_cast.to_global(Vector2(256.0, 0.0)) + if graphics_cast.is_colliding(): + hit_position = graphics_cast.get_collision_point() + # set line point to point of collision + var hit_x = shoot_line.to_local(hit_position).x + shoot_line.points[1].x = hit_x + # shoot_line.visible = true + # get_tree().create_timer(0.05, false).connect("timeout", shoot_line, "set_visible", [false], CONNECT_DEFERRED) + # move and play sparks + sparks.global_position = hit_position + sparks.emitting = true + + # spawn a bullet casing + var casing = BulletCasing.instance() + casing.rotation = rand_range(0.0, 2.0*PI) # random rotation + casing.global_position = shoot_position.global_position + casing.linear_velocity = Vector2(45.0 * rand_range(0.5, 1.5), 0.0).rotated(rand_range(-PI, 0.0)) + casing.angular_velocity = rand_range(-PI*2.0, PI*2.0) + var timer = get_tree().create_timer(3.0 + rand_range(0.0, 1.0), false) + timer.connect("timeout", casing, "queue_free") + get_parent().call_deferred("add_child", casing) + return + + # if there aren't turns, walk around + if turns == 0: + sprite.play("walk") + position.x += direction * walk_speed * delta + if position.x <= left_boundary: + position.x = left_boundary + direction = 1.0 + _do_turn() + elif position.x >= right_boundary: + position.x = right_boundary + direction = -1.0 + _do_turn() + +func _do_turn(): + if shooting: + get_tree().create_timer(turn_time, false).connect("timeout", self, "_do_turn") + return + sprite.play("idle") + # still pause with zero "turns" + if idle_turns <= 0: + # set turns to -1 to stop walking + turns = -1 + # wait for turn_tie + yield(get_tree().create_timer(turn_time, false), "timeout") + sprite.scale.x *= -1.0 + # wait a bit after turning + get_tree().create_timer(turn_time, false).connect("timeout", self, "set", ["turns", 0]) + return + sprite.scale.x *= -1.0 + if turns < idle_turns * 2: + turns += 1 + get_tree().create_timer(turn_time, false).connect("timeout", self, "_do_turn") + else: + get_tree().create_timer(turn_time, false).connect("timeout", self, "set", ["turns", 0]) +# turns = 0 + +func _stop_shoot(): + shooting = false + shoot_line.visible = false + if turns == 0: + sprite.play("walk") + else: + sprite.play("idle") + +# editor debug drawing +func _draw(): + if Engine.editor_hint: + var left = -left_boundary * 8.0 + var right = right_boundary * 8.0 + 8.0 + draw_line( + Vector2(left, 0.0), + Vector2(right, 0.0), + Color(0.4, 0.2, 0.6, 0.75), 1.01, false + ) + draw_line( + Vector2(left, 2.0), + Vector2(left, -2.0), + Color(0.4, 0.2, 0.6, 0.75), 1.01, false + ) + draw_line( + Vector2(right, 2.0), + Vector2(right, -2.0), + Color(0.4, 0.2, 0.6, 0.75), 1.01, false + ) + +func _set_left_boundary(value): + left_boundary = value + if Engine.editor_hint: + update() + +func _set_right_boundary(value): + right_boundary = value + if Engine.editor_hint: + update() + +func die(): + for n in bones_amount: + var bone + if randi() % 3 == 0: + bone = BoneParticle.instance() + else: + bone = GoreParticle.instance() + bone.rotation = rand_range(0.0, 2.0*PI) # random rotation + bone.global_position = global_position + bone.linear_velocity = Vector2(bones_speed * rand_range(0.5, 1.5), 0.0).rotated(rand_range(-PI, 0.0)) + bone.angular_velocity = rand_range(-PI*2.0, PI*2.0) + var timer = get_tree().create_timer(3.0 + rand_range(0.0, 1.0), false) + timer.connect("timeout", bone, "queue_free") + get_parent().call_deferred("add_child", bone) + .die() # call rest of enemy.gd die() funciton diff --git a/objects/enemy/cop.tscn b/objects/enemy/cop.tscn new file mode 100644 index 0000000..3cda741 --- /dev/null +++ b/objects/enemy/cop.tscn @@ -0,0 +1,152 @@ +[gd_scene load_steps=20 format=2] + +[ext_resource path="res://objects/enemy/cop.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/cop/cop_idle.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/cop/cop_walk.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/cop/cop_shoot.png" type="Texture" id=4] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=5] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=6] +[ext_resource path="res://graphics/particles/muzzle_flash.png" type="Texture" id=7] + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 5 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 3 ) +region = Rect2( 20, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 3 ) +region = Rect2( 40, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 3 ) +region = Rect2( 60, 0, 20, 21 ) + +[sub_resource type="SpriteFrames" id=6] +animations = [ { +"frames": [ SubResource( 1 ) ], +"loop": false, +"name": "idle", +"speed": 5.0 +}, { +"frames": [ ExtResource( 4 ) ], +"loop": false, +"name": "shoot", +"speed": 1.0 +}, { +"frames": [ SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ) ], +"loop": true, +"name": "walk", +"speed": 5.0 +} ] + +[sub_resource type="Curve" id=11] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.5, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=12] +interpolation_mode = 2 +offsets = PoolRealArray( 0.20339, 0.432203 ) +colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 0.290196, 1 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 3, 8 ) + +[sub_resource type="Curve" id=9] +_data = [ Vector2( 0, 1 ), 0.0, -1.45746, 0, 0, Vector2( 1, 0 ), 0.00323196, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=10] +offsets = PoolRealArray( 0, 0.515152 ) +colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 0.290196, 1 ) + +[node name="Cop" type="Node2D" groups=["cop", "enemy"]] +script = ExtResource( 1 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +show_behind_parent = true +material = SubResource( 7 ) +position = Vector2( 5, -2 ) +frames = SubResource( 6 ) +animation = "idle" +playing = true + +[node name="ShootPosition" type="Position2D" parent="AnimatedSprite"] +unique_name_in_owner = true +position = Vector2( 7, 0.5 ) +__meta__ = { +"_gizmo_extents_": 4.0 +} + +[node name="ShootCast" type="RayCast2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +enabled = true +cast_to = Vector2( 72, 0 ) +collision_mask = 8 +collide_with_areas = true + +[node name="GraphicsCast" type="RayCast2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +visible = false +cast_to = Vector2( 256, 0 ) +collision_mask = 8 + +[node name="ShootLine" type="Line2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +visible = false +points = PoolVector2Array( 0, 0, 8, 0 ) +width = 1.0 +default_color = Color( 1, 1, 0.290196, 1 ) + +[node name="MuzzleFlashParticles" type="CPUParticles2D" parent="AnimatedSprite/ShootPosition"] +pause_mode = 2 +unique_name_in_owner = true +rotation = 1.0472 +emitting = false +amount = 6 +lifetime = 0.1 +one_shot = true +explosiveness = 0.75 +draw_order = 1 +texture = ExtResource( 7 ) +gravity = Vector2( 0, 0 ) +angle = 120.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 11 ) +color_ramp = SubResource( 12 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 4, 0 ) +shape = SubResource( 8 ) + +[node name="SparkParticles" type="CPUParticles2D" parent="."] +position = Vector2( 4, 0 ) +emitting = false +amount = 16 +lifetime = 0.5 +one_shot = true +explosiveness = 1.0 +texture = ExtResource( 6 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 30.0 +initial_velocity_random = 0.5 +damping = 50.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_curve = SubResource( 9 ) +color_ramp = SubResource( 10 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/death_particles.gd b/objects/enemy/death_particles.gd new file mode 100644 index 0000000..24d7af4 --- /dev/null +++ b/objects/enemy/death_particles.gd @@ -0,0 +1,22 @@ +extends CPUParticles2D + + +const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") + + +export var spray_ammount: int = 16 +export var spray_velocity: float = 80 +export var autoplay: bool = false +export var spray_scale: float = 1.0 + + +func _ready() -> void: + if autoplay: + emitting = true + yield(get_tree(), "idle_frame") + for i in spray_ammount: + var spray = BloodSpray.instance() + spray.global_position = global_position + spray.velocity = Vector2(randf() * spray_velocity, 0.0).rotated(randf() * TAU) + spray.scale = Vector2(spray_scale, spray_scale) + get_parent().add_child(spray) diff --git a/objects/enemy/death_particles.tscn b/objects/enemy/death_particles.tscn index 52c3390..1c620e2 100644 --- a/objects/enemy/death_particles.tscn +++ b/objects/enemy/death_particles.tscn @@ -1,13 +1,15 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://graphics/particles/blood.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/death_particles.gd" type="Script" id=2] [sub_resource type="Curve" id=43] _data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] [node name="DeathSplatter" type="CPUParticles2D"] emitting = false -lifetime = 0.2 +amount = 32 +lifetime = 0.3 one_shot = true explosiveness = 0.9 local_coords = false @@ -25,3 +27,4 @@ angle_random = 1.0 scale_amount = 0.5 scale_amount_random = 1.0 scale_amount_curve = SubResource( 43 ) +script = ExtResource( 2 ) diff --git a/objects/enemy/death_particles_big.gd b/objects/enemy/death_particles_big.gd new file mode 100644 index 0000000..f9e15c7 --- /dev/null +++ b/objects/enemy/death_particles_big.gd @@ -0,0 +1,20 @@ +extends CPUParticles2D + + +const BloodSpray := preload("res://objects/environment/blood/blood_spray_big.tscn") + + +export var spray_ammount: int = 1 +export var spray_velocity: float = 120 +export var autoplay: bool = false + + +func _ready() -> void: + if autoplay: + emitting = true + yield(get_tree(), "idle_frame") + for i in spray_ammount: + var spray = BloodSpray.instance() + spray.global_position = global_position + spray.velocity = Vector2(randf() * spray_velocity, 0.0).rotated(randf() * (TAU / 45)) + get_parent().add_child(spray) diff --git a/objects/enemy/death_particles_big.tscn b/objects/enemy/death_particles_big.tscn new file mode 100644 index 0000000..035dc72 --- /dev/null +++ b/objects/enemy/death_particles_big.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/particles/blood.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/death_particles_big.gd" type="Script" id=2] + +[sub_resource type="Curve" id=43] +_data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] + +[node name="DeathSplatter" type="CPUParticles2D"] +emitting = false +amount = 32 +lifetime = 0.3 +one_shot = true +explosiveness = 0.9 +local_coords = false +texture = ExtResource( 1 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 50 ) +initial_velocity = 60.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 43 ) +script = ExtResource( 2 ) diff --git a/objects/enemy/death_particles_famira.gd b/objects/enemy/death_particles_famira.gd new file mode 100644 index 0000000..e250c94 --- /dev/null +++ b/objects/enemy/death_particles_famira.gd @@ -0,0 +1,23 @@ +extends CPUParticles2D + + +const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") + + +export var spray_ammount: int = 16 +export var spray_velocity: float = 80 +export var autoplay: bool = false +export var spray_scale: float = 1.0 + + +func _ready() -> void: + if autoplay: + emitting = true + yield(get_tree(), "idle_frame") + for i in spray_ammount: + var spray = BloodSpray.instance() + spray.global_position = global_position + spray.velocity = Vector2(randf() * spray_velocity, 0.0).rotated(randf() * TAU) + spray.scale = Vector2(spray_scale, spray_scale) + spray.color = Color(0x9ccd67ff) + get_parent().add_child(spray) diff --git a/objects/enemy/death_particles_famira.tscn b/objects/enemy/death_particles_famira.tscn new file mode 100644 index 0000000..a6efa46 --- /dev/null +++ b/objects/enemy/death_particles_famira.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/particles/blood.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/death_particles_famira.gd" type="Script" id=2] + +[sub_resource type="Curve" id=43] +_data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] + +[node name="DeathSplatter" type="CPUParticles2D"] +emitting = false +amount = 32 +lifetime = 0.3 +one_shot = true +explosiveness = 0.9 +local_coords = false +texture = ExtResource( 1 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 50 ) +initial_velocity = 60.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 43 ) +script = ExtResource( 2 ) diff --git a/objects/enemy/eel.gd b/objects/enemy/eel.gd new file mode 100644 index 0000000..86d19ee --- /dev/null +++ b/objects/enemy/eel.gd @@ -0,0 +1,90 @@ +extends "res://objects/enemy/enemy.gd" + + +# distance between segments +const SEGMENT_LENGTH: float = 4.0 + +# number of segments +export var segments: int = 8 +# speed eel travels +export var speed: float = 32.0 +# how far eel travels along path for complete wave +export var wave_length: float = 0.0 +# intensity in pixels of eel wave animation +export var wave_amplitude: float = 0.0 + +var _segments: Array + +onready var head: PathFollow2D = $Head +onready var tail: PathFollow2D = $Tail + + +func _ready() -> void: + # get nodes + var first_segment: PathFollow2D = $Segment + var first_segment_shape: CollisionShape2D = $"%SegmentShape" + # initialize segments array + _segments = [] + _segments.resize(segments) + # loop for number of segments needed + for i in segments: + # create and add new segment instance + var new_segment = first_segment.duplicate() + add_child(new_segment) + _segments[i] = new_segment + # add new shape to hitbox + var new_segment_shape = first_segment_shape.duplicate() + $Hitbox.add_child(new_segment_shape) + # link segment's remote transform to its collision shape + var new_shape_transform = new_segment.get_node("ShapeTransform") + new_shape_transform.remote_path = new_shape_transform.get_path_to(new_segment_shape) + # free template segment + first_segment.queue_free() + first_segment_shape.queue_free() + + +func _physics_process(delta: float) -> void: + # move along path + head.offset += speed * delta + # position segments accordingly + _offset_segments() + # waving animation + _wave_segments() + + +func _offset_segments() -> void: + # put tail at end + tail.offset = head.offset - SEGMENT_LENGTH * float(segments + 1) + # loop through segments + for i in _segments.size(): + # set segment position based on index and length + _segments[i].offset = head.offset - SEGMENT_LENGTH * float(i + 1) + + +func _wave_segments() -> void: + # save the effort of looping if nothing will come of it + if wave_length == 0.0 and wave_amplitude == 0.0: + return + for child in get_children(): + # only affect childent that are pathfollows + var segment = child as PathFollow2D + if segment: + # multiply by tau to use pixels as unit + segment.v_offset = sin(segment.offset * TAU / wave_length) * wave_amplitude + + +func die() -> void: + # instance death particles for every segment + for segment in _segments: + # instance particles for this segment + var death_particles = DeathParticles.instance() + # TODO: something is wrong here, particles to not show up in correct position + death_particles.global_transform = segment.global_transform + # tone them down a little per-segment + death_particles.amount /= 4 + death_particles.initial_velocity /= 2.0 + # emit + death_particles.emitting = true + # detach from self + get_parent().add_child(death_particles) + .die() diff --git a/objects/enemy/eel.tscn b/objects/enemy/eel.tscn new file mode 100644 index 0000000..f4afb0a --- /dev/null +++ b/objects/enemy/eel.tscn @@ -0,0 +1,115 @@ +[gd_scene load_steps=13 format=2] + +[ext_resource path="res://objects/enemy/eel.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/eel_head.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/eel_body.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/eel_tail.png" type="Texture" id=4] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=6] + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 2, 2 ) + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 4.5, 2 ) + +[sub_resource type="RectangleShape2D" id=9] +extents = Vector2( 2, 2 ) + +[sub_resource type="AtlasTexture" id=10] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 14, 12 ) + +[sub_resource type="AtlasTexture" id=11] +atlas = ExtResource( 2 ) +region = Rect2( 14, 0, 14, 12 ) + +[sub_resource type="SpriteFrames" id=12] +animations = [ { +"frames": [ SubResource( 10 ), SubResource( 11 ) ], +"loop": true, +"name": "chomp", +"speed": 8.0 +} ] + +[sub_resource type="ShaderMaterial" id=6] +shader = ExtResource( 6 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[node name="Eel" type="Path2D" groups=["enemy"]] +curve = null +script = ExtResource( 1 ) +segments = 2 + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] +position = Vector2( 4, 0 ) +z_index = 2 + +[node name="TailShape" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( -4, 0 ) +shape = SubResource( 8 ) + +[node name="HeadShape" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( -1.5, 0 ) +shape = SubResource( 7 ) + +[node name="SegmentShape" type="CollisionShape2D" parent="Hitbox"] +unique_name_in_owner = true +position = Vector2( -4, 0 ) +shape = SubResource( 9 ) + +[node name="Head" type="PathFollow2D" parent="." groups=["eel_segment"]] +offset = 8.0 +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="AnimatedSprite" parent="Head"] +position = Vector2( 4, 0 ) +z_index = 1 +frames = SubResource( 12 ) +animation = "chomp" +playing = true + +[node name="Border" type="AnimatedSprite" parent="Head/Sprite"] +material = SubResource( 6 ) +frames = SubResource( 12 ) +animation = "chomp" +playing = true + +[node name="ShapeTransform" type="RemoteTransform2D" parent="Head"] +position = Vector2( 2.5, 0 ) +remote_path = NodePath("../../Hitbox/HeadShape") + +[node name="Tail" type="PathFollow2D" parent="."] +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="Sprite" parent="Tail"] +position = Vector2( -2, 0 ) +z_index = 1 +texture = ExtResource( 4 ) + +[node name="Border" type="Sprite" parent="Tail/Sprite"] +material = SubResource( 6 ) +texture = ExtResource( 4 ) + +[node name="ShapeTransform" type="RemoteTransform2D" parent="Tail"] +remote_path = NodePath("../../Hitbox/TailShape") + +[node name="Segment" type="PathFollow2D" parent="."] +offset = 4.0 +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="Sprite" parent="Segment"] +z_index = 1 +texture = ExtResource( 3 ) + +[node name="Border" type="Sprite" parent="Segment/Sprite"] +material = SubResource( 6 ) +texture = ExtResource( 3 ) + +[node name="ShapeTransform" type="RemoteTransform2D" parent="Segment"] +remote_path = NodePath("../../Hitbox/SegmentShape") + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/enemy.gd b/objects/enemy/enemy.gd index 58b5188..db51571 100644 --- a/objects/enemy/enemy.gd +++ b/objects/enemy/enemy.gd @@ -8,6 +8,8 @@ extends Node2D const DeathParticles = preload("res://objects/enemy/death_particles.tscn") +signal died() + ### these variables have been replaced with groups to put on the hitbox ### - "blocks_arrow" ### - "blocks_sword" @@ -16,15 +18,14 @@ const DeathParticles = preload("res://objects/enemy/death_particles.tscn") #export var can_be_killed_by_arrow = true #export var can_be_squashed = true -export var score_for_killing = 0 export var blood = true -var death_sound = Game.a_die +export var death_sound: AudioStream = preload("res://audio/sounds/die.ogg") var death_blood_offset = Vector2.ZERO func _on_Hitbox_area_entered(area): #Kill player - if area.is_in_group("player"): + if area.is_in_group("player_hitbox"): area.get_parent().die() func die(): @@ -34,6 +35,6 @@ func die(): death_particles.emitting = true get_parent().add_child(death_particles) - Game.play_sound(death_sound, Game.ac_die) - Game.score += score_for_killing + Audio.play_sound(death_sound, Audio.ac_die) + emit_signal("died") queue_free() diff --git a/objects/enemy/enemy_arrow.tscn b/objects/enemy/enemy_arrow.tscn index 7e1dc44..87f9239 100644 --- a/objects/enemy/enemy_arrow.tscn +++ b/objects/enemy/enemy_arrow.tscn @@ -1,26 +1,30 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] [ext_resource path="res://graphics/player/arrow.png" type="Texture" id=2] [ext_resource path="res://objects/player/arrow_projectile.gd" type="Script" id=3] [ext_resource path="res://graphics/particles/dust.png" type="Texture" id=4] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=5] [sub_resource type="ShaderMaterial" id=1] +resource_local_to_scene = true shader = ExtResource( 1 ) shader_param/border_color = Color( 0, 0, 0, 1 ) -shader_param/border_corners = true +shader_param/border_corners = false +shader_param/palette = ExtResource( 5 ) [sub_resource type="Curve" id=3] _data = [ Vector2( 0, 1 ), 0.0, -0.139481, 0, 0, Vector2( 1, 0 ), -2.82064, 0.0, 0, 0 ] [sub_resource type="RectangleShape2D" id=7] -extents = Vector2( 4.5, 0.5 ) +extents = Vector2( 5.75, 0.5 ) [sub_resource type="Curve" id=6] _data = [ Vector2( 0, 1 ), 0.0, -1.45746, 0, 0, Vector2( 1, 0 ), 0.00323196, 0.0, 0, 0 ] [node name="ArrowProjectile" type="Node2D"] script = ExtResource( 3 ) +target_group = "player_hitbox" [node name="Sprite" type="Sprite" parent="."] material = SubResource( 1 ) @@ -46,6 +50,8 @@ scale_amount_random = 0.25 scale_amount_curve = SubResource( 3 ) [node name="Hitbox" type="Area2D" parent="." groups=["arrow"]] +collision_layer = 4 +collision_mask = 5 [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] position = Vector2( -0.5, -0.5 ) diff --git a/objects/enemy/enemy_climber.gd b/objects/enemy/enemy_climber.gd deleted file mode 100644 index 9289230..0000000 --- a/objects/enemy/enemy_climber.gd +++ /dev/null @@ -1,15 +0,0 @@ -extends "res://objects/enemy/enemy.gd" - -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" - - -# Called when the node enters the scene tree for the first time. -func _ready(): - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass diff --git a/objects/enemy/enemy_jump.gd b/objects/enemy/enemy_jump.gd index 64897c3..74fbc89 100644 --- a/objects/enemy/enemy_jump.gd +++ b/objects/enemy/enemy_jump.gd @@ -12,6 +12,9 @@ onready var sprite = $Sprite func _ready(): anims.play("idle") + # adjust to difficulty + speed *= Game.enemy_speed_factor + anims.playback_speed *= Game.enemy_speed_factor func _physics_process(delta): if anims.current_animation == "jump": diff --git a/objects/enemy/enemy_move_diagonal.gd b/objects/enemy/enemy_move_diagonal.gd new file mode 100644 index 0000000..e718565 --- /dev/null +++ b/objects/enemy/enemy_move_diagonal.gd @@ -0,0 +1,34 @@ +extends "res://objects/enemy/enemy.gd" + +#How far to move +export var up_boundary = 0.0 +export var down_boundary = 0.0 +#Start direction +var direction = Vector2(1,1) +export var speed = 50 +#Move horizontal or vertical +export(int, "/", "\\") var move_direction +#Onreadys +onready var startpos = position + +func _ready(): + death_sound = Audio.a_explosion + up_boundary *= 8 + down_boundary *= 8 + #Move in direction selected + if move_direction == 0: + direction = Vector2(1,-1) + # adjust to difficulty + speed *= Game.enemy_speed_factor + +func _physics_process(delta): + #Move + position += direction * (speed * delta) + #Switch dir + if position.y >= startpos.y + (down_boundary): + direction *= -1 + if position.y <= startpos.y - (up_boundary): + direction *= -1 + +func die(): + .die() diff --git a/objects/enemy/enemy_move_sidesideupdown.gd b/objects/enemy/enemy_move_sidesideupdown.gd index ab350f3..86cec17 100644 --- a/objects/enemy/enemy_move_sidesideupdown.gd +++ b/objects/enemy/enemy_move_sidesideupdown.gd @@ -1,24 +1,35 @@ +tool extends "res://objects/enemy/enemy.gd" +enum Direction {HORIZONTAL, VERTICAL} + #How far to move -export var left_up_boundry = 0.0 -export var right_down_boundry = 0.0 +export var left_up_boundary = 0.0 setget _set_left_up_boundary +export var right_down_boundary = 0.0 setget _set_right_down_boundary #Start direction export var direction = 1 export var speed = 50 #Move horizontal or vertical -export(int, "Horizontal", "Vertical") var move_direction -export var flip_sprite = true +export(Direction) var move_direction +export var node_to_flip: NodePath #Onreadys onready var startpos = position -onready var sprite = $AnimatedSprite +onready var _flipped_node: Node2D = get_node_or_null(node_to_flip) func _ready(): - left_up_boundry *= 8 - right_down_boundry *= 8 + if Engine.editor_hint: + return + left_up_boundary *= 8 + right_down_boundary *= 8 + # adjust to difficulty + speed *= Game.enemy_speed_factor func _physics_process(delta): - if move_direction == 0: + if Engine.editor_hint: + return + if right_down_boundary == 0 and left_up_boundary == 0: + return + elif move_direction == 0: move_side_to_side(delta) else: move_up_and_down(delta) @@ -26,20 +37,51 @@ func move_side_to_side(delta): #Move position.x += direction * (speed * delta) #Switch dir - if position.x >= startpos.x + (right_down_boundry): + if position.x >= startpos.x + (right_down_boundary): direction = -1 - if flip_sprite == true: sprite.scale.x = -1 - if position.x <= startpos.x + (-left_up_boundry): + if is_instance_valid(_flipped_node): + _flipped_node.scale.x = -1.0 + if position.x <= startpos.x + (-left_up_boundary): direction = 1 - if flip_sprite == true: sprite.scale.x = 1 + if is_instance_valid(_flipped_node): + _flipped_node.scale.x = 1.0 func move_up_and_down(delta): #Move position.y += direction * (speed * delta) #Switch dir - if position.y >= startpos.y + (right_down_boundry): + if position.y >= startpos.y + (right_down_boundary): direction = -1 - if flip_sprite == true: sprite.scale.y = 1 - if position.y <= startpos.y + (-left_up_boundry): + if is_instance_valid(_flipped_node): + _flipped_node.scale.y = 1.0 + if position.y <= startpos.y + (-left_up_boundary): direction = 1 - if flip_sprite == true: sprite.scale.y = -1 + if is_instance_valid(_flipped_node): + _flipped_node.scale.y = -1.0 + +# editor debug drawing +func _draw(): + if Engine.editor_hint: + match move_direction: + Direction.HORIZONTAL: + draw_line( + Vector2(-left_up_boundary * 8.0, 0.0), + Vector2(right_down_boundary * 8.0, 0.0), + Color(0.4, 0.2, 0.6, 0.75), 1.01, false + ) + Direction.VERTICAL: + draw_line( + Vector2(0.0, -left_up_boundary * 8.0), + Vector2(0.0, right_down_boundary * 8.0), + Color(0.4, 0.2, 0.6, 0.75), 1.01, false + ) + +func _set_left_up_boundary(value): + left_up_boundary = value + if Engine.editor_hint: + update() + +func _set_right_down_boundary(value): + right_down_boundary = value + if Engine.editor_hint: + update() diff --git a/objects/enemy/enemy_speedup_in_range.gd b/objects/enemy/enemy_speedup_in_range.gd index 4eb24f6..6fb0ebc 100644 --- a/objects/enemy/enemy_speedup_in_range.gd +++ b/objects/enemy/enemy_speedup_in_range.gd @@ -1,8 +1,8 @@ extends "res://objects/enemy/enemy.gd" #How far to move -export var left_up_boundry = 0.0 -export var right_down_boundry = 0.0 +export var left_up_boundary = 0.0 +export var right_down_boundary = 0.0 #Start direction export var direction = 1 export var slower_speed = 50 @@ -19,13 +19,19 @@ onready var timer = $Timer var speed = 50 var go_fast = false +func _ready(): + # adjust to difficulty + speed *= Game.enemy_speed_factor + slower_speed *= Game.enemy_speed_factor + faster_speed *= Game.enemy_speed_factor + func _physics_process(delta): if move_direction == 0: move_side_to_side(delta) else: move_up_and_down(delta) #Speed up if in raycast if raycast.get_collider() != null: - if raycast.get_collider().is_in_group("player"): + if raycast.get_collider().is_in_group("player_hitbox"): go_fast = true timer.set_wait_time(0.5) timer.start() @@ -42,10 +48,10 @@ func move_side_to_side(delta): #Move position.x += direction * (speed * delta) #Switch dir - if position.x >= startpos.x + (right_down_boundry * 8): + if position.x >= startpos.x + (right_down_boundary * 8): direction = -1 if flip_sprite == true: sprite.scale.x = -1 - if position.x <= startpos.x + (-left_up_boundry * 8): + if position.x <= startpos.x + (-left_up_boundary * 8): direction = 1 if flip_sprite == true: sprite.scale.x = 1 @@ -53,10 +59,10 @@ func move_up_and_down(delta): #Move position.y += direction * (speed * delta) #Switch dir - if position.y >= startpos.y + (right_down_boundry * 8): + if position.y >= startpos.y + (right_down_boundary * 8): direction = -1 if flip_sprite == true: sprite.scale.y = 1 - if position.y <= startpos.y + (-left_up_boundry * 8): + if position.y <= startpos.y + (-left_up_boundary * 8): direction = 1 if flip_sprite == true: sprite.scale.y = -1 diff --git a/objects/enemy/explosion.gd b/objects/enemy/explosion.gd new file mode 100644 index 0000000..c233713 --- /dev/null +++ b/objects/enemy/explosion.gd @@ -0,0 +1,11 @@ +extends "res://objects/enemy/enemy.gd" + +func _ready(): + $AnimatedSprite.play("explode") + Audio.play_sound(Audio.a_explosion,Audio.ac_boss) + +func _on_animation_finished(): + queue_free() + +func die(): + return diff --git a/objects/enemy/explosion.tscn b/objects/enemy/explosion.tscn new file mode 100644 index 0000000..8362a16 --- /dev/null +++ b/objects/enemy/explosion.tscn @@ -0,0 +1,56 @@ +[gd_scene load_steps=11 format=2] + +[ext_resource path="res://objects/enemy/explosion.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/explosion.png" type="Texture" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 2 ) +region = Rect2( 64, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 2 ) +region = Rect2( 128, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 2 ) +region = Rect2( 192, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 2 ) +region = Rect2( 256, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 2 ) +region = Rect2( 320, 0, 64, 64 ) + +[sub_resource type="SpriteFrames" id=7] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ) ], +"loop": false, +"name": "explode", +"speed": 10.0 +} ] + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 24, 24 ) + +[node name="Explosion" type="Node2D"] +pause_mode = 2 +script = ExtResource( 1 ) +blood = false + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +frames = SubResource( 7 ) +animation = "explode" + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox", "explosion"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +shape = SubResource( 8 ) + +[connection signal="animation_finished" from="AnimatedSprite" to="." method="_on_animation_finished"] +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/fish.tscn b/objects/enemy/fish.tscn new file mode 100644 index 0000000..876e086 --- /dev/null +++ b/objects/enemy/fish.tscn @@ -0,0 +1,87 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://graphics/enemy/fish.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/enemy_move_sidesideupdown.gd" type="Script" id=3] + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 11, 10 ) + +[sub_resource type="AtlasTexture" id=7] +atlas = ExtResource( 1 ) +region = Rect2( 11, 0, 11, 10 ) + +[sub_resource type="AtlasTexture" id=10] +atlas = ExtResource( 1 ) +region = Rect2( 22, 0, 11, 10 ) + +[sub_resource type="SpriteFrames" id=4] +animations = [ { +"frames": [ SubResource( 6 ), SubResource( 7 ), SubResource( 6 ), SubResource( 10 ) ], +"loop": true, +"name": "default", +"speed": 7.0 +} ] + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 4, 4 ) + +[sub_resource type="Animation" id=8] +resource_name = "glow" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("AnimatedSprite:modulate") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 0.5, 4, 1 ), +"update": 0, +"values": [ Color( 1.5, 1.5, 1.5, 1 ), Color( 0.8, 0.8, 0.8, 1 ), Color( 1.5, 1.5, 1.5, 1 ) ] +} + +[sub_resource type="Animation" id=9] +resource_name = "bob" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("AnimatedSprite:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ), Vector2( 0, 2 ), Vector2( 0, 6 ) ] +} + +[node name="Fish" type="Node2D" groups=["enemy"]] +script = ExtResource( 3 ) +node_to_flip = NodePath("AnimatedSprite") + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +modulate = Color( 0.8, 0.8, 0.8, 1 ) +light_mask = 0 +frames = SubResource( 4 ) +frame = 2 +playing = true + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 0, 4 ) +shape = SubResource( 5 ) + +[node name="GlowAnim" type="AnimationPlayer" parent="."] +autoplay = "glow" +anims/glow = SubResource( 8 ) + +[node name="BobAnim" type="AnimationPlayer" parent="."] +autoplay = "bob" +anims/bob = SubResource( 9 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/ghost.tscn b/objects/enemy/ghost.tscn index d6556c8..672821d 100644 --- a/objects/enemy/ghost.tscn +++ b/objects/enemy/ghost.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=8 format=2] [ext_resource path="res://graphics/enemy/ghost.png" type="Texture" id=1] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] [ext_resource path="res://objects/enemy/ghost.gd" type="Script" id=3] [sub_resource type="Animation" id=3] diff --git a/objects/enemy/gore_particle.tscn b/objects/enemy/gore_particle.tscn new file mode 100644 index 0000000..43c05fb --- /dev/null +++ b/objects/enemy/gore_particle.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/particles/blood.png" type="Texture" id=1] + +[sub_resource type="PhysicsMaterial" id=4] +bounce = 0.25 + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 1, 1 ) + +[node name="GoreParticle" type="RigidBody2D"] +collision_layer = 16 +physics_material_override = SubResource( 4 ) + +[node name="Sprite" type="Sprite" parent="."] +scale = Vector2( 0.5, 0.5 ) +texture = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 3 ) diff --git a/objects/enemy/hellarcher.tscn b/objects/enemy/hellarcher.tscn new file mode 100644 index 0000000..11a6095 --- /dev/null +++ b/objects/enemy/hellarcher.tscn @@ -0,0 +1,132 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/enemy/hellarcher_shoot.png" type="Texture" id=2] +[ext_resource path="res://objects/enemy/skelarcher.gd" type="Script" id=3] + +[sub_resource type="ShaderMaterial" id=18] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="RectangleShape2D" id=10] +extents = Vector2( 4, 4 ) + +[sub_resource type="Animation" id=19] +resource_name = "idle" +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Rect2( 0, 0, 19, 20 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:texture") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 2 ) ] +} + +[sub_resource type="Animation" id=20] +resource_name = "shoot" +length = 0.5 +step = 0.06 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.06, 0.12, 0.24, 0.3, 0.36, 0.42 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Rect2( 0, 0, 19, 20 ), Rect2( 19, 0, 19, 20 ), Rect2( 38, 0, 19, 20 ), Rect2( 76, 0, 19, 20 ), Rect2( 95, 0, 19, 20 ), Rect2( 114, 0, 19, 20 ), Rect2( 133, 0, 19, 20 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:texture") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 2 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("AnimationPlayer:current_animation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.48 ), +"transitions": PoolRealArray( 1 ), +"update": 2, +"values": [ "idle" ] +} +tracks/3/type = "method" +tracks/3/path = NodePath(".") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.24 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "spawn_arrow" +} ] +} + +[node name="Hellarcher" type="Node2D" groups=["enemy"]] +script = ExtResource( 3 ) +blood = false +shoot_time = 2.0 +arrow_speed = 80.0 + +[node name="Sprite" type="Sprite" parent="."] +material = SubResource( 18 ) +position = Vector2( 5, -2 ) +texture = ExtResource( 2 ) +region_enabled = true +region_rect = Rect2( 133, 0, 19, 20 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] +position = Vector2( 5, -2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( -1, 6 ) +shape = SubResource( 10 ) + +[node name="Timer" type="Timer" parent="."] + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/idle = SubResource( 19 ) +anims/shoot = SubResource( 20 ) + +[node name="ArrowSpawnR" type="Position2D" parent="."] +visible = false +position = Vector2( 9, 2 ) + +[node name="ArrowSpawnL" type="Position2D" parent="."] +visible = false +position = Vector2( -9, 2 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] diff --git a/objects/enemy/laser_wall.gd b/objects/enemy/laser_wall.gd new file mode 100644 index 0000000..931bfae --- /dev/null +++ b/objects/enemy/laser_wall.gd @@ -0,0 +1,48 @@ +extends "res://objects/enemy/enemy_move_sidesideupdown.gd" + +export var off_time = 1.0 +export var on_time = 0.5 +export var delay = 0.0 + +onready var line = $Laser +onready var cast = $RayCast2D +onready var timer = $Timer +onready var sparks = $SparkParticles + +func _ready(): + yield(get_tree().create_timer(delay, false), "timeout") + _disable_laser() + # adjust to difficulty + off_time /= Game.enemy_speed_factor + on_time /= Game.enemy_speed_factor + +func _physics_process(delta): + if cast.is_colliding(): + line.points[1].y = line.to_local(cast.get_collision_point()).y + line.visible = true + sparks.global_position = cast.get_collision_point() + sparks.emitting = true + + var collider = cast.get_collider() + if collider.is_in_group("player_hitbox") or collider.is_in_group("msx"): + collider.get_parent().die() + else: + line.visible = false + sparks.emitting = false + +func switch_action(): + cast.enabled = false + off_time = INF + on_time = 0 + +func _enable_laser(): + cast.enabled = true + timer.wait_time = on_time + timer.connect("timeout", self, "_disable_laser", [], CONNECT_ONESHOT) + timer.start() + +func _disable_laser(): + cast.enabled = false + timer.wait_time = off_time + timer.connect("timeout", self, "_enable_laser", [], CONNECT_ONESHOT) + timer.start() diff --git a/objects/enemy/laser_wall.tscn b/objects/enemy/laser_wall.tscn new file mode 100644 index 0000000..9b0a909 --- /dev/null +++ b/objects/enemy/laser_wall.tscn @@ -0,0 +1,82 @@ +[gd_scene load_steps=9 format=2] + +[ext_resource path="res://graphics/enemy/laser_wall.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/laser_wall.gd" type="Script" id=2] +[ext_resource path="res://shaders/color_noise.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=4] +[ext_resource path="res://graphics/enemy/tin_eye.png" type="Texture" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/animate_noise = true +shader_param/noise_intensity = 0.5 + +[sub_resource type="Curve" id=2] +_data = [ Vector2( 0, 1 ), 0.0, -1.45746, 0, 0, Vector2( 1, 0 ), 0.00323196, 0.0, 0, 0 ] + +[sub_resource type="Animation" id=3] +resource_name = "eye hue" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Eye:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.560784, 1, 0.560784, 1 ), Color( 1, 0.56, 0.567333, 1 ), Color( 0.560784, 1, 0.560784, 1 ) ] +} + +[node name="LaserWall" type="Node2D"] +script = ExtResource( 2 ) +blood = false +speed = 16 + +[node name="Laser" type="Line2D" parent="."] +material = SubResource( 1 ) +position = Vector2( 4, 2 ) +points = PoolVector2Array( 0, 0, 0, 8 ) +width = 2.0 +default_color = Color( 0.960784, 0.2, 0.258824, 1 ) + +[node name="RayCast2D" type="RayCast2D" parent="."] +position = Vector2( 4, 2 ) +cast_to = Vector2( 0, 256 ) +collision_mask = 10 +collide_with_areas = true + +[node name="Timer" type="Timer" parent="."] +process_mode = 0 +one_shot = true + +[node name="SparkParticles" type="CPUParticles2D" parent="."] +position = Vector2( 4, 0 ) +amount = 16 +lifetime = 0.5 +texture = ExtResource( 4 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 30.0 +initial_velocity_random = 0.5 +damping = 50.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.3 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 1, 0.290196, 1 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) +centered = false + +[node name="Eye" type="Sprite" parent="."] +modulate = Color( 0.560784, 1, 0.560784, 1 ) +position = Vector2( 4, 1 ) +texture = ExtResource( 5 ) + +[node name="EyeAnim" type="AnimationPlayer" parent="."] +autoplay = "eye hue" +"anims/eye hue" = SubResource( 3 ) diff --git a/objects/enemy/mine.gd b/objects/enemy/mine.gd new file mode 100644 index 0000000..934af7e --- /dev/null +++ b/objects/enemy/mine.gd @@ -0,0 +1,28 @@ +extends "res://objects/enemy/enemy.gd" + +const Explosion = preload("res://objects/enemy/explosion.tscn") + +onready var chain = $Chain +onready var hitbox = $Hitbox + +func _ready(): + var ground_cast = $GroundCast + ground_cast.force_raycast_update() + if ground_cast.is_colliding(): + chain.points[1].y = chain.to_local(ground_cast.get_collision_point()).y + +func _process(delta): + chain.points[0].x = hitbox.position.x + +func _on_Hitbox_area_entered(area): + if area.is_in_group("explosion"): + var timer = get_tree().create_timer(0.2, false) + timer.connect("timeout", self, "die") + if area.is_in_group("player_hitbox"): + die() + +func die(): + var explosion = Explosion.instance() + explosion.global_position = hitbox.global_position + get_parent().call_deferred("add_child", explosion) + queue_free() diff --git a/objects/enemy/mine.tscn b/objects/enemy/mine.tscn new file mode 100644 index 0000000..e458781 --- /dev/null +++ b/objects/enemy/mine.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://objects/enemy/mine.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/mine.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/chain.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=4] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 7, 7.5 ) + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Hitbox:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 8 ) ] +} +tracks/1/type = "bezier" +tracks/1/path = NodePath("Hitbox:position:x") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"points": PoolRealArray( 8, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0 ) +} +tracks/2/type = "bezier" +tracks/2/path = NodePath("Hitbox:position:y") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"points": PoolRealArray( 8, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0 ) +} + +[sub_resource type="Animation" id=3] +resource_name = "sway" +length = 8.0 +loop = true +tracks/0/type = "bezier" +tracks/0/path = NodePath("Hitbox:position:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"points": PoolRealArray( 4, -1.7, -0.0788159, 1.7, 0.0788159, 12, -1.9, -0.00271606, 1.9, 0.00271606, 4, -1.6, -0.0139103, 1.6, 0.0139103 ), +"times": PoolRealArray( 0, 4, 8 ) +} +tracks/1/type = "bezier" +tracks/1/path = NodePath("Hitbox:position:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"points": PoolRealArray( 8, -0.25, 0, 0.25, 0, 8, -0.25, 0, 0.25, 0, 8, -0.25, 0, 0.25, 0, 8, -0.25, 0, 0.25, 0, 8, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0, 2, 4, 6, 8 ) +} + +[node name="Mine" type="Node2D"] +script = ExtResource( 1 ) +blood = false + +[node name="GroundCast" type="RayCast2D" parent="."] +visible = false +position = Vector2( 8, 8 ) +cast_to = Vector2( 0, 192 ) + +[node name="Chain" type="Line2D" parent="."] +material = SubResource( 4 ) +position = Vector2( 0, 8 ) +points = PoolVector2Array( 8, 0, 8, 16 ) +width = 4.0 +default_color = Color( 1, 1, 1, 1 ) +texture = ExtResource( 3 ) +texture_mode = 1 + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] +position = Vector2( 8, 8 ) + +[node name="Sprite" type="Sprite" parent="Hitbox"] +texture = ExtResource( 2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 0, 0.5 ) +shape = SubResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 2 ) +anims/sway = SubResource( 3 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/robosnake.tscn b/objects/enemy/robosnake.tscn new file mode 100644 index 0000000..e98abe4 --- /dev/null +++ b/objects/enemy/robosnake.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://objects/enemy/snake.tscn" type="PackedScene" id=1] + +[node name="Snake" instance=ExtResource( 1 )] + +[node name="AnimatedSprite" parent="." index="0"] +animation = "robo" +frame = 1 diff --git a/objects/enemy/robot_die.gd b/objects/enemy/robot_die.gd new file mode 100644 index 0000000..ff779ad --- /dev/null +++ b/objects/enemy/robot_die.gd @@ -0,0 +1,23 @@ +extends Node2D + + +const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") + + +export var spray_color := Color(0x20223aff) +export var spray_ammount: int = 16 +export var spray_velocity: float = 80 + + +func _ready() -> void: + $AnimatedSprite.playing = true + for i in spray_ammount: + var spray = BloodSpray.instance() + spray.color = spray_color + spray.global_position = global_position + spray.velocity = Vector2(randf() * spray_velocity, 0.0).rotated(randf() * TAU) + get_parent().add_child(spray) + + +func _on_AnimatedSprite_animation_finished(): + $AnimatedSprite.queue_free() diff --git a/objects/enemy/roboturret.gd b/objects/enemy/roboturret.gd new file mode 100644 index 0000000..bef4570 --- /dev/null +++ b/objects/enemy/roboturret.gd @@ -0,0 +1,49 @@ +extends "res://objects/enemy/enemy.gd" + +#Exports +export var shoot_time = 1.0 +export var arrow_speed = 80.0 +#Onready +onready var timer = $Timer +onready var anims = $AnimationPlayer +onready var shootpos = $ShootPos +onready var raycast = $RayCast2D +onready var muzzle_flash = $MuzzleFlashParticles +const ArrowProjectile = preload("res://objects/enemy/roboturret_proj.tscn") +const Death = preload("res://objects/enemy/roboturret_die.tscn") + +func _ready(): + timer.start(shoot_time) + death_sound = Audio.a_explosion + # adjust to difficulty + shoot_time /= Game.enemy_speed_factor + arrow_speed *= Game.enemy_speed_factor + +func _physics_process(delta): + if raycast.is_colliding(): + if raycast.get_collider().is_in_group("player_hitbox"): + if sign(shootpos.position.x) == -1: + anims.play("turn right") + else: + anims.play("turn left") + +func spawn_bullet(): + muzzle_flash.emitting = true + var arrow = ArrowProjectile.instance() + arrow.global_position = global_position + (shootpos.position * scale) + arrow.direction = sign(shootpos.position.x) * scale.x + arrow.target_group = "player_hitbox" + arrow.speed = arrow_speed + Game.get_map().add_child(arrow) + +func die(): + .die() + var death = Death.instance() + death.spray_color = Color(0xffbe42ff) + death.global_position = global_position + get_parent().add_child(death) + +func _on_Timer_timeout(): + if !anims.is_playing(): spawn_bullet() + + diff --git a/objects/enemy/roboturret.tscn b/objects/enemy/roboturret.tscn new file mode 100644 index 0000000..6d0d60f --- /dev/null +++ b/objects/enemy/roboturret.tscn @@ -0,0 +1,271 @@ +[gd_scene load_steps=14 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/enemy/roboturret.png" type="Texture" id=2] +[ext_resource path="res://objects/enemy/roboturret.gd" type="Script" id=3] +[ext_resource path="res://graphics/enemy/tin_eye.png" type="Texture" id=4] +[ext_resource path="res://graphics/particles/muzzle_flash.png" type="Texture" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ShootPos:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -9, 3 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("MuzzleFlashParticles:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 240.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("MuzzleFlashParticles:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -7, 3 ) ] +} + +[sub_resource type="Animation" id=3] +resource_name = "turn left" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 4, 3, 2, 1, 0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ShootPos:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ Vector2( 15, 3 ), Vector2( -9, 3 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("RayCast2D:cast_to") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ Vector2( -48, 0 ), Vector2( 48, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("MuzzleFlashParticles:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 60.0, 240.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("MuzzleFlashParticles:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 13, 3 ), Vector2( -7, 3 ) ] +} + +[sub_resource type="Animation" id=4] +resource_name = "turn right" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 4 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ShootPos:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ Vector2( -9, 3 ), Vector2( 15, 3 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("RayCast2D:cast_to") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ Vector2( 48, 0 ), Vector2( -48, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("MuzzleFlashParticles:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -7, 3 ), Vector2( 13, 3 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("MuzzleFlashParticles:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 240.0, 60.0 ] +} + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 2, 3 ) + +[sub_resource type="Animation" id=6] +resource_name = "eye hue" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Eye:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.560784, 1, 0.560784, 1 ), Color( 1, 0.56, 0.567333, 1 ), Color( 0.560784, 1, 0.560784, 1 ) ] +} + +[sub_resource type="Curve" id=7] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.5, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=8] +interpolation_mode = 2 +offsets = PoolRealArray( 0.20339, 0.432203 ) +colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 0.290196, 1 ) + +[node name="Roboturret" type="Node2D" groups=["enemy"]] +script = ExtResource( 3 ) +blood = false + +[node name="Sprite" type="Sprite" parent="."] +material = SubResource( 1 ) +position = Vector2( 3, 0 ) +texture = ExtResource( 2 ) +hframes = 5 +region_rect = Rect2( 20, 0, 20, 16 ) + +[node name="Eye" type="Sprite" parent="."] +modulate = Color( 0.912157, 0.648, 0.566023, 1 ) +position = Vector2( 3, 3 ) +texture = ExtResource( 4 ) + +[node name="ShootPos" type="Position2D" parent="."] +position = Vector2( -9, 3 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +playback_speed = 0.75 +anims/RESET = SubResource( 2 ) +"anims/turn left" = SubResource( 3 ) +"anims/turn right" = SubResource( 4 ) + +[node name="Timer" type="Timer" parent="."] + +[node name="RayCast2D" type="RayCast2D" parent="."] +position = Vector2( 3, 3 ) +enabled = true +cast_to = Vector2( 48, 0 ) +collision_mask = 10 +collide_with_areas = true + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 3, 5 ) +shape = SubResource( 5 ) + +[node name="EyeAnim" type="AnimationPlayer" parent="."] +autoplay = "eye hue" +"anims/eye hue" = SubResource( 6 ) + +[node name="MuzzleFlashParticles" type="CPUParticles2D" parent="."] +pause_mode = 2 +unique_name_in_owner = true +position = Vector2( -7, 3 ) +rotation = 4.18879 +emitting = false +amount = 6 +lifetime = 0.1 +one_shot = true +explosiveness = 0.75 +draw_order = 1 +texture = ExtResource( 5 ) +gravity = Vector2( 0, 0 ) +angle = 120.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 7 ) +color_ramp = SubResource( 8 ) + +[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/roboturret_die.tscn b/objects/enemy/roboturret_die.tscn new file mode 100644 index 0000000..791a040 --- /dev/null +++ b/objects/enemy/roboturret_die.tscn @@ -0,0 +1,158 @@ +[gd_scene load_steps=17 format=2] + +[ext_resource path="res://graphics/enemy/explosion_small.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/robot_die.gd" type="Script" id=2] +[ext_resource path="res://graphics/enemy/roboturret.png" type="Texture" id=3] +[ext_resource path="res://scripts/launch_rigid.gd" type="Script" id=4] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 1 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 1 ) +region = Rect2( 32, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 1 ) +region = Rect2( 48, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 1 ) +region = Rect2( 64, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 1 ) +region = Rect2( 80, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=7] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ) ], +"loop": false, +"name": "default", +"speed": 20.0 +} ] + +[sub_resource type="PhysicsMaterial" id=9] +bounce = 0.1 + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 3, 1 ) + +[sub_resource type="RectangleShape2D" id=10] +extents = Vector2( 3, 2.5 ) + +[sub_resource type="RectangleShape2D" id=11] +extents = Vector2( 2, 1.5 ) + +[sub_resource type="RectangleShape2D" id=12] +extents = Vector2( 2, 1.5 ) + +[node name="RoboTurret" type="Node2D"] +script = ExtResource( 2 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +position = Vector2( 3, 3 ) +frames = SubResource( 7 ) + +[node name="Barrel" type="RigidBody2D" parent="."] +position = Vector2( -2, 6 ) +collision_layer = 4 +mass = 2.0 +physics_material_override = SubResource( 9 ) +script = ExtResource( 4 ) +impulse_max = 200 + +[node name="Sprite" type="Sprite" parent="Barrel"] +position = Vector2( -2, -2 ) +texture = ExtResource( 3 ) +region_enabled = true +region_rect = Rect2( -1, 9, 8, 5 ) +region_filter_clip = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Barrel"] +position = Vector2( -1, -3 ) +shape = SubResource( 8 ) + +[node name="Timer" type="Timer" parent="Barrel"] +wait_time = 5.0 +autostart = true + +[node name="Head" type="RigidBody2D" parent="."] +position = Vector2( -2, 6 ) +collision_layer = 4 +mass = 2.0 +physics_material_override = SubResource( 9 ) +script = ExtResource( 4 ) +impulse_max = 200 + +[node name="Sprite" type="Sprite" parent="Head"] +position = Vector2( 6, -3 ) +texture = ExtResource( 3 ) +region_enabled = true +region_rect = Rect2( 7, 8, 8, 5 ) +region_filter_clip = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Head"] +position = Vector2( 5, -3.5 ) +shape = SubResource( 10 ) + +[node name="Timer" type="Timer" parent="Head"] +wait_time = 5.0 +autostart = true + +[node name="BaseL" type="RigidBody2D" parent="."] +position = Vector2( -2, 6 ) +collision_layer = 4 +mass = 2.0 +physics_material_override = SubResource( 9 ) +script = ExtResource( 4 ) +impulse_max = 200 + +[node name="Sprite" type="Sprite" parent="BaseL"] +position = Vector2( 3, 1 ) +texture = ExtResource( 3 ) +region_enabled = true +region_rect = Rect2( 6, 13, 4, 3 ) +region_filter_clip = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="BaseL"] +position = Vector2( 3, 0.5 ) +shape = SubResource( 11 ) + +[node name="Timer" type="Timer" parent="BaseL"] +wait_time = 5.0 +autostart = true + +[node name="BaseR" type="RigidBody2D" parent="."] +position = Vector2( -2, 6 ) +collision_layer = 4 +mass = 2.0 +physics_material_override = SubResource( 9 ) +script = ExtResource( 4 ) +impulse_max = 200 + +[node name="Sprite" type="Sprite" parent="BaseR"] +position = Vector2( 7, 1 ) +texture = ExtResource( 3 ) +region_enabled = true +region_rect = Rect2( 10, 13, 4, 3 ) +region_filter_clip = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="BaseR"] +position = Vector2( 7, 0.5 ) +shape = SubResource( 12 ) + +[node name="Timer" type="Timer" parent="BaseR"] +wait_time = 5.0 +autostart = true + +[connection signal="animation_finished" from="AnimatedSprite" to="." method="_on_AnimatedSprite_animation_finished"] +[connection signal="timeout" from="Barrel/Timer" to="Barrel" method="queue_free"] +[connection signal="timeout" from="Head/Timer" to="Head" method="queue_free"] +[connection signal="timeout" from="BaseL/Timer" to="BaseL" method="queue_free"] +[connection signal="timeout" from="BaseR/Timer" to="BaseR" method="queue_free"] diff --git a/objects/enemy/roboturret_proj.tscn b/objects/enemy/roboturret_proj.tscn new file mode 100644 index 0000000..eb04445 --- /dev/null +++ b/objects/enemy/roboturret_proj.tscn @@ -0,0 +1,76 @@ +[gd_scene load_steps=9 format=2] + +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=1] +[ext_resource path="res://graphics/enemy/roboturret_projectile.png" type="Texture" id=2] +[ext_resource path="res://objects/player/arrow_projectile.gd" type="Script" id=3] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=4] + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 4 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="Curve" id=3] +_data = [ Vector2( 0, 1 ), 0.0, -0.139481, 0, 0, Vector2( 1, 0 ), -2.82064, 0.0, 0, 0 ] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 3.5, 1 ) + +[sub_resource type="Curve" id=6] +_data = [ Vector2( 0, 1 ), 0.0, -1.45746, 0, 0, Vector2( 1, 0 ), 0.00323196, 0.0, 0, 0 ] + +[node name="BulletBall" type="Node2D"] +light_mask = 0 +script = ExtResource( 3 ) +target_group = "player_hitbox" + +[node name="Sprite" type="Sprite" parent="."] +material = SubResource( 7 ) +z_index = -1 +texture = ExtResource( 2 ) + +[node name="DustParticles" type="CPUParticles2D" parent="."] +show_behind_parent = true +position = Vector2( -2, 0 ) +z_index = -1 +local_coords = false +texture = ExtResource( 1 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 8.0 +initial_velocity_random = 0.18 +damping = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.25 +scale_amount_random = 0.25 +scale_amount_curve = SubResource( 3 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["arrow"]] +collision_layer = 4 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( -0.5, 0 ) +shape = SubResource( 1 ) + +[node name="SparkParticles" type="CPUParticles2D" parent="."] +position = Vector2( 4, 0 ) +emitting = false +amount = 16 +lifetime = 0.5 +one_shot = true +explosiveness = 1.0 +texture = ExtResource( 1 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 30.0 +initial_velocity_random = 0.5 +damping = 50.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.3 +scale_amount_curve = SubResource( 6 ) +color = Color( 1, 1, 0.290196, 1 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] diff --git a/objects/enemy/rolling_fiend.gd b/objects/enemy/rolling_fiend.gd index 40467bb..a0c88b0 100644 --- a/objects/enemy/rolling_fiend.gd +++ b/objects/enemy/rolling_fiend.gd @@ -1,32 +1,64 @@ extends "res://objects/enemy/enemy.gd" -export var move_speed: float = 0.0 +## the floor directions a fiend can be attached to +const DIRS = [Vector2.DOWN, Vector2.RIGHT, Vector2.UP, Vector2.LEFT] + +export var move_speed: float = 50.0 export var clockwise: bool = false +## keep options for shape query around because they will mostly stay the same onready var floor_test = Physics2DShapeQueryParameters.new() onready var test_shape = $FloorTestShape -var floor_direction = Vector2.ZERO +## index of the current floor direction +var floor_direction: int = 0 +## builds up movement so that fractional movement carries on +var movement_accumulator: float = 0.0 func _ready(): + # scale animation to move speed + $AnimatedSprite.speed_scale = inverse_lerp(0.0, 50.0, move_speed) + # flip if going backwards if clockwise: $AnimatedSprite.flip_h = true + # fill in shape query parameters that stay the same floor_test.set_shape(test_shape.shape) floor_test.collision_layer = 1 - for dir in [Vector2.DOWN, Vector2.UP, Vector2.LEFT, Vector2.RIGHT]: - if is_on_surface(dir): - floor_direction = dir + # loop through possible directions to find which one should start on + for i in DIRS.size(): + if is_on_surface(DIRS[i]): + floor_direction = i break + # adjust to difficulty + move_speed *= Game.enemy_speed_factor func _physics_process(delta): - var rot_dir = -1.5708 if clockwise else 1.5708 - if !is_on_surface(floor_direction): - floor_direction = floor_direction.rotated(-rot_dir) - elif is_on_surface(floor_direction.rotated(rot_dir)): - floor_direction = floor_direction.rotated(rot_dir) - position += floor_direction.rotated(rot_dir) * move_speed * delta + # add to accumulator + movement_accumulator += move_speed * delta + # move one pixel at a time until out of integer movment + while movement_accumulator >= 1.0: + # check next direction for wall if clockwise, else previous + var offset = 1 if clockwise else -1 + # movement dir should be the next direction from the floor direction + var move_dir = posmod(floor_direction + offset, DIRS.size()) + # check if gone off edge + if !is_on_surface(DIRS[floor_direction]): + # change to next floor direction + floor_direction = posmod(floor_direction - offset, DIRS.size()) + # check if collided with wall + elif is_on_surface(DIRS[move_dir]): + # new floor direction is where wall is + floor_direction = move_dir + # move along new floor direction + position += DIRS[posmod(floor_direction + offset, DIRS.size())] + # 1 pixel of movement spent from accumulator + movement_accumulator -= 1.0 +## tests if there is a floor 1 pixel in the direction tested func is_on_surface(dir): + # get the physics space state var space_state = get_world_2d().direct_space_state + # set position to test box at, moved 1 pixel in the direction tested floor_test.transform = test_shape.global_transform.translated(dir) - return space_state.collide_shape(floor_test, 1).size() > 0 + # collide_shape returns array of collisions, if not empy there is a floor there + return not space_state.collide_shape(floor_test, 1).empty() diff --git a/objects/enemy/rolling_fiend.tscn b/objects/enemy/rolling_fiend.tscn index 366d513..fd842ee 100644 --- a/objects/enemy/rolling_fiend.tscn +++ b/objects/enemy/rolling_fiend.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=10 format=2] -[ext_resource path="res://graphics/enemy/roller_fiend.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/rolling_fiend.png" type="Texture" id=2] [ext_resource path="res://objects/enemy/rolling_fiend.gd" type="Script" id=3] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=4] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=4] [sub_resource type="ShaderMaterial" id=5] shader = ExtResource( 4 ) @@ -29,18 +29,16 @@ animations = [ { extents = Vector2( 3.5, 3.5 ) [sub_resource type="RectangleShape2D" id=4] -extents = Vector2( 4, 4 ) +extents = Vector2( 4, 3.75 ) [node name="RollingFiend" type="Node2D" groups=["enemy"]] script = ExtResource( 3 ) score_for_killing = 40 -move_speed = 50.0 [node name="AnimatedSprite" type="AnimatedSprite" parent="."] material = SubResource( 5 ) position = Vector2( 4, 4 ) frames = SubResource( 3 ) -frame = 1 playing = true [node name="FloorTestShape" type="CollisionShape2D" parent="."] @@ -51,6 +49,7 @@ shape = SubResource( 8 ) position = Vector2( 4, 4 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 0, 0.25 ) shape = SubResource( 4 ) [connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/rolling_saw.tscn b/objects/enemy/rolling_saw.tscn new file mode 100644 index 0000000..cee4f76 --- /dev/null +++ b/objects/enemy/rolling_saw.tscn @@ -0,0 +1,57 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://graphics/enemy/sawblade.png" type="Texture" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://objects/enemy/rolling_fiend.gd" type="Script" id=3] + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 2 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 12, 12 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 1 ) +region = Rect2( 12, 0, 12, 12 ) + +[sub_resource type="SpriteFrames" id=3] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ) ], +"loop": true, +"name": "default", +"speed": 20.0 +} ] + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 3.5, 3.5 ) + +[sub_resource type="RectangleShape2D" id=4] +extents = Vector2( 4, 3.75 ) + +[node name="RollingSaw" type="Node2D" groups=["enemy"]] +script = ExtResource( 3 ) +score_for_killing = 40 +blood = false + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +material = SubResource( 5 ) +position = Vector2( 4, 4 ) +frames = SubResource( 3 ) +frame = 1 +playing = true + +[node name="FloorTestShape" type="CollisionShape2D" parent="."] +position = Vector2( 4, 4 ) +shape = SubResource( 8 ) + +[node name="Hitbox" type="Area2D" parent="."] +position = Vector2( 4, 4 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 0, 0.25 ) +shape = SubResource( 4 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/scope.tscn b/objects/enemy/scope.tscn new file mode 100644 index 0000000..7f9ef94 --- /dev/null +++ b/objects/enemy/scope.tscn @@ -0,0 +1,148 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://objects/enemy/cop.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/cop/scope_idle.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/cop/scope_walk.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/cop/scope_shoot.png" type="Texture" id=4] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=5] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=6] +[ext_resource path="res://graphics/particles/muzzle_flash.png" type="Texture" id=7] + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 5 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=13] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=14] +atlas = ExtResource( 3 ) +region = Rect2( 20, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=15] +atlas = ExtResource( 3 ) +region = Rect2( 40, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=16] +atlas = ExtResource( 3 ) +region = Rect2( 60, 0, 20, 21 ) + +[sub_resource type="SpriteFrames" id=6] +animations = [ { +"frames": [ ExtResource( 2 ) ], +"loop": false, +"name": "idle", +"speed": 5.0 +}, { +"frames": [ ExtResource( 4 ) ], +"loop": false, +"name": "shoot", +"speed": 1.0 +}, { +"frames": [ SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ) ], +"loop": true, +"name": "walk", +"speed": 5.0 +} ] + +[sub_resource type="Curve" id=11] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.5, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=12] +interpolation_mode = 2 +offsets = PoolRealArray( 0.20339, 0.432203 ) +colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 0.290196, 1 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 3, 8 ) + +[sub_resource type="Curve" id=9] +_data = [ Vector2( 0, 1 ), 0.0, -1.45746, 0, 0, Vector2( 1, 0 ), 0.00323196, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=10] +offsets = PoolRealArray( 0, 0.515152 ) +colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 0.290196, 1 ) + +[node name="Cop" type="Node2D" groups=["cop", "enemy"]] +script = ExtResource( 1 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +show_behind_parent = true +material = SubResource( 7 ) +position = Vector2( 5, -2 ) +frames = SubResource( 6 ) +animation = "idle" +playing = true + +[node name="ShootPosition" type="Position2D" parent="AnimatedSprite"] +unique_name_in_owner = true +position = Vector2( 7, 0.5 ) +__meta__ = { +"_gizmo_extents_": 4.0 +} + +[node name="ShootCast" type="RayCast2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +enabled = true +cast_to = Vector2( 72, 0 ) +collision_mask = 8 +collide_with_areas = true + +[node name="GraphicsCast" type="RayCast2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +visible = false +cast_to = Vector2( 256, 0 ) +collision_mask = 8 + +[node name="ShootLine" type="Line2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +visible = false +points = PoolVector2Array( 0, 0, 8, 0 ) +width = 1.0 +default_color = Color( 1, 1, 0.290196, 1 ) + +[node name="MuzzleFlashParticles" type="CPUParticles2D" parent="AnimatedSprite/ShootPosition"] +pause_mode = 2 +unique_name_in_owner = true +rotation = 1.0472 +emitting = false +amount = 6 +lifetime = 0.1 +one_shot = true +explosiveness = 0.75 +draw_order = 1 +texture = ExtResource( 7 ) +gravity = Vector2( 0, 0 ) +angle = 120.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 11 ) +color_ramp = SubResource( 12 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 4, 0 ) +shape = SubResource( 8 ) + +[node name="SparkParticles" type="CPUParticles2D" parent="."] +position = Vector2( 4, 0 ) +emitting = false +amount = 16 +lifetime = 0.5 +one_shot = true +explosiveness = 1.0 +texture = ExtResource( 6 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 30.0 +initial_velocity_random = 0.5 +damping = 50.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_curve = SubResource( 9 ) +color_ramp = SubResource( 10 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/sheriff.tscn b/objects/enemy/sheriff.tscn new file mode 100644 index 0000000..8e6bd67 --- /dev/null +++ b/objects/enemy/sheriff.tscn @@ -0,0 +1,148 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://objects/enemy/cop.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/cop/the_sheriff_idle.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/cop/the_sheriff_shoot.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/cop/the_sheriff_walk.png" type="Texture" id=4] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=5] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=6] +[ext_resource path="res://graphics/particles/muzzle_flash.png" type="Texture" id=7] + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 5 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=13] +atlas = ExtResource( 4 ) +region = Rect2( 0, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=14] +atlas = ExtResource( 4 ) +region = Rect2( 20, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=15] +atlas = ExtResource( 4 ) +region = Rect2( 40, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=16] +atlas = ExtResource( 4 ) +region = Rect2( 60, 0, 20, 21 ) + +[sub_resource type="SpriteFrames" id=6] +animations = [ { +"frames": [ ExtResource( 2 ) ], +"loop": false, +"name": "idle", +"speed": 5.0 +}, { +"frames": [ ExtResource( 3 ) ], +"loop": false, +"name": "shoot", +"speed": 1.0 +}, { +"frames": [ SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ) ], +"loop": true, +"name": "walk", +"speed": 5.0 +} ] + +[sub_resource type="Curve" id=11] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.5, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=12] +interpolation_mode = 2 +offsets = PoolRealArray( 0.20339, 0.432203 ) +colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 0.290196, 1 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 3, 8 ) + +[sub_resource type="Curve" id=9] +_data = [ Vector2( 0, 1 ), 0.0, -1.45746, 0, 0, Vector2( 1, 0 ), 0.00323196, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=10] +offsets = PoolRealArray( 0, 0.515152 ) +colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 0.290196, 1 ) + +[node name="Cop" type="Node2D" groups=["cop", "enemy"]] +script = ExtResource( 1 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +show_behind_parent = true +material = SubResource( 7 ) +position = Vector2( 5, -2 ) +frames = SubResource( 6 ) +animation = "idle" +playing = true + +[node name="ShootPosition" type="Position2D" parent="AnimatedSprite"] +unique_name_in_owner = true +position = Vector2( 7, 0.5 ) +__meta__ = { +"_gizmo_extents_": 4.0 +} + +[node name="ShootCast" type="RayCast2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +enabled = true +cast_to = Vector2( 72, 0 ) +collision_mask = 8 +collide_with_areas = true + +[node name="GraphicsCast" type="RayCast2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +visible = false +cast_to = Vector2( 256, 0 ) +collision_mask = 8 + +[node name="ShootLine" type="Line2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +visible = false +points = PoolVector2Array( 0, 0, 8, 0 ) +width = 1.0 +default_color = Color( 1, 1, 0.290196, 1 ) + +[node name="MuzzleFlashParticles" type="CPUParticles2D" parent="AnimatedSprite/ShootPosition"] +pause_mode = 2 +unique_name_in_owner = true +rotation = 1.0472 +emitting = false +amount = 6 +lifetime = 0.1 +one_shot = true +explosiveness = 0.75 +draw_order = 1 +texture = ExtResource( 7 ) +gravity = Vector2( 0, 0 ) +angle = 120.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 11 ) +color_ramp = SubResource( 12 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 4, 0 ) +shape = SubResource( 8 ) + +[node name="SparkParticles" type="CPUParticles2D" parent="."] +position = Vector2( 4, 0 ) +emitting = false +amount = 16 +lifetime = 0.5 +one_shot = true +explosiveness = 1.0 +texture = ExtResource( 6 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 30.0 +initial_velocity_random = 0.5 +damping = 50.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_curve = SubResource( 9 ) +color_ramp = SubResource( 10 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/skelarcher.gd b/objects/enemy/skelarcher.gd index ad99ef6..7e6c9a8 100644 --- a/objects/enemy/skelarcher.gd +++ b/objects/enemy/skelarcher.gd @@ -2,10 +2,9 @@ extends "res://objects/enemy/enemy.gd" const ArrowProjectile = preload("res://objects/enemy/enemy_arrow.tscn") const BoneParticle = preload("res://objects/enemy/bone_particle.tscn") -const arrowpos = Vector2(9,2) export var shoot_time = 1.0 -export var arrow_speed = 120.0 +export var arrow_speed = 60.0 # bone death particles export var bones_amount = 12 export var bones_speed = 50.0 @@ -17,8 +16,11 @@ onready var arrow_spawn_l = $ArrowSpawnL onready var arrow_spawn_r = $ArrowSpawnR func _ready(): - death_sound = Game.a_die_skeleton + death_sound = Audio.a_die_skeleton timer.start(shoot_time) + # adjust to difficulty + shoot_time /= Game.enemy_speed_factor + arrow_speed *= Game.enemy_speed_factor func _on_Timer_timeout(): anims.play("shoot") @@ -30,10 +32,9 @@ func spawn_arrow(): else: arrow.global_position = global_position + arrow_spawn_l.position arrow.direction = scale.x - arrow.target_group = "player" + arrow.target_group = "player_hitbox" arrow.speed = arrow_speed Game.get_map().add_child(arrow) - timer.start(shoot_time) func die(): for n in bones_amount: @@ -42,7 +43,7 @@ func die(): bone.global_position = global_position bone.linear_velocity = Vector2(bones_speed * rand_range(0.5, 1.5), 0.0).rotated(rand_range(-PI, 0.0)) bone.angular_velocity = rand_range(-PI*2.0, PI*2.0) - var timer = get_tree().create_timer(3.0 + rand_range(0.0, 1.0), false) - timer.connect("timeout", bone, "queue_free") + var bone_timer = get_tree().create_timer(3.0 + rand_range(0.0, 1.0), false) + bone_timer.connect("timeout", bone, "queue_free") get_parent().call_deferred("add_child", bone) .die() # call rest of enemy.gd die() funciton diff --git a/objects/enemy/skelarcher.tscn b/objects/enemy/skelarcher.tscn index 0f4af1a..8c9e724 100644 --- a/objects/enemy/skelarcher.tscn +++ b/objects/enemy/skelarcher.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=8 format=2] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] [ext_resource path="res://graphics/enemy/skelarcher_shoot.png" type="Texture" id=2] [ext_resource path="res://objects/enemy/skelarcher.gd" type="Script" id=4] @@ -13,7 +13,6 @@ shader_param/border_corners = true extents = Vector2( 4, 4 ) [sub_resource type="Animation" id=19] -resource_name = "idle" tracks/0/type = "value" tracks/0/path = NodePath("Sprite:region_rect") tracks/0/interp = 1 @@ -40,7 +39,6 @@ tracks/1/keys = { } [sub_resource type="Animation" id=20] -resource_name = "shoot" length = 0.5 step = 0.06 tracks/0/type = "value" @@ -97,7 +95,7 @@ tracks/3/keys = { [node name="Skelarcher" type="Node2D" groups=["enemy"]] script = ExtResource( 4 ) blood = false -shoot_time = 3.0 +shoot_time = 2.0 [node name="Sprite" type="Sprite" parent="."] material = SubResource( 18 ) diff --git a/objects/enemy/slime.gd b/objects/enemy/slime.gd new file mode 100644 index 0000000..2f9d7c4 --- /dev/null +++ b/objects/enemy/slime.gd @@ -0,0 +1,11 @@ +extends "res://objects/enemy/enemy.gd" + +const slime_particles = preload("res://objects/enemy/slime_particles.tscn") + +func die(): + .die() + var death_particles = slime_particles.instance() + death_particles.global_position = global_position + death_blood_offset + death_particles.emitting = true + get_parent().add_child(death_particles) + diff --git a/objects/enemy/slime.tscn b/objects/enemy/slime.tscn index 3600715..ad00ed9 100644 --- a/objects/enemy/slime.tscn +++ b/objects/enemy/slime.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=10 format=2] [ext_resource path="res://graphics/enemy/slime.png" type="Texture" id=1] -[ext_resource path="res://scripts/recolor_border.shader" type="Shader" id=2] -[ext_resource path="res://graphics/enemy/slime_purple.png" type="Texture" id=3] -[ext_resource path="res://objects/enemy/enemy.gd" type="Script" id=4] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=2] +[ext_resource path="res://graphics/enemy/pal_slime_purple.png" type="Texture" id=3] +[ext_resource path="res://objects/enemy/slime.gd" type="Script" id=4] [sub_resource type="ShaderMaterial" id=1] shader = ExtResource( 2 ) @@ -28,23 +28,24 @@ animations = [ { } ] [sub_resource type="RectangleShape2D" id=5] -extents = Vector2( 5.5, 4.5 ) +extents = Vector2( 4, 4 ) [node name="Slime" type="Node2D" groups=["enemy"]] script = ExtResource( 4 ) -score_for_killing = 10 +blood = false [node name="AnimatedSprite" type="AnimatedSprite" parent="."] material = SubResource( 1 ) -position = Vector2( 1, 3 ) +position = Vector2( 4, 3 ) frames = SubResource( 4 ) +frame = 1 playing = true [node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] position = Vector2( -4, 0 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] -position = Vector2( 4.5, 3.5 ) +position = Vector2( 8, 4 ) shape = SubResource( 5 ) [connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/slime_particles.gd b/objects/enemy/slime_particles.gd new file mode 100644 index 0000000..2c9164f --- /dev/null +++ b/objects/enemy/slime_particles.gd @@ -0,0 +1,17 @@ +extends CPUParticles2D + + +const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") + + +export var spray_ammount: int = 16 +export var spray_velocity: float = 80 + + +func _ready() -> void: + for i in spray_ammount: + var spray = BloodSpray.instance() + spray.global_position = global_position + spray.color = Color(0xa05ef2ff) + spray.velocity = Vector2(randf() * spray_velocity, 0.0).rotated(randf() * TAU) + get_parent().add_child(spray) diff --git a/objects/enemy/slime_particles.tscn b/objects/enemy/slime_particles.tscn new file mode 100644 index 0000000..e38f9f0 --- /dev/null +++ b/objects/enemy/slime_particles.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/particles/slime.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/slime_particles.gd" type="Script" id=2] + +[sub_resource type="Curve" id=43] +_data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] + +[node name="DeathSplatter" type="CPUParticles2D"] +emitting = false +amount = 16 +lifetime = 0.4 +one_shot = true +speed_scale = 1.25 +explosiveness = 0.9 +local_coords = false +texture = ExtResource( 1 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 50 ) +initial_velocity = 60.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 43 ) +script = ExtResource( 2 ) diff --git a/objects/enemy/snail.tscn b/objects/enemy/snail.tscn index 5ff0998..d3aac96 100644 --- a/objects/enemy/snail.tscn +++ b/objects/enemy/snail.tscn @@ -1,14 +1,8 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=7 format=2] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=1] [ext_resource path="res://graphics/enemy/snail.png" type="Texture" id=2] [ext_resource path="res://objects/enemy/enemy_speedup_in_range.gd" type="Script" id=3] -[sub_resource type="ShaderMaterial" id=1] -shader = ExtResource( 1 ) -shader_param/border_color = Color( 0, 0, 0, 1 ) -shader_param/border_corners = false - [sub_resource type="AtlasTexture" id=2] atlas = ExtResource( 2 ) region = Rect2( 0, 0, 12, 11 ) @@ -32,13 +26,11 @@ extents = Vector2( 4, 4 ) script = ExtResource( 3 ) score_for_killing = 30 slower_speed = 30 -faster_speed = 80 +faster_speed = 60 [node name="AnimatedSprite" type="AnimatedSprite" parent="."] -material = SubResource( 1 ) position = Vector2( 3, 3 ) frames = SubResource( 4 ) -frame = 1 playing = true [node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] diff --git a/objects/enemy/snake.tscn b/objects/enemy/snake.tscn index 5e6505f..a64061d 100644 --- a/objects/enemy/snake.tscn +++ b/objects/enemy/snake.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=12 format=2] [ext_resource path="res://graphics/enemy/snake.png" type="Texture" id=1] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] [ext_resource path="res://objects/enemy/enemy_move_sidesideupdown.gd" type="Script" id=3] +[ext_resource path="res://graphics/enemy/robosnake.png" type="Texture" id=4] [sub_resource type="ShaderMaterial" id=1] shader = ExtResource( 2 ) @@ -17,12 +18,25 @@ region = Rect2( 0, 0, 16, 16 ) atlas = ExtResource( 1 ) region = Rect2( 16, 0, 16, 16 ) +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 4 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=7] +atlas = ExtResource( 4 ) +region = Rect2( 16, 0, 16, 16 ) + [sub_resource type="SpriteFrames" id=4] animations = [ { "frames": [ SubResource( 2 ), SubResource( 3 ) ], "loop": true, "name": "default", "speed": 7.0 +}, { +"frames": [ SubResource( 6 ), SubResource( 7 ) ], +"loop": true, +"name": "robo", +"speed": 7.0 } ] [sub_resource type="RectangleShape2D" id=5] @@ -31,10 +45,12 @@ extents = Vector2( 4, 4 ) [node name="Snake" type="Node2D" groups=["enemy"]] script = ExtResource( 3 ) score_for_killing = 15 +node_to_flip = NodePath("AnimatedSprite") [node name="AnimatedSprite" type="AnimatedSprite" parent="."] material = SubResource( 1 ) frames = SubResource( 4 ) +frame = 1 playing = true [node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] diff --git a/objects/enemy/spider.gd b/objects/enemy/spider.gd index 4550a79..445a9cc 100644 --- a/objects/enemy/spider.gd +++ b/objects/enemy/spider.gd @@ -23,6 +23,8 @@ func _ready(): hitbox.global_position.y = old_y line.points[1].y = hitbox.position.y raycast.queue_free() + # adjust to difficulty + speed *= Game.enemy_speed_factor func _physics_process(delta): hitbox.position.y += direction * speed * delta diff --git a/objects/enemy/spider.tscn b/objects/enemy/spider.tscn index 5c91706..eb4a9bc 100644 --- a/objects/enemy/spider.tscn +++ b/objects/enemy/spider.tscn @@ -42,6 +42,7 @@ position = Vector2( 5, 5 ) [node name="AnimatedSprite" type="AnimatedSprite" parent="Hitbox"] frames = SubResource( 3 ) +frame = 1 playing = true [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] diff --git a/objects/enemy/squig.gd b/objects/enemy/squig.gd new file mode 100644 index 0000000..05923fa --- /dev/null +++ b/objects/enemy/squig.gd @@ -0,0 +1,104 @@ +extends "res://objects/enemy/enemy.gd" + +enum State {SWIMMING, FALLING, TRANSITION} + +# whether the squid should start in falling state +export var start_falling: bool = false +export var speed: float = 50.0 +export var damping: float = 0.9 +export var delay: float = 1.0 +# margin of screen hitbox is disabled in +export var hitbox_clip: Rect2 = Rect2(0.0, 0.0, 7.0, 7.0) +export var full_clip: Rect2 = Rect2(-4.0, -4.0, 16.0, 16.0) + + +var velocity: Vector2 = Vector2.ZERO +# start of the sector it is trapped in +var home_sector: Vector2 = Vector2.ZERO +var _can_transition: bool = true + + +onready var current_state: int = State.SWIMMING +onready var hitbox_shape: CollisionShape2D = $"%HitboxShape" +onready var animation_player: AnimationPlayer = $AnimationPlayer + + +func _ready() -> void: + if start_falling: + _start_falling() + else: + _start_swimming() + home_sector = Game.get_sector(global_position) + +func _physics_process(delta: float) -> void: + if Game.current_sector != home_sector: + hitbox_shape.disabled = true + return + # process movement and apply damping + velocity.y *= pow(damping, delta) + if current_state == State.FALLING: + velocity.y = speed + global_position += velocity * delta + + var sector_rect = Rect2(home_sector * Game.RESOLUTION, Game.RESOLUTION) + + # disable hitbox at edge of screen + var global_hitbox_clip = hitbox_clip + global_hitbox_clip.position += global_position + if sector_rect.encloses(global_hitbox_clip): + hitbox_shape.disabled = false + else: + hitbox_shape.disabled = true + + # check if out of sector + var global_full_clip = full_clip + global_full_clip.position += global_position + if not sector_rect.intersects(global_full_clip) and _can_transition: + match current_state: + State.SWIMMING: + current_state = State.TRANSITION + _can_transition = false + velocity = Vector2.ZERO + var tween = create_tween() + tween.tween_interval(delay) + tween.tween_callback(self, "_start_falling") + State.FALLING: + current_state = State.TRANSITION + _can_transition = false + velocity = Vector2.ZERO + var tween = create_tween() + tween.tween_interval(delay) + tween.tween_callback(self, "_start_swimming") + State.TRANSITION: + pass + + # clip to inside of home sector + var rid = get_canvas_item() + var rect = Rect2(to_local(home_sector * Game.RESOLUTION), Game.RESOLUTION) + VisualServer.canvas_item_set_custom_rect(rid, true, rect) + VisualServer.canvas_item_set_clip(rid, true) + + +# give a burst of speed +func _propel() -> void: + velocity.y = -speed + +func _start_falling() -> void: + if not _can_transition: + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: + global_position.x = player.global_position.x - 3.0 + animation_player.play("falling") + current_state = State.FALLING + yield(create_tween().tween_interval(1.0), "finished") + _can_transition = true + +func _start_swimming() -> void: + if not _can_transition: + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: + global_position.x = player.global_position.x - 3.0 + animation_player.play("swimming") + current_state = State.SWIMMING + yield(create_tween().tween_interval(1.0), "finished") + _can_transition = true diff --git a/objects/enemy/squig.tscn b/objects/enemy/squig.tscn new file mode 100644 index 0000000..55cdf7c --- /dev/null +++ b/objects/enemy/squig.tscn @@ -0,0 +1,88 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://objects/enemy/enemy_move_sidesideupdown.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/squig.png" type="Texture" id=2] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=3] + +[sub_resource type="Curve" id=6] +_data = [ Vector2( 0, 0.5 ), 0.0, 0.0, 0, 0, Vector2( 0.3, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.541165, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 2.5, 2.5 ) + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0 ] +} + +[sub_resource type="Animation" id=7] +resource_name = "up_and_down" +length = 0.3 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ 0, 1 ] +} + +[node name="Squig" type="Node2D" groups=["enemy"]] +light_mask = 8 +script = ExtResource( 1 ) +direction = -1 +move_direction = 1 +node_to_flip = NodePath("Sprite") + +[node name="InkParticles" type="CPUParticles2D" parent="."] +position = Vector2( 3.5, 7 ) +scale = Vector2( 0.5, 0.5 ) +amount = 16 +local_coords = false +texture = ExtResource( 3 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 8.0 +initial_velocity_random = 0.5 +damping = 4.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 1.5 +scale_amount_curve = SubResource( 6 ) +color = Color( 0, 0, 0, 1 ) + +[node name="Sprite" type="Sprite" parent="."] +light_mask = 8 +position = Vector2( 4, 4 ) +texture = ExtResource( 2 ) +hframes = 2 + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] +position = Vector2( 4, 4 ) + +[node name="HitboxShape" type="CollisionShape2D" parent="Hitbox"] +unique_name_in_owner = true +position = Vector2( -0.5, -0.5 ) +shape = SubResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "up_and_down" +anims/RESET = SubResource( 2 ) +anims/up_and_down = SubResource( 7 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/steam.gd b/objects/enemy/steam.gd new file mode 100644 index 0000000..fcb02be --- /dev/null +++ b/objects/enemy/steam.gd @@ -0,0 +1,38 @@ + extends "res://objects/enemy/enemy.gd" + +export var off_time = 1.0 +export var on_time = 1.0 +export var active = false + +onready var particles = $SteamParticles +onready var collision_shape = $Hitbox/CollisionShape2D +onready var animation_player = $AnimationPlayer + +var time = 0.0 + +func _ready(): + if !active: + particles.emitting = false + collision_shape.disabled = true + # adjust to difficulty + off_time /= Game.enemy_speed_factor + on_time /= Game.enemy_speed_factor + +func _physics_process(delta): + time += delta + if active && time >= on_time: + time -= on_time + active = false + animation_player.play("turn_off") + elif !active && time >= off_time: + time -= off_time + active = true + animation_player.play("turn_on") + +func switch_action(): + animation_player.play("turn_off") + animation_player.connect("animation_finished", self, "_queue_free") + +#stupidstupidstupidstupidarrrghhhwouldnotneedtodothisshitingodot4grumblegrumble +func _queue_free(_anim_name): + queue_free() diff --git a/objects/enemy/steam.tscn b/objects/enemy/steam.tscn new file mode 100644 index 0000000..06d0f2d --- /dev/null +++ b/objects/enemy/steam.tscn @@ -0,0 +1,185 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://objects/enemy/steam.gd" type="Script" id=1] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=2] + +[sub_resource type="Curve" id=2] +_data = [ Vector2( 0, 0.291411 ), 0.0, 5.40019, 0, 0, Vector2( 0.263812, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), -0.0915322, 0.0, 0, 0 ] + +[sub_resource type="RectangleShape2D" id=1] +resource_local_to_scene = true +extents = Vector2( 2, 12 ) + +[sub_resource type="Animation" id=3] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Hitbox/CollisionShape2D:shape:extents") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 2, 12 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hitbox/CollisionShape2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -12 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hitbox/CollisionShape2D:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} + +[sub_resource type="Animation" id=4] +resource_name = "turn_off" +tracks/0/type = "value" +tracks/0/path = NodePath("SteamParticles:emitting") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hitbox/CollisionShape2D:shape:extents") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 2, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hitbox/CollisionShape2D:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -24 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hitbox/CollisionShape2D:disabled") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=5] +resource_name = "turn_on" +tracks/0/type = "value" +tracks/0/path = NodePath("SteamParticles:emitting") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hitbox/CollisionShape2D:shape:extents") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 0 ), Vector2( 2, 12 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hitbox/CollisionShape2D:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 4, 0 ), Vector2( 4, -12 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hitbox/CollisionShape2D:disabled") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[node name="Steam" type="Node2D"] +script = ExtResource( 1 ) +blood = false +off_time = 2.0 + +[node name="SteamParticles" type="CPUParticles2D" parent="."] +position = Vector2( 4, 0 ) +emitting = false +amount = 16 +texture = ExtResource( 2 ) +direction = Vector2( 0, -1 ) +spread = 10.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 51.55 +damping = 50.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.75 +scale_amount_curve = SubResource( 2 ) + +[node name="Hitbox" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 4, -12 ) +shape = SubResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 3 ) +anims/turn_off = SubResource( 4 ) +anims/turn_on = SubResource( 5 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/super_slime.gd b/objects/enemy/super_slime.gd new file mode 100644 index 0000000..bc6d6cd --- /dev/null +++ b/objects/enemy/super_slime.gd @@ -0,0 +1,131 @@ +tool +extends "res://objects/enemy/enemy.gd" + +const SlimeParticles = preload("res://objects/enemy/slime_particles.tscn") + +export var left_boundary: float = 0.0 +export var right_boundary: float = 0.0 +export var direction: float = 1.0 +export var speed: float = 50.0 +export var jump_distance: float = 0.0 +export var jump_speed: float = 50.0 +export (Array, float) var bottom_jumps: Array = [] setget _set_bottom_jumps +export (Array, float) var top_jumps: Array = [] setget _set_top_jumps +export var detect_player: bool = false + +var _jumping: bool = false +var _jump_direction: float = -1.0 + +onready var hitbox: Area2D = $Hitbox +onready var sprite: AnimatedSprite = $Hitbox/Sprite +onready var detect_player_cast: RayCast2D = $"%DetectPlayerCast" + + +func _ready() -> void: + if Engine.editor_hint: + return + left_boundary *= 8.0 + right_boundary *= 8.0 + jump_distance *= 8.0 + for i in bottom_jumps.size(): + bottom_jumps[i] *= 8.0 + for i in top_jumps.size(): + top_jumps[i] *= 8.0 + detect_player_cast.cast_to = Vector2(0.0, -jump_distance) + speed *= Game.enemy_speed_factor + + +func _physics_process(delta: float) -> void: + if Engine.editor_hint: + return + # check for jump point + var jump_points = bottom_jumps if sign(_jump_direction) == -1.0 else top_jumps + for x in jump_points: + if abs(hitbox.position.x - x) <= 4.0: + _jumping = true + break + # check for player + if detect_player and detect_player_cast.is_colliding(): + _jumping = true + # move if not jumping + if _jumping: + hitbox.position.y += _jump_direction * jump_speed * delta + if hitbox.position.y >= 8.0: + hitbox.position.y = 0.0 + _jump_direction = -1.0 + hitbox.scale.y = 1.0 + _jumping = false + elif hitbox.position.y <= -jump_distance - 8.0: + hitbox.position.y = -jump_distance + _jump_direction = 1.0 + hitbox.scale.y = -1.0 + _jumping = false + else: + hitbox.position.x += direction * speed * delta + if hitbox.position.x >= right_boundary: + hitbox.position.x = right_boundary + direction = -1.0 + sprite.flip_h = true + elif hitbox.position.x <= -left_boundary: + hitbox.position.x = -left_boundary + sprite.flip_h = false + direction = 1.0 + + +func _process(delta: float) -> void: + if Engine.editor_hint and Engine.get_frames_drawn() % 10 == 0: + update() + + +func _draw() -> void: + if Engine.editor_hint: + # bottom travel zone + draw_line( + Vector2(-left_boundary * 8.0, 4.0), + Vector2(right_boundary * 8.0 + 8.0, 4.0), + Color(0.4, 0.2, 0.6, 0.75), 1.01, false + ) + # top travel zone + draw_line( + Vector2(-left_boundary * 8.0, -jump_distance * 8.0 - 4.0), + Vector2(right_boundary * 8.0 + 8.0, -jump_distance * 8.0 - 4.0), + Color(0.4, 0.2, 0.6, 0.75), 1.01, false + ) + # jump lines + for x in bottom_jumps: + draw_line( + Vector2(x * 8.0, 4.0), + Vector2(x * 8.0, -jump_distance * 4.0), + Color(1.0, 0.0, 0.0, 0.75), 1.01, false + ) + draw_circle(Vector2(x * 8.0, 4.0), 2.0, Color.red) + for x in top_jumps: + draw_line( + Vector2(x * 8.0, -jump_distance * 8.0 - 4.0), + Vector2(x * 8.0, -jump_distance * 4.0), + Color(1.0, 0.0, 0.0, 0.75), 1.01, false + ) + draw_circle(Vector2(x * 8.0, -jump_distance * 8.0 - 4.0), 2.0, Color.red) +# draw_line( +# Vector2(4.0, 4.0), +# Vector2(4.0, -jump_distance * 8.0 - 4.0), +# Color(0.4, 0.2, 0.6, 0.75), 1.01, false +# ) + + +func _set_bottom_jumps(value: Array) -> void: + bottom_jumps = value + update() + + +func _set_top_jumps(value: Array) -> void: + top_jumps = value + update() + + +func die() -> void: + .die() + var death_particles = SlimeParticles.instance() + death_particles.global_position = hitbox.global_position + Vector2(4.0, 4.0) + death_particles.emitting = true + get_parent().add_child(death_particles) diff --git a/objects/enemy/super_slime.tscn b/objects/enemy/super_slime.tscn new file mode 100644 index 0000000..121f8ed --- /dev/null +++ b/objects/enemy/super_slime.tscn @@ -0,0 +1,56 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://objects/enemy/super_slime.gd" type="Script" id=1] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=2] +[ext_resource path="res://graphics/enemy/pal_slime_purple.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/slime.png" type="Texture" id=4] + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 2 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false +shader_param/palette = ExtResource( 3 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 4 ) +region = Rect2( 0, 0, 13, 13 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 4 ) +region = Rect2( 13, 0, 13, 13 ) + +[sub_resource type="SpriteFrames" id=5] +animations = [ { +"frames": [ SubResource( 2 ), SubResource( 3 ) ], +"loop": true, +"name": "default", +"speed": 7.0 +} ] + +[sub_resource type="RectangleShape2D" id=6] +extents = Vector2( 4, 4 ) + +[node name="SuperSlime" type="Node2D" groups=["ememy"]] +script = ExtResource( 1 ) +blood = false + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] + +[node name="Sprite" type="AnimatedSprite" parent="Hitbox"] +material = SubResource( 4 ) +position = Vector2( 4, 3 ) +frames = SubResource( 5 ) +playing = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 4, 4 ) +shape = SubResource( 6 ) + +[node name="DetectPlayerCast" type="RayCast2D" parent="Hitbox"] +unique_name_in_owner = true +position = Vector2( 4, 0 ) +enabled = true +cast_to = Vector2( 0, -16 ) +collision_mask = 128 + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/tin.gd b/objects/enemy/tin.gd new file mode 100644 index 0000000..6e5ecf3 --- /dev/null +++ b/objects/enemy/tin.gd @@ -0,0 +1,4 @@ +extends "res://objects/enemy/enemy_move_diagonal.gd" + +func _on_Tin_died(): + Game.instance_node(load("res://objects/enemy/tin_die.tscn"), position.x, position.y, get_parent()) diff --git a/objects/enemy/tin.tscn b/objects/enemy/tin.tscn new file mode 100644 index 0000000..071744f --- /dev/null +++ b/objects/enemy/tin.tscn @@ -0,0 +1,55 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://objects/enemy/tin.gd" type="Script" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/enemy/tin.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/tin_eye.png" type="Texture" id=4] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="Animation" id=2] +resource_name = "eye hue" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Eye:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.560784, 1, 0.560784, 1 ), Color( 1, 0.56, 0.567333, 1 ), Color( 0.560784, 1, 0.560784, 1 ) ] +} + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 4, 4 ) + +[node name="Tin" type="Node2D" groups=["enemy"]] +script = ExtResource( 1 ) +score_for_killing = 100 +blood = false + +[node name="Sprite" type="Sprite" parent="."] +material = SubResource( 1 ) +texture = ExtResource( 3 ) + +[node name="Eye" type="Sprite" parent="."] +modulate = Color( 0.560784, 1, 0.560784, 1 ) +texture = ExtResource( 4 ) + +[node name="EyeAnim" type="AnimationPlayer" parent="."] +autoplay = "eye hue" +"anims/eye hue" = SubResource( 2 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +shape = SubResource( 3 ) + +[connection signal="died" from="." to="." method="_on_Tin_died" flags=3] +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/tin_die.tscn b/objects/enemy/tin_die.tscn new file mode 100644 index 0000000..b432702 --- /dev/null +++ b/objects/enemy/tin_die.tscn @@ -0,0 +1,143 @@ +[gd_scene load_steps=14 format=2] + +[ext_resource path="res://graphics/enemy/explosion_small.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/robot_die.gd" type="Script" id=2] +[ext_resource path="res://graphics/enemy/tin.png" type="Texture" id=3] +[ext_resource path="res://scripts/launch_rigid.gd" type="Script" id=4] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 1 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 1 ) +region = Rect2( 32, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 1 ) +region = Rect2( 48, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 1 ) +region = Rect2( 64, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 1 ) +region = Rect2( 80, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=7] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ) ], +"loop": false, +"name": "default", +"speed": 20.0 +} ] + +[sub_resource type="PhysicsMaterial" id=9] +bounce = 0.1 + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 2, 2 ) + +[node name="TinDie" type="Node2D"] +script = ExtResource( 2 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +frames = SubResource( 7 ) + +[node name="Topleft" type="RigidBody2D" parent="."] +collision_layer = 4 +mass = 2.0 +physics_material_override = SubResource( 9 ) +script = ExtResource( 4 ) +impulse_max = 200 + +[node name="Sprite" type="Sprite" parent="Topleft"] +position = Vector2( -2, -2 ) +texture = ExtResource( 3 ) +hframes = 2 +vframes = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Topleft"] +position = Vector2( -2, -2 ) +shape = SubResource( 8 ) + +[node name="Timer" type="Timer" parent="Topleft"] +wait_time = 5.0 +autostart = true + +[node name="TopRight" type="RigidBody2D" parent="."] +collision_layer = 4 +mass = 2.0 +physics_material_override = SubResource( 9 ) +script = ExtResource( 4 ) +impulse_max = 200 + +[node name="Sprite" type="Sprite" parent="TopRight"] +position = Vector2( 3, -2 ) +texture = ExtResource( 3 ) +hframes = 2 +vframes = 2 +frame = 1 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="TopRight"] +position = Vector2( 2, -2 ) +shape = SubResource( 8 ) + +[node name="Timer" type="Timer" parent="TopRight"] +wait_time = 5.3 +autostart = true + +[node name="BottomLeft" type="RigidBody2D" parent="."] +collision_layer = 4 +mass = 2.0 +physics_material_override = SubResource( 9 ) +script = ExtResource( 4 ) +impulse_max = 200 + +[node name="Sprite" type="Sprite" parent="BottomLeft"] +position = Vector2( -2, 3 ) +texture = ExtResource( 3 ) +hframes = 2 +vframes = 2 +frame = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="BottomLeft"] +position = Vector2( -2, 2 ) +shape = SubResource( 8 ) + +[node name="Timer" type="Timer" parent="BottomLeft"] +wait_time = 5.5 +autostart = true + +[node name="BottomRight" type="RigidBody2D" parent="."] +position = Vector2( 3, 3 ) +collision_layer = 4 +mass = 2.0 +physics_material_override = SubResource( 9 ) +script = ExtResource( 4 ) +impulse_max = 200 + +[node name="Sprite" type="Sprite" parent="BottomRight"] +texture = ExtResource( 3 ) +hframes = 2 +vframes = 2 +frame = 3 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="BottomRight"] +position = Vector2( -1, -1 ) +shape = SubResource( 8 ) + +[node name="Timer" type="Timer" parent="BottomRight"] +wait_time = 5.8 +autostart = true + +[connection signal="animation_finished" from="AnimatedSprite" to="." method="_on_AnimatedSprite_animation_finished"] +[connection signal="timeout" from="Topleft/Timer" to="Topleft" method="queue_free"] +[connection signal="timeout" from="TopRight/Timer" to="TopRight" method="queue_free"] +[connection signal="timeout" from="BottomLeft/Timer" to="BottomLeft" method="queue_free"] +[connection signal="timeout" from="BottomRight/Timer" to="BottomRight" method="queue_free"] diff --git a/objects/enemy/turtle.gd b/objects/enemy/turtle.gd new file mode 100644 index 0000000..b99b5c7 --- /dev/null +++ b/objects/enemy/turtle.gd @@ -0,0 +1,113 @@ +tool +extends "res://objects/enemy/enemy_move_sidesideupdown.gd" + +enum SpikeDirection {BOTH, LEFT, RIGHT} + +## positions along the path where spikes will trigger +export (Array, float) var spike_positions: Array = [] +## time spikes stay active +export var spike_time: float = 0.25 +## which direction the turtle should be able to spike +export (SpikeDirection) var spike_direction: int = SpikeDirection.BOTH + +# animates the spikes +var can_spike: bool = true +var spike_tween: SceneTreeTween + +onready var sprite: Sprite = $"%Sprite" +onready var spike_shape: CollisionShape2D = $"%SpikeShape" + +func _ready() -> void: + # don't act in the editor + if Engine.editor_hint: + return + +func _process(delta: float) -> void: + # update debug graphics in editor + if Engine.editor_hint and Engine.get_frames_drawn() % 10 == 0: + update() + +func _physics_process(delta: float) -> void: + # do nothing in editor + if Engine.editor_hint: + return + + # sync hitbox + $HeadHitbox.scale.x = $ToFlip.scale.x + + # check if can still spike before doing all this work + if not can_spike: + return + # use positions in correct axis + var pos = position.x if move_direction == Direction.HORIZONTAL else position.y + var pos_start = startpos.x if move_direction == Direction.HORIZONTAL else startpos.y + # only spike if matching direction + if spike_direction == SpikeDirection.LEFT and sign(direction) == 1.0: + return + if spike_direction == SpikeDirection.RIGHT and sign(direction) == -1.0: + return + # spike if close enough to an activation point + for spike_pos in spike_positions: + if abs(pos_start + (spike_pos * 8.0) - pos) <= 2.0: + spike() + break + # slightly different logic depending on forward/backwards unfortunately :I +# match sign(direction): +# 1.0: +# # make sure there are any positions left to check in this direction +# if current_spike_position < spike_positions.size(): +# # check if passed the spike position +# if pos >= pos_start + spike_positions[current_spike_position]: +# # move on to next position +# current_spike_position += 1 +# if spike_direction != SpikeDirection.LEFT: +# spike() +# -1.0: +# # make sure there are still positions left in this direction +# if current_spike_position - 1 >= 0: +# # check if passed the position +# if pos <= pos_start + spike_positions[current_spike_position - 1]: +# # move on to next (previous because backwards) position +# current_spike_position -= 1 +# if spike_direction != SpikeDirection.RIGHT: +# spike() + +## performs the spike animation +func spike() -> void: + # reset tween + if spike_tween != null: + spike_tween.kill() # never have two tweens acting on the same thing + spike_tween = create_tween() + spike_tween.set_process_mode(Tween.TWEEN_PROCESS_PHYSICS) + # indicator sprite + spike_tween.tween_property(sprite, "frame_coords:y", 1.0, 0.0) + spike_tween.tween_interval(spike_time * 2.0) + # spikes active + spike_tween.tween_property(spike_shape, "disabled", false, 0.0) + spike_tween.tween_property(sprite, "frame_coords:y", 2.0, 0.0) + spike_tween.tween_interval(spike_time) + # spikes gone once more + spike_tween.tween_property(spike_shape, "disabled", true, 0.0) + spike_tween.tween_property(sprite, "frame_coords:y", 0.0, 0.0) + +func die() -> void: + # disable spiking + can_spike = false + # stop tween + if spike_tween != null: + spike_tween.kill() + # disable hitbox + spike_shape.set_deferred("disabled", true) + # reset animation + sprite.frame_coords.y = 3 + Audio.play_sound(death_sound, Audio.ac_die) + $"%DeathSplatter".replace_by_instance() + +func _draw() -> void: + if Engine.editor_hint: + # still draw base moving enemy debug lines + ._draw() + # draw dots at spike positions + for pos in spike_positions: + var dir = Vector2.RIGHT if move_direction == Direction.HORIZONTAL else Vector2.DOWN + draw_circle(dir * pos * 8.0, 2.0, Color.red) diff --git a/objects/enemy/turtle.tscn b/objects/enemy/turtle.tscn new file mode 100644 index 0000000..aefac1a --- /dev/null +++ b/objects/enemy/turtle.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://graphics/enemy/turtle.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/turtle.gd" type="Script" id=2] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=4] + +[sub_resource type="ShaderMaterial" id=6] +shader = ExtResource( 4 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Animation" id=1] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ToFlip/Sprite:frame_coords:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=2] +resource_name = "swim" +length = 0.9 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("ToFlip/Sprite:frame_coords:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 0.0, 1.0, 2.0, 0.0 ] +} + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 2.5, 2.5 ) + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 8, 1.5 ) + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 8.5, 3 ) + +[node name="Turtle" type="Node2D" groups=["enemy"]] +script = ExtResource( 2 ) +blood = false +speed = 20 +node_to_flip = NodePath("ToFlip") + +[node name="ToFlip" type="Node2D" parent="."] +position = Vector2( 8.5, 4 ) + +[node name="Sprite" type="Sprite" parent="ToFlip"] +unique_name_in_owner = true +material = SubResource( 6 ) +position = Vector2( -9.5, -9 ) +texture = ExtResource( 1 ) +centered = false +hframes = 3 +vframes = 4 + +[node name="SwimPlayer" type="AnimationPlayer" parent="ToFlip"] +root_node = NodePath("../..") +autoplay = "swim" +anims/RESET = SubResource( 1 ) +anims/swim = SubResource( 2 ) + +[node name="HeadHitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] +position = Vector2( 8.5, 4 ) + +[node name="HeadShape" type="CollisionShape2D" parent="HeadHitbox"] +position = Vector2( 11, -0.5 ) +shape = SubResource( 3 ) + +[node name="DeathSplatter" parent="HeadHitbox/HeadShape" instance_placeholder="res://objects/enemy/death_particles.tscn"] +unique_name_in_owner = true +autoplay = true + +[node name="SpikeHitbox" type="Area2D" parent="."] + +[node name="SpikeShape" type="CollisionShape2D" parent="SpikeHitbox"] +unique_name_in_owner = true +position = Vector2( 8.5, -1.5 ) +shape = SubResource( 5 ) +disabled = true + +[node name="Platform" type="KinematicBody2D" parent="SpikeHitbox"] +collision_layer = 4 +collision_mask = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SpikeHitbox/Platform"] +position = Vector2( 8.5, 3 ) +shape = SubResource( 7 ) + +[connection signal="area_entered" from="SpikeHitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/uncanny_cat.gd b/objects/enemy/uncanny_cat.gd new file mode 100644 index 0000000..7e5f7e5 --- /dev/null +++ b/objects/enemy/uncanny_cat.gd @@ -0,0 +1,31 @@ +extends "res://objects/enemy/enemy.gd" + + +export var acceleration: float = 8.0 +export var max_speed: float = 16.0 + + +var velocity: Vector2 = Vector2.ZERO + + +onready var player: Node2D = get_tree().get_nodes_in_group("player")[0] + + +func _physics_process(delta: float) -> void: + if not is_instance_valid(player): + return + + var target = (player.global_position - global_position).normalized() + velocity += target * acceleration * delta + velocity = velocity.clamped(max_speed) + + global_position += velocity * delta + +func _on_Hitbox_area_entered(area): + #Kill player + if area.is_in_group("player_hitbox"): + area.get_parent().die() + $Jumpscare.visible = true + $JumpscareSound.play() + var tween = create_tween() + tween.tween_property($Jumpscare, "visible", false, 0).set_delay(1.7) diff --git a/objects/enemy/uncanny_cat.tscn b/objects/enemy/uncanny_cat.tscn new file mode 100644 index 0000000..d944707 --- /dev/null +++ b/objects/enemy/uncanny_cat.tscn @@ -0,0 +1,44 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://graphics/secret/uncanny.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/uncanny_cat.gd" type="Script" id=2] +[ext_resource path="res://audio/sounds/scrump_die.ogg" type="AudioStream" id=3] + +[sub_resource type="CircleShape2D" id=1] +radius = 7.0 + +[node name="UncannyCat" type="Node2D"] +script = ExtResource( 2 ) +blood = false +acceleration = 48.0 +max_speed = 56.0 + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) + +[node name="Hitbox" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +shape = SubResource( 1 ) + +[node name="JumpscareSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 3 ) +pitch_scale = 2.0 +bus = "sound" + +[node name="Jumpscare" type="CanvasLayer" parent="."] +visible = false + +[node name="ColorRect" type="ColorRect" parent="Jumpscare"] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 1 ) + +[node name="TextureRect" type="TextureRect" parent="Jumpscare"] +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 1 ) +expand = true +stretch_mode = 6 + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/environment/barrier/barrier.gd b/objects/environment/barrier/barrier.gd index 001f01e..acb0cf1 100644 --- a/objects/environment/barrier/barrier.gd +++ b/objects/environment/barrier/barrier.gd @@ -16,12 +16,12 @@ func _ready(): scale.y = 1 #Label label.visible = true - label.set_text(str(cost)) + label.set_text("¶" + str(cost)) label.rect_position.y = scale.y / 2 + label_offset.y func _physics_process(delta): #Open - if Game.golds >= cost: open = true + if Game.keys >= cost: open = true if open == true: sprite.region_rect.size.y -= 1 if sprite.region_rect.size.y < 1: queue_free() diff --git a/objects/environment/barrier/barrier.tscn b/objects/environment/barrier/barrier.tscn index d7d480e..7bb395d 100644 --- a/objects/environment/barrier/barrier.tscn +++ b/objects/environment/barrier/barrier.tscn @@ -2,7 +2,8 @@ [ext_resource path="res://objects/environment/barrier/barrier.gd" type="Script" id=1] [ext_resource path="res://graphics/barrier/barrier_2px.png" type="Texture" id=2] -[ext_resource path="res://fonts/2ndpuberty..fnt" type="BitmapFont" id=3] +[ext_resource path="res://ui/theme.tres" type="Theme" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 2, 0.5 ) @@ -87,10 +88,8 @@ tracks/2/keys = { "values": [ Vector2( 1, 1 ), Vector2( 1, 0 ) ] } -[sub_resource type="Theme" id=5] -default_font = ExtResource( 3 ) - [node name="Barrier" type="Node2D"] +z_index = 50 script = ExtResource( 1 ) [node name="Sprite" type="Sprite" parent="."] @@ -111,12 +110,13 @@ anims/open = SubResource( 3 ) [node name="Label" type="Label" parent="."] visible = false +material = ExtResource( 4 ) margin_left = -18.0 margin_top = -15.0 margin_right = 22.0 margin_bottom = 5.0 -theme = SubResource( 5 ) -text = "00" +theme = ExtResource( 3 ) +text = "¶00" align = 1 [connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] diff --git a/objects/environment/barrier/jail_bars.gd b/objects/environment/barrier/jail_bars.gd new file mode 100644 index 0000000..7d73505 --- /dev/null +++ b/objects/environment/barrier/jail_bars.gd @@ -0,0 +1,7 @@ +extends Node2D + +func switch_action(): + var tween = create_tween() + tween.set_process_mode(Tween.TWEEN_PROCESS_PHYSICS) + tween.tween_property(self,"scale",Vector2(1,0),0.4) + tween.tween_callback(self,"queue_free") diff --git a/objects/environment/barrier/jail_bars.tscn b/objects/environment/barrier/jail_bars.tscn new file mode 100644 index 0000000..3f58d69 --- /dev/null +++ b/objects/environment/barrier/jail_bars.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/barrier/jail_bars.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/barrier/jail_bars.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 4, 4 ) + +[node name="JailBars" type="Node2D"] +script = ExtResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) +centered = false + +[node name="StaticBody2D" type="StaticBody2D" parent="."] +collision_layer = 9 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 4, 4 ) +shape = SubResource( 1 ) diff --git a/objects/environment/beach_ball/beach_ball.tscn b/objects/environment/beach_ball/beach_ball.tscn new file mode 100644 index 0000000..4a34e39 --- /dev/null +++ b/objects/environment/beach_ball/beach_ball.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/secret/beach_ball.png" type="Texture" id=1] + +[sub_resource type="PhysicsMaterial" id=1] +friction = 0.3 +bounce = 1.0 + +[sub_resource type="CircleShape2D" id=2] +radius = 6.0 + +[node name="BeachBall" type="RigidBody2D"] +physics_material_override = SubResource( 1 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 2 ) diff --git a/objects/environment/blood/blood_spray.gd b/objects/environment/blood/blood_spray.gd new file mode 100644 index 0000000..0483dc5 --- /dev/null +++ b/objects/environment/blood/blood_spray.gd @@ -0,0 +1,42 @@ +extends Area2D + + +const BloodStain := preload("res://objects/environment/blood/blood_stain.tscn") +const PlayerStain := preload("res://objects/player/player_stain.tscn") + + +export var color: Color = Color(0xf53342ff) +export var stains_player: bool = true + + +var velocity := Vector2.ZERO + + +onready var sprite: Sprite = $Sprite + + +func _ready() -> void: + sprite.self_modulate = color + + +func _physics_process(delta: float) -> void: + velocity.y += 98.0 * delta + position += velocity * delta + sprite.global_rotation = velocity.angle() + + +func _on_body_entered(body: Node) -> void: + if body.is_in_group("can_stain"): + var stain = BloodStain.instance() + stain.modulate = color + stain.global_position = global_position + StainLayer.add_stain(stain) + queue_free() + elif body is TileMap: + queue_free() + elif stains_player and body.is_in_group("player"): + var stain = PlayerStain.instance() + stain.color = color + body.get_node("Graphics/Sprite").add_child(stain) + stain.global_position = global_position + queue_free() diff --git a/objects/environment/blood/blood_spray.tscn b/objects/environment/blood/blood_spray.tscn new file mode 100644 index 0000000..14f873c --- /dev/null +++ b/objects/environment/blood/blood_spray.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/particles/muzzle_flash.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/blood/blood_spray.gd" type="Script" id=3] + +[sub_resource type="CircleShape2D" id=1] +radius = 0.5 + +[node name="BloodSpray" type="Area2D"] +collision_mask = 129 +script = ExtResource( 3 ) + +[node name="Sprite" type="Sprite" parent="."] +self_modulate = Color( 0.960784, 0.2, 0.258824, 1 ) +scale = Vector2( 0.75, 0.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 2, 0 ) +flip_h = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/objects/environment/blood/blood_spray_big.gd b/objects/environment/blood/blood_spray_big.gd new file mode 100644 index 0000000..382c9d9 --- /dev/null +++ b/objects/environment/blood/blood_spray_big.gd @@ -0,0 +1,42 @@ +extends Area2D + + +const BloodStain := preload("res://objects/environment/blood/blood_stain.tscn") +const PlayerStain := preload("res://objects/player/player_stain.tscn") + + +export var color: Color +export var stains_player: bool = true + + +var velocity := Vector2.ZERO + + +onready var sprite: Sprite = $Sprite + + +func _ready() -> void: + sprite.self_modulate = color + + +func _physics_process(delta: float) -> void: + velocity.y += 98.0 * delta + position += velocity * delta + sprite.global_rotation = velocity.angle() + + +func _on_body_entered(body: Node) -> void: + if body.is_in_group("can_stain"): + var stain = BloodStain.instance() + stain.modulate = color + stain.global_position = global_position + StainLayer.add_stain(stain) + queue_free() + elif body is TileMap: + queue_free() + elif stains_player and body.is_in_group("player"): + var stain = PlayerStain.instance() + stain.color = color + body.get_node("Graphics/Sprite").add_child(stain) + stain.global_position = global_position + queue_free() diff --git a/objects/environment/blood/blood_spray_big.tscn b/objects/environment/blood/blood_spray_big.tscn new file mode 100644 index 0000000..26d0e21 --- /dev/null +++ b/objects/environment/blood/blood_spray_big.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/particles/famira_blood.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/blood/blood_spray_big.gd" type="Script" id=2] + +[sub_resource type="CircleShape2D" id=1] +radius = 0.5 + +[node name="BloodSpray" type="Area2D"] +collision_mask = 129 +script = ExtResource( 2 ) +color = Color( 0.701961, 0.745098, 0.4, 1 ) + +[node name="Sprite" type="Sprite" parent="."] +scale = Vector2( 0.75, 0.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 2, 0 ) +flip_h = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/objects/environment/blood/blood_stain.gd b/objects/environment/blood/blood_stain.gd new file mode 100644 index 0000000..23247fe --- /dev/null +++ b/objects/environment/blood/blood_stain.gd @@ -0,0 +1,5 @@ +extends Sprite + + +func _ready() -> void: + rotation = randf() * TAU diff --git a/objects/environment/blood/blood_stain.tscn b/objects/environment/blood/blood_stain.tscn new file mode 100644 index 0000000..6fc0bdf --- /dev/null +++ b/objects/environment/blood/blood_stain.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/blood/blood_stain.gd" type="Script" id=2] + +[node name="BloodStain" type="Sprite"] +light_mask = 3 +texture = ExtResource( 1 ) +script = ExtResource( 2 ) diff --git a/objects/environment/blood_rain/blood_rain.gd b/objects/environment/blood_rain/blood_rain.gd new file mode 100644 index 0000000..0cfba1f --- /dev/null +++ b/objects/environment/blood_rain/blood_rain.gd @@ -0,0 +1,10 @@ +extends Node2D + +const Blood = preload("res://objects/environment/blood/blood_spray.tscn") + +func _ready(): + for i in 256: + var blood = Blood.instance() + blood.global_position = Vector2(i,-4) + blood.velocity = Vector2(randf() * 80.0, 0.0).rotated(randf() * TAU) + self.add_child(blood) diff --git a/objects/environment/blood_rain/blood_rain.tscn b/objects/environment/blood_rain/blood_rain.tscn new file mode 100644 index 0000000..ba1101f --- /dev/null +++ b/objects/environment/blood_rain/blood_rain.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/environment/blood/blood_spray.tscn" type="PackedScene" id=1] +[ext_resource path="res://objects/environment/blood_rain/blood_rain.gd" type="Script" id=2] + +[node name="BloodRain" type="Node2D"] +script = ExtResource( 2 ) + +[node name="BloodSpray" parent="." instance=ExtResource( 1 )] +position = Vector2( 0, -4 ) diff --git a/objects/environment/bubble/bubble.gd b/objects/environment/bubble/bubble.gd new file mode 100644 index 0000000..cc7547e --- /dev/null +++ b/objects/environment/bubble/bubble.gd @@ -0,0 +1,32 @@ +extends Area2D + +export var speed = 16.0 + +onready var sprite = $Sprite +onready var activation_timer = $ActivationTimer + +var lifetime = 0.0 + +func _ready(): + sprite.frame_coords.x = randi() % sprite.hframes + +func _physics_process(delta): + lifetime += delta + if speed > 0.0: + sprite.position.x = sin(lifetime * 4.0) * 4.0 + position.y -= speed * delta + +func pop(): + sprite.frame_coords.y = 1 + $CollisionShape2D.queue_free() + speed = 0.0 + get_tree().create_timer(0.5, false).connect("timeout", self, "queue_free") + +func _on_Bubble_body_entered(body): + if body.is_in_group("player"): + body.oxygen_timer.start() + Audio.play_sound(Audio.a_bubble,Audio.ac_die) + pop() + elif activation_timer.time_left == 0: + pop() + diff --git a/objects/environment/bubble/bubble.tscn b/objects/environment/bubble/bubble.tscn new file mode 100644 index 0000000..c8a185c --- /dev/null +++ b/objects/environment/bubble/bubble.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/particles/bubble.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/bubble/bubble.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 5, 5 ) + +[node name="Bubble" type="Area2D"] +script = ExtResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) +hframes = 4 +vframes = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[node name="ActivationTimer" type="Timer" parent="."] +wait_time = 0.2 +one_shot = true +autostart = true +__meta__ = { +"_editor_description_": "timer until the bubble can be broken by objects other than the player" +} + +[connection signal="body_entered" from="." to="." method="_on_Bubble_body_entered"] diff --git a/objects/environment/bubble/bubble_spawner.tscn b/objects/environment/bubble/bubble_spawner.tscn new file mode 100644 index 0000000..6284238 --- /dev/null +++ b/objects/environment/bubble/bubble_spawner.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/environment/bubble/bubble.tscn" type="PackedScene" id=1] +[ext_resource path="res://scripts/random_spawner.gd" type="Script" id=2] + +[node name="BubbleSpawner" type="Node2D"] +script = ExtResource( 2 ) +scene = ExtResource( 1 ) +extents = Rect2( 0, 0, 8, 8 ) +delay = 3.0 diff --git a/objects/environment/collapse_block/collapse_block.gd b/objects/environment/collapse_block/collapse_block.gd new file mode 100644 index 0000000..9908026 --- /dev/null +++ b/objects/environment/collapse_block/collapse_block.gd @@ -0,0 +1,14 @@ +extends RigidBody2D + +onready var start_position = Vector2(position.x,position.y) +onready var sound = $AudioStreamPlayer + +func _ready(): + for node in get_tree().get_nodes_in_group("delete_on_collapse"): + node.queue_free() + +func _on_AnimationPlayer_animation_finished(anim_name): + queue_free() + +func _on_Timer_timeout(): + $AnimationPlayer.play("die") diff --git a/objects/environment/collapse_block/collapse_block.tscn b/objects/environment/collapse_block/collapse_block.tscn new file mode 100644 index 0000000..bf72c3f --- /dev/null +++ b/objects/environment/collapse_block/collapse_block.tscn @@ -0,0 +1,57 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://tilesets/t_factory.tres" type="TileSet" id=1] +[ext_resource path="res://objects/environment/collapse_block/collapse_block.gd" type="Script" id=2] + +[sub_resource type="PhysicsMaterial" id=2] +bounce = 0.07 + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 4, 4 ) + +[sub_resource type="Animation" id=3] +length = 0.001 + +[sub_resource type="Animation" id=4] +resource_name = "die" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("TileMap:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, false, true, false, true, false ] +} + +[node name="CollapseBlock" type="RigidBody2D" groups=["collapse_block"]] +physics_material_override = SubResource( 2 ) +script = ExtResource( 2 ) + +[node name="TileMap" type="TileMap" parent="."] +tile_set = ExtResource( 1 ) +collision_layer = 0 +collision_mask = 0 +format = 1 +tile_data = PoolIntArray( 0, 0, 0 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( 4, 4 ) +shape = SubResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 3 ) +anims/die = SubResource( 4 ) + +[node name="Timer" type="Timer" parent="."] +wait_time = 3.0 +one_shot = true +autostart = true + +[connection signal="body_entered" from="." to="." method="_on_CollapseBlock_body_entered"] +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] +[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] diff --git a/objects/environment/death tile/death_tile.gd b/objects/environment/death tile/death_tile.gd index 5d335b2..c9fedbc 100644 --- a/objects/environment/death tile/death_tile.gd +++ b/objects/environment/death tile/death_tile.gd @@ -2,5 +2,5 @@ extends Area2D func _on_Area2D_area_entered(area): #Kill player - if area.is_in_group("player"): - area.get_parent().die() + if area.is_in_group("player_hitbox"): + area.get_parent().zap() diff --git a/objects/environment/electric_tiles/electric_tiles.tscn b/objects/environment/electric_tiles/electric_tiles.tscn new file mode 100644 index 0000000..83037c4 --- /dev/null +++ b/objects/environment/electric_tiles/electric_tiles.tscn @@ -0,0 +1,185 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://objects/environment/death tile/death_tile.tscn" type="PackedScene" id=1] +[ext_resource path="res://tilesets/t_laboratory.tres" type="TileSet" id=3] +[ext_resource path="res://shaders/electricity.gdshader" type="Shader" id=4] + +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 4 ) +shader_param/arc_speed = 4.0 +shader_param/arc_fps = 10.0 +shader_param/arc_scale = 8.0 +shader_param/arc_threshold = 0.15 +shader_param/arc_color = Color( 1, 0.93, 0, 1 ) +shader_param/gamma = 2.0 +shader_param/flash_rate = 20.0 +shader_param/flash_intensity = 0.2 + +[sub_resource type="Animation" id=66] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath(".:material:shader_param/arc_color") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 0.93, 0, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/arc_speed") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 4.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:material:shader_param/gamma") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 2.0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:material:shader_param/flash_intensity") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.2 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:collision_layer") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 1 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("DeathTile:monitoring") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=67] +resource_name = "electricity" +length = 3.4 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath(".:material:shader_param/arc_color") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 2.2, 2.4, 3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 0.929412, 0, 0 ), Color( 1, 0.929412, 0, 0 ), Color( 1, 0.93, 0, 1 ), Color( 1, 0.93, 0, 1 ), Color( 1, 0.929412, 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/gamma") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 2, 2.2, 3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 1.0, 1.0, 2.0, 2.0, 1.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:material:shader_param/flash_intensity") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 2, 2.2, 3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.2, 0.2, 0.0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:collision_layer") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 2.2, 2.4, 3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 1, 1, 33, 1, 1 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:collision_layer") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 2.4, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 1, 1, 1 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("DeathTile:monitoring") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 2.4, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} + +[node name="ElectricTiles" type="TileMap" groups=["death"]] +material = SubResource( 10 ) +tile_set = ExtResource( 3 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 1376272, 1, 0 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "electricity" +playback_process_mode = 0 +anims/RESET = SubResource( 66 ) +anims/electricity = SubResource( 67 ) + +[node name="DeathTile" parent="." instance=ExtResource( 1 )] +position = Vector2( 127, 167 ) +scale = Vector2( 1.24, 1.24 ) diff --git a/objects/environment/exit/exit.gd b/objects/environment/exit/exit.gd index a6a9772..ef86f28 100644 --- a/objects/environment/exit/exit.gd +++ b/objects/environment/exit/exit.gd @@ -1,45 +1,48 @@ extends Node2D -export var cost = 0 -onready var label = $Label -onready var anims = $AnimationPlayer -onready var map = get_owner() +export var cost: int = 0 + +var open: bool = false + +onready var label: Label = $Label +onready var sprite: Sprite = $Sprite +onready var closed_collision: CollisionShape2D = $"%ClosedCollision" func _ready(): - anims.play("closed") - label.text = str(cost) - + label.text = "¶" + str(cost) func _physics_process(delta): - if Game.shards >= cost: - anims.play("open") + if Game.keys >= cost and not open: + open = true + label.visible = false + var tween = create_tween() + tween.tween_property(sprite, "frame", 3, 0.25) + tween.tween_property(closed_collision, "disabled", true, 0.0) func _on_Area2D_area_entered(area): - if area.is_in_group("player"): - if Game.score > Game.high_score: Game.high_score = Game.score - #BONUSES - #Collection bonus - if Game.golds == 50: Game.score += 500 - if Game.shards == 5: Game.score += 500 - if Game.golds == 50 && Game.shards == 5: - Game.score += 250 - Game.shards_collected[5] = true - #Time bonus - if Game.golds == 50 && Game.shards == 5: - if Game.time < map.target_time_100: - Game.score += floor(2500 * (Game.time / map.target_time_100)) - Game.shards_collected[6] = true + if area.is_in_group("player_hitbox"): + Game.still_playing = false + Game.can_pause = false + var player = area.get_parent() + player.state_chart.send_event("start_teleport") + player.connect("teleport_finished", self, "_on_player_teleport_finished") + #Play level complete jingle + if Game.check_time_bonus() == true: + Audio.play_music(Audio.a_time_bonus) else: - if Game.time < map.target_time_any: - Game.score += floor(2500 * (Game.time / map.target_time_any)) - Game.shards_collected[6] = true - #Life bonus - if Game.lives == 1: Game.score += 500 - if Game.lives == 2: - Game.score += 1500 - Game.shards_collected[7] = true - #Perfect bonus - if Game.lives == 2 && Game.golds == 50 && Game.shards == 5 && Game.time < map.target_time_100: - Game.score += 1000 - Game.save() - Game.change_map(load("res://maps/level_select.tscn")) + Audio.play_music(Audio.a_victory) + #Display 3D Text + var hud = get_tree().get_nodes_in_group("hud").pop_back() + if hud: + var text = preload("res://objects/hud/3d_text.tscn").instance() + text.anim = "level complete" + yield(get_tree(), "idle_frame") + hud.add_child(text) + +func _on_player_teleport_finished(): + Game.tally_scores() + yield(get_tree().create_timer(4.0, false), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + + SceneManager.change_scene(preload("res://menus/results.tscn").instance()) diff --git a/objects/environment/exit/exit.tscn b/objects/environment/exit/exit.tscn index eb4a8ed..0af9d47 100644 --- a/objects/environment/exit/exit.tscn +++ b/objects/environment/exit/exit.tscn @@ -1,151 +1,110 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=14 format=2] -[ext_resource path="res://scripts/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] [ext_resource path="res://objects/environment/exit/exit.gd" type="Script" id=2] [ext_resource path="res://graphics/exit/exit.png" type="Texture" id=3] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=4] +[ext_resource path="res://shaders/beam_of_sin.gdshader" type="Shader" id=4] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=5] +[ext_resource path="res://graphics/exit/exit_back.png" type="Texture" id=6] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=7] -[sub_resource type="ShaderMaterial" id=1] +[sub_resource type="ShaderMaterial" id=9] shader = ExtResource( 4 ) -shader_param/border_color = Color( 0, 0, 0, 1 ) -shader_param/border_corners = true +shader_param/speed = 1.0 +shader_param/cycle_offset = 0.0 +shader_param/wave_length = 8.0 +shader_param/thickness = 0.1 -[sub_resource type="RectangleShape2D" id=2] -extents = Vector2( 8, 7.5 ) +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 4 ) +shader_param/speed = -2.0 +shader_param/cycle_offset = 3.0 +shader_param/wave_length = 5.0 +shader_param/thickness = 0.1 -[sub_resource type="Animation" id=3] -resource_name = "closed" -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Rect2( 0, 0, 16, 24 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Area2D/CollisionShape2D:disabled") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Label:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Sprite:modulate") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Color( 1, 1, 1, 1 ) ] -} +[sub_resource type="Gradient" id=11] +interpolation_mode = 1 +offsets = PoolRealArray( 0, 0.5 ) +colors = PoolColorArray( 0.345098, 0.74902, 0.878431, 1, 0.396078, 1, 1, 1 ) -[sub_resource type="Animation" id=4] -resource_name = "open" -length = 0.8 -loop = true -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Rect2( 16, 0, 16, 24 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Area2D/CollisionShape2D:disabled") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ false ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Label:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ false ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Sprite:modulate") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0, 0.4, 0.8 ), -"transitions": PoolRealArray( 1, 1, 1 ), -"update": 0, -"values": [ Color( 1, 0, 0, 1 ), Color( 0, 1, 0.203922, 1 ), Color( 1, 0, 0, 1 ) ] -} +[sub_resource type="SegmentShape2D" id=12] +b = Vector2( 0, 15 ) + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 7, 7.5 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 8, 4.5 ) [node name="Exit" type="Node2D"] -z_index = -1 script = ExtResource( 2 ) -[node name="Label" type="Label" parent="."] -visible = false -margin_left = -3.0 -margin_top = -15.0 -margin_right = 37.0 -margin_bottom = 5.0 -theme = ExtResource( 1 ) -text = "2" +[node name="Background" type="Sprite" parent="."] +position = Vector2( 0, 5 ) +z_index = -1 +texture = ExtResource( 6 ) [node name="Sprite" type="Sprite" parent="."] -material = SubResource( 1 ) +material = ExtResource( 7 ) texture = ExtResource( 3 ) -region_enabled = true -region_rect = Rect2( 0, 0, 16, 24 ) +hframes = 4 -[node name="Area2D" type="Area2D" parent="."] -z_index = -3 +[node name="Energy" type="Node2D" parent="Sprite"] +show_behind_parent = true -[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +[node name="Wave1" type="ColorRect" parent="Sprite/Energy"] +material = SubResource( 9 ) +margin_left = -7.0 +margin_top = -3.0 +margin_right = 7.0 +margin_bottom = 12.0 +color = Color( 0.396078, 1, 1, 1 ) + +[node name="Wave2" type="ColorRect" parent="Sprite/Energy"] +material = SubResource( 10 ) +margin_left = -7.0 +margin_top = -3.0 +margin_right = 7.0 +margin_bottom = 12.0 +color = Color( 0.345098, 0.74902, 0.878431, 1 ) + +[node name="Sparkles" type="CPUParticles2D" parent="Sprite/Energy"] +position = Vector2( 0, 12 ) +amount = 16 +lifetime = 2.0 +emission_shape = 2 +emission_rect_extents = Vector2( 6, 0 ) +direction = Vector2( 0, -1 ) +spread = 0.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 12.0 +damping = 4.0 +color_initial_ramp = SubResource( 11 ) + +[node name="Label" type="Label" parent="."] +material = ExtResource( 5 ) +margin_left = -10.0 +margin_top = -12.0 +margin_right = 11.0 +margin_bottom = 8.0 +theme = ExtResource( 1 ) +text = "¶22" + +[node name="DetectPlayer" type="Area2D" parent="."] + +[node name="CollisionShape" type="CollisionShape2D" parent="DetectPlayer"] +position = Vector2( 0, -3 ) +shape = SubResource( 12 ) + +[node name="Collision" type="StaticBody2D" parent="." groups=["can_stain"]] + +[node name="ClosedCollision" type="CollisionShape2D" parent="Collision"] +unique_name_in_owner = true position = Vector2( 0, 4.5 ) -shape = SubResource( 2 ) -disabled = true +shape = SubResource( 7 ) -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -anims/closed = SubResource( 3 ) -anims/open = SubResource( 4 ) +[node name="TopShape" type="CollisionShape2D" parent="Collision"] +position = Vector2( 0, -7.5 ) +shape = SubResource( 8 ) -[connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] +[connection signal="area_entered" from="DetectPlayer" to="." method="_on_Area2D_area_entered"] diff --git a/objects/environment/falling_block/falling_block.gd b/objects/environment/falling_block/falling_block.gd index eed6938..3095ab0 100644 --- a/objects/environment/falling_block/falling_block.gd +++ b/objects/environment/falling_block/falling_block.gd @@ -8,6 +8,12 @@ onready var refresh_timer = $RefreshTimer onready var crush_area = $CrushArea onready var collision_shape = $CollisionShape2D onready var anims = $AnimationPlayer +onready var sprite = $Sprite + +func _ready(): + # adjust to difficulty + fall_speed *= Game.enemy_speed_factor + fall_timer.wait_time /= Game.enemy_speed_factor func _physics_process(delta): #Fall @@ -15,7 +21,7 @@ func _physics_process(delta): position.y += fall_speed #Crush the player for area in crush_area.get_overlapping_areas(): - if area.is_in_group("player"): + if area.is_in_group("player_hitbox"): var player = area.get_parent() if player.is_on_floor(): player.die() @@ -24,13 +30,17 @@ func _physics_process(delta): anims.play("disappear") func _on_Area2D_area_entered(area): - if area.is_in_group("player"): + if area.is_in_group("player_hitbox"): fall_timer.start() + sprite.frame = 1 + -func _on_VisibilityNotifier2D_screen_exited(): - position = startpos - fall = false +#func _on_VisibilityNotifier2D_screen_exited(): +# position = startpos +# fall = false +# refresh_timer.stop() +# anims.play("disappear", -1, -1.0, true) func _on_RefreshTimer_timeout(): collision_shape.disabled = true # disable collision @@ -39,11 +49,14 @@ func _on_RefreshTimer_timeout(): collision_shape.call_deferred("set_disabled", false) fall = false anims.play("idle") + anims.play("disappear", -1, -1.0, true) + sprite.frame = 0 func _on_FallTimer_timeout(): fall = true refresh_timer.start() -func _on_Area2D_area_exited(area): - fall_timer.stop() +#func _on_Area2D_area_exited(area): +# if area.is_in_group("player_hitbox") && graphic == Graphics.GRAVEYARD: +# sprite.frame = 0 diff --git a/objects/environment/falling_block/falling_block.tscn b/objects/environment/falling_block/falling_block.tscn deleted file mode 100644 index f90b080..0000000 --- a/objects/environment/falling_block/falling_block.tscn +++ /dev/null @@ -1,96 +0,0 @@ -[gd_scene load_steps=8 format=2] - -[ext_resource path="res://graphics/falling_block/falling_block_cave.png" type="Texture" id=1] -[ext_resource path="res://objects/environment/falling_block/falling_block.gd" type="Script" id=2] - -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 4, 1.5 ) - -[sub_resource type="RectangleShape2D" id=2] -extents = Vector2( 4, 0.5 ) - -[sub_resource type="RectangleShape2D" id=3] -extents = Vector2( 3, 0.5 ) - -[sub_resource type="Animation" id=4] -resource_name = "disappear" -length = 0.6 -step = 0.05 -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:visible") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0.00203761, 0.1, 0.2, 0.3, 0.4, 0.5 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), -"update": 1, -"values": [ true, false, true, false, true, false ] -} - -[sub_resource type="Animation" id=5] -resource_name = "idle" -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:visible") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} - -[node name="FallingBlock" type="KinematicBody2D"] -collision_layer = 4 -script = ExtResource( 2 ) - -[node name="Sprite" type="Sprite" parent="."] -texture = ExtResource( 1 ) -centered = false - -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -position = Vector2( 4, 2.5 ) -shape = SubResource( 1 ) - -[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] -visible = false -position = Vector2( 4, 4 ) -scale = Vector2( 0.4, 0.4 ) - -[node name="Area2D" type="Area2D" parent="."] -collision_mask = 2 - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] -position = Vector2( 4, -0.5 ) -shape = SubResource( 2 ) - -[node name="FallTimer" type="Timer" parent="."] -process_mode = 0 -wait_time = 0.15 -one_shot = true - -[node name="RefreshTimer" type="Timer" parent="."] -process_mode = 0 -wait_time = 2.0 -one_shot = true - -[node name="CrushArea" type="Area2D" parent="."] - -[node name="CollisionShape2D" type="CollisionShape2D" parent="CrushArea"] -position = Vector2( 4, 4.5 ) -shape = SubResource( 3 ) - -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -autoplay = "idle" -anims/disappear = SubResource( 4 ) -anims/idle = SubResource( 5 ) - -[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] -[connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] -[connection signal="area_exited" from="Area2D" to="." method="_on_Area2D_area_exited"] -[connection signal="timeout" from="FallTimer" to="." method="_on_FallTimer_timeout"] -[connection signal="timeout" from="RefreshTimer" to="." method="_on_RefreshTimer_timeout"] diff --git a/objects/environment/falling_block/falling_block_cave.tscn b/objects/environment/falling_block/falling_block_cave.tscn new file mode 100644 index 0000000..a30e355 --- /dev/null +++ b/objects/environment/falling_block/falling_block_cave.tscn @@ -0,0 +1,140 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://graphics/falling_block/falling_block_cave.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/falling_block/falling_block.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 4, 1.5 ) + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 3.5, 0.5 ) + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 3, 0.5 ) + +[sub_resource type="Animation" id=4] +resource_name = "disappear" +length = 0.6 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.00203761, 0.1, 0.2, 0.3, 0.4, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, false, true, false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Area2D/CollisionShape2D:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("CollisionShape2D:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} + +[sub_resource type="Animation" id=5] +resource_name = "idle" +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CollisionShape2D:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Area2D/CollisionShape2D:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[node name="FallingBlock" type="KinematicBody2D"] +collision_layer = 4 +script = ExtResource( 2 ) +fall_speed = 1.0 + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) +centered = false +hframes = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( 4, 2.5 ) +shape = SubResource( 1 ) + +[node name="Area2D" type="Area2D" parent="."] +collision_mask = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +position = Vector2( 4, 0 ) +shape = SubResource( 2 ) + +[node name="FallTimer" type="Timer" parent="."] +process_mode = 0 +wait_time = 0.2 +one_shot = true + +[node name="RefreshTimer" type="Timer" parent="."] +process_mode = 0 +wait_time = 2.0 +one_shot = true + +[node name="CrushArea" type="Area2D" parent="."] +visible = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="CrushArea"] +position = Vector2( 4, 4.5 ) +shape = SubResource( 3 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "idle" +anims/disappear = SubResource( 4 ) +anims/idle = SubResource( 5 ) + +[connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] +[connection signal="timeout" from="FallTimer" to="." method="_on_FallTimer_timeout"] +[connection signal="timeout" from="RefreshTimer" to="." method="_on_RefreshTimer_timeout"] diff --git a/objects/environment/falling_block/falling_block_graveyard.tscn b/objects/environment/falling_block/falling_block_graveyard.tscn new file mode 100644 index 0000000..15bc850 --- /dev/null +++ b/objects/environment/falling_block/falling_block_graveyard.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/environment/falling_block/falling_block_cave.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/falling_block/woeful_soul.png" type="Texture" id=2] + +[node name="FallingBlock" instance=ExtResource( 1 )] + +[node name="Sprite" parent="." index="0"] +texture = ExtResource( 2 ) + +[node name="FallTimer" parent="." index="3"] +wait_time = 0.2 diff --git a/objects/environment/falling_block/falling_block_lab.tscn b/objects/environment/falling_block/falling_block_lab.tscn new file mode 100644 index 0000000..0dd9e71 --- /dev/null +++ b/objects/environment/falling_block/falling_block_lab.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/environment/falling_block/falling_block_cave.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/falling_block/falling_block_lab.png" type="Texture" id=2] + +[node name="FallingBlock" instance=ExtResource( 1 )] + +[node name="Sprite" parent="." index="0"] +texture = ExtResource( 2 ) + +[node name="FallTimer" parent="." index="3"] +wait_time = 0.2 diff --git a/objects/environment/hatch/hatch.gd b/objects/environment/hatch/hatch.gd new file mode 100644 index 0000000..2310e3a --- /dev/null +++ b/objects/environment/hatch/hatch.gd @@ -0,0 +1,30 @@ +extends Node2D + +onready var anims = $SpriteAnim +onready var down_prompt = $DownPrompt +onready var snap_position = $Position2D +var can_interact = false +var player = null + +func _physics_process(delta): + if Input.is_action_just_pressed("enter_hatch") && can_interact: + anims.play("open") + player.enter_hatch(position + snap_position.position) + down_prompt.scale.y = -1 + down_prompt.visible = true + player.connect("hatch_exited", self, "exit_hatch", [], CONNECT_ONESHOT) + +func exit_hatch(): + anims.play("open") + down_prompt.scale.y = 1 + +func _on_TriggerArea_area_entered(area): + down_prompt.visible = true + down_prompt.scale.y = 1 + can_interact = true + player = area.get_owner() + +func _on_TriggerArea_area_exited(area): + if down_prompt.scale.y == 1: + down_prompt.visible = false + can_interact = false diff --git a/objects/environment/hatch/hatch.tscn b/objects/environment/hatch/hatch.tscn new file mode 100644 index 0000000..1b50803 --- /dev/null +++ b/objects/environment/hatch/hatch.tscn @@ -0,0 +1,78 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://graphics/hatch/hatch.png" type="Texture" id=1] +[ext_resource path="res://graphics/hud/down_prompt.png" type="Texture" id=2] +[ext_resource path="res://objects/environment/hatch/hatch.gd" type="Script" id=3] + +[sub_resource type="Animation" id=1] +resource_name = "open" +length = 0.9 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.7, 0.8 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 1, 0 ] +} + +[sub_resource type="Animation" id=2] +resource_name = "idle" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("DownPrompt:position") +tracks/0/interp = 0 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -18 ), Vector2( 4, -16 ), Vector2( 4, -18 ) ] +} + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 4, 4 ) + +[node name="Hatch" type="Node2D"] +script = ExtResource( 3 ) + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 6, 3 ) +texture = ExtResource( 1 ) +hframes = 3 + +[node name="SpriteAnim" type="AnimationPlayer" parent="."] +anims/open = SubResource( 1 ) + +[node name="DownPrompt" type="Sprite" parent="."] +visible = false +position = Vector2( 4, -18 ) +texture = ExtResource( 2 ) + +[node name="ArrowAnim" type="AnimationPlayer" parent="."] +autoplay = "idle" +anims/idle = SubResource( 2 ) + +[node name="TriggerArea" type="Area2D" parent="."] +collision_layer = 0 +collision_mask = 2 +monitorable = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="TriggerArea"] +position = Vector2( 4, 4 ) +shape = SubResource( 3 ) + +[node name="Position2D" type="Position2D" parent="."] +position = Vector2( 4, -2 ) +__meta__ = { +"_gizmo_extents_": 0.0 +} + +[connection signal="area_entered" from="TriggerArea" to="." method="_on_TriggerArea_area_entered"] +[connection signal="area_exited" from="TriggerArea" to="." method="_on_TriggerArea_area_exited"] diff --git a/objects/environment/ladder/ladder.gd b/objects/environment/ladder/ladder.gd index 4b2fd1c..759101e 100644 --- a/objects/environment/ladder/ladder.gd +++ b/objects/environment/ladder/ladder.gd @@ -1,4 +1,11 @@ -extends Node2D -onready var left_snap = $LeftSnap -onready var right_snap = $RightSnap -onready var middle = position.x + 4 +extends Area2D + +export var can_climb_left: bool = true +export var can_climb_right: bool = true + +onready var left_snap: float = $LeftSnap.global_position.x +onready var right_snap: float = $RightSnap.global_position.x +onready var middle: float = global_position.x + 4.0 + +func _ready() -> void: + $CollisionShape2D.global_position.y -= 1.0 diff --git a/objects/environment/ladder/ladder.tscn b/objects/environment/ladder/ladder.tscn index 80766f5..5b8985c 100644 --- a/objects/environment/ladder/ladder.tscn +++ b/objects/environment/ladder/ladder.tscn @@ -5,14 +5,11 @@ [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 6, 4 ) -[node name="Ladder" type="Node2D"] +[node name="Ladder" type="Area2D" groups=["ladder"]] +collision_layer = 64 script = ExtResource( 1 ) -[node name="Area2D" type="Area2D" parent="."] -collision_layer = 4 -collision_mask = 4 - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2( 4, 4 ) shape = SubResource( 1 ) diff --git a/objects/environment/moving_platform/moving_platform.gd b/objects/environment/moving_platform/moving_platform.gd new file mode 100644 index 0000000..a2f64f8 --- /dev/null +++ b/objects/environment/moving_platform/moving_platform.gd @@ -0,0 +1,51 @@ +extends KinematicBody2D + +export var direction = 1 +export var speed = 20 +#How far to move +export var left_up_boundary = 0.0 +export var right_down_boundary = 0.0 +#Move horizontal or vertical +export(int, "Horizontal", "Vertical") var move_direction +#Onreadys +onready var startpos = position +onready var sprite = $Sprite +onready var hitbox = $CollisionShape2D + +func _ready(): + sprite.set_region_rect(Rect2(0,0,8 * scale.x,4)) + sprite.scale.x /= scale.x + left_up_boundary *= 8 + right_down_boundary *= 8 + #Better offset for vertical platforms + if move_direction == 1: + right_down_boundary -= 5 + left_up_boundary -= 1 + +func _physics_process(delta): + if move_direction == 0: + move_side_to_side(delta) + else: move_up_and_down(delta) + +func move_side_to_side(delta): + #Move + position.x += direction * (speed * delta) + #Switch dir + if position.x >= startpos.x + (right_down_boundary): + direction = -1 + if position.x <= startpos.x + (-left_up_boundary): + direction = 1 + +func move_up_and_down(delta): + #Move + position.y += direction * (speed * delta) + #fix graphics + if direction < 0.0 and speed >= 30.0: + sprite.position.y = 1.0 + else: + sprite.position.y = 2.0 + #Switch dir + if position.y >= startpos.y + (right_down_boundary): + direction = -1 + if position.y <= startpos.y + (-left_up_boundary): + direction = 1 diff --git a/objects/environment/moving_platform/moving_platform.tscn b/objects/environment/moving_platform/moving_platform.tscn new file mode 100644 index 0000000..2c4d38d --- /dev/null +++ b/objects/environment/moving_platform/moving_platform.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/moving_platform/moving_platform.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/moving_platform/moving_platform.gd" type="Script" id=2] + +[sub_resource type="SegmentShape2D" id=1] +a = Vector2( -4, -2 ) +b = Vector2( 4, -2 ) + +[node name="MovingPlatform" type="KinematicBody2D"] +collision_layer = 4 +motion/sync_to_physics = true +script = ExtResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 0, 2 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 0, 0, 8, 4 ) +region_filter_clip = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( 0, 2 ) +shape = SubResource( 1 ) +one_way_collision = true diff --git a/objects/environment/moving_platform/moving_platform_scholar.gd b/objects/environment/moving_platform/moving_platform_scholar.gd new file mode 100644 index 0000000..ea6cc83 --- /dev/null +++ b/objects/environment/moving_platform/moving_platform_scholar.gd @@ -0,0 +1,92 @@ +tool +extends Node2D + + +const DEBUG_COLOR := Color(0.4, 0.2, 0.6, 0.75) + +export var size: float = 8.0 setget _set_size +export var speed: float = 20.0 +export var point_a := Vector2.ZERO setget _set_point_a +export var point_b := Vector2.ZERO setget _set_point_b +export (float, 0.0, 1.0, 0.1) var start_position: float = 0.0 setget _set_start_position +export var start_reversed: bool = false + +onready var body: KinematicBody2D = $Body +onready var sprite: Sprite = $"%Sprite" + +var _previous_position: Vector2 + + +func _ready() -> void: + if Engine.editor_hint: + return + + var distance := point_a.distance_to(point_b) + var start_target := point_a if start_reversed else point_b + var end_target := point_b if start_reversed else point_a + var start_weight := start_position if start_reversed else 1.0 - start_position + + var tween := create_tween() + tween.stop() + tween.set_process_mode(Tween.TWEEN_PROCESS_PHYSICS) + tween.set_loops() + tween.tween_property(body, "position", end_target, distance / speed) + tween.tween_property(body, "position", start_target, distance / speed) + var start_tween := create_tween() + start_tween.set_process_mode(Tween.TWEEN_PROCESS_PHYSICS) + start_tween.tween_property(body, "position", start_target, start_weight * distance / speed) + start_tween.tween_callback(tween, "play") + + _previous_position = body.global_position + + +func _physics_process(delta: float) -> void: + if Engine.editor_hint: + return + + if (body.global_position.y - _previous_position.y) < 0.0 and speed >= 40.0: + sprite.position.y = -1.0 + else: + sprite.position.y = 0.0 + _previous_position = body.global_position + + +func _set_size(value: float) -> void: + size = value + get_node("%Sprite").region_rect.size.x = size + var segment = get_node("%CollisionShape").shape as SegmentShape2D + segment.a.x = size * -0.5 + segment.b.x = size * 0.5 + + +func _set_start_position(value: float) -> void: + start_position = value + if Engine.editor_hint: + get_node("Body").position = lerp(point_a, point_b, start_position) + + +func _set_point_a(value: Vector2) -> void: + point_a = value + if Engine.editor_hint: + _update_positions() + + +func _set_point_b(value: Vector2) -> void: + point_b = value + if Engine.editor_hint: + _update_positions() + + +func _update_positions() -> void: + if point_a == point_b: + _set_start_position(0.0) + else: + var closest_point := Geometry.get_closest_point_to_segment_2d(get_node("Body").position, point_a, point_b) + _set_start_position(point_a.distance_to(closest_point) / point_a.distance_to(point_b)) + property_list_changed_notify() + update() + + +func _draw() -> void: + if Engine.editor_hint: + draw_line(point_a, point_b, DEBUG_COLOR, 1.01) diff --git a/objects/environment/moving_platform/moving_platform_scholar.tscn b/objects/environment/moving_platform/moving_platform_scholar.tscn new file mode 100644 index 0000000..0d83800 --- /dev/null +++ b/objects/environment/moving_platform/moving_platform_scholar.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/moving_platform/moving_platform.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/moving_platform/moving_platform_scholar.gd" type="Script" id=2] + +[sub_resource type="SegmentShape2D" id=1] +resource_local_to_scene = true +a = Vector2( -4, 0.01 ) +b = Vector2( 4, 0.01 ) + +[node name="MovingPlatform" type="Node2D"] +script = ExtResource( 2 ) + +[node name="Body" type="KinematicBody2D" parent="."] +collision_layer = 4 +motion/sync_to_physics = true +moving_platform_apply_velocity_on_leave = 1 + +[node name="Sprite" type="Sprite" parent="Body"] +unique_name_in_owner = true +texture = ExtResource( 1 ) +offset = Vector2( 0, 2 ) +region_enabled = true +region_rect = Rect2( 0, 0, 8, 4 ) +region_filter_clip = true + +[node name="CollisionShape" type="CollisionShape2D" parent="Body"] +unique_name_in_owner = true +shape = SubResource( 1 ) +one_way_collision = true diff --git a/objects/environment/rock/crate.tscn b/objects/environment/rock/crate.tscn new file mode 100644 index 0000000..55117a6 --- /dev/null +++ b/objects/environment/rock/crate.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://objects/environment/rock/rock.tscn" type="PackedScene" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/rock/crate.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Crate" instance=ExtResource( 1 )] + +[node name="Sprite" parent="." index="0"] +material = SubResource( 1 ) +position = Vector2( 0, 0 ) +texture = ExtResource( 3 ) diff --git a/objects/environment/rock/rock.gd b/objects/environment/rock/rock.gd index d7f33ae..7bc5ee2 100644 --- a/objects/environment/rock/rock.gd +++ b/objects/environment/rock/rock.gd @@ -1,23 +1,33 @@ extends KinematicBody2D -var velocity = Vector2.ZERO -onready var bottom = $Bottom + +var velocity: Vector2 = Vector2.ZERO +const SplashParticles = preload("res://objects/environment/splash/splash_particles.tscn") func _physics_process(delta): - if !is_on_floor(): + if not is_on_floor(): #Gravity - velocity.y = 100 - velocity.x = 0 + velocity.y = 100.0 + velocity.x = 0.0 else: - velocity.y = 0 + velocity.y = 0.0 move_and_slide(velocity,Vector2.UP) - velocity.x = 0 + velocity.x = 0.0 -func push(direction): - velocity -= direction * 32 +func push(amount: float): + velocity.x = amount func _on_Hitbox_area_entered(area): # do not squish if in "blocks_squash" group - if area.is_in_group("enemy_hitbox") && !area.is_in_group("blocks_squash"): - var enemy = area.get_parent() - if enemy.global_position.y > global_position.y && velocity.y > 0: + if area.is_in_group("enemy_hitbox") and not area.is_in_group("blocks_squash"): + var enemy = area.get_owner() + if enemy.global_position.y > global_position.y and velocity.y > 0: enemy.die() + + +func _on_Hitbox_body_entered(body): + if body.is_in_group("has_splash"): + var particles = SplashParticles.instance() + particles.global_position = global_position + particles.color = body.splash_color + particles.emitting = true + get_parent().add_child(particles) diff --git a/objects/environment/rock/rock.tscn b/objects/environment/rock/rock.tscn index 3609eca..aa761b0 100644 --- a/objects/environment/rock/rock.tscn +++ b/objects/environment/rock/rock.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=7 format=2] [ext_resource path="res://graphics/rock/rock.png" type="Texture" id=1] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] [ext_resource path="res://objects/environment/rock/rock.gd" type="Script" id=3] [sub_resource type="ShaderMaterial" id=1] @@ -10,18 +10,19 @@ shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = false [sub_resource type="RectangleShape2D" id=2] -extents = Vector2( 3.9, 3.9 ) +extents = Vector2( 3.75, 4 ) [sub_resource type="RectangleShape2D" id=3] extents = Vector2( 4, 4 ) -[node name="Rock" type="KinematicBody2D" groups=["pushable"]] +[node name="Rock" type="KinematicBody2D" groups=["pushable", "stop_arrow"]] collision_layer = 4 script = ExtResource( 3 ) [node name="Sprite" type="Sprite" parent="."] material = SubResource( 1 ) position = Vector2( -1, -1 ) +z_index = -1 texture = ExtResource( 1 ) centered = false @@ -31,12 +32,12 @@ shape = SubResource( 2 ) [node name="Hitbox" type="Area2D" parent="." groups=["squash"]] position = Vector2( -1, 0 ) +collision_layer = 5 +collision_mask = 33 [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] position = Vector2( 5, 4 ) shape = SubResource( 3 ) -[node name="Bottom" type="Position2D" parent="."] -position = Vector2( 4, 8 ) - [connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] diff --git a/objects/environment/spaghetti/spaghetti.gd b/objects/environment/spaghetti/spaghetti.gd new file mode 100644 index 0000000..7461548 --- /dev/null +++ b/objects/environment/spaghetti/spaghetti.gd @@ -0,0 +1,24 @@ +extends Node2D + + +export var segments: int = 8 + + +onready var segment: RigidBody2D = $Segment + + +func _ready() -> void: + var line = segment.get_node("Line") + line.default_color = line.default_color.darkened(rand_range(-0.1, 0.1)) + var last_segment = $Segment + for i in segments: + var new_segment = last_segment.duplicate(0) + add_child(new_segment) + new_segment.position.x -= 3.0 + var joint = last_segment.get_node("Joint") + joint.node_a = joint.get_path_to(last_segment) + joint.node_b = joint.get_path_to(new_segment) + new_segment.apply_central_impulse(Vector2(30.0, rand_range(-10.0, -100.0))) + last_segment = new_segment + position.x += 1.5 * float(segments) + Audio.play_sound(Audio.a_spaghetti, Audio.ac_boss) diff --git a/objects/environment/spaghetti/spaghetti.tscn b/objects/environment/spaghetti/spaghetti.tscn new file mode 100644 index 0000000..c97cc30 --- /dev/null +++ b/objects/environment/spaghetti/spaghetti.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/environment/spaghetti/spaghetti.gd" type="Script" id=1] + +[sub_resource type="PhysicsMaterial" id=3] +friction = 0.25 + +[sub_resource type="CapsuleShape2D" id=1] +radius = 0.5 +height = 3.0 + +[node name="Spaghetti" type="Node2D"] +script = ExtResource( 1 ) + +[node name="Segment" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 3 ) + +[node name="Line" type="Line2D" parent="Segment"] +points = PoolVector2Array( -2, 0, 2, 0 ) +width = 1.0 +default_color = Color( 0.988235, 0.984314, 0.839216, 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Segment"] +rotation = 1.5708 +shape = SubResource( 1 ) + +[node name="Joint" type="PinJoint2D" parent="Segment"] +position = Vector2( -1.5, 0 ) diff --git a/objects/environment/splash/splash_particles.tscn b/objects/environment/splash/splash_particles.tscn new file mode 100644 index 0000000..d84eecb --- /dev/null +++ b/objects/environment/splash/splash_particles.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://graphics/particles/splash.png" type="Texture" id=1] + +[node name="SplashParticles" type="CPUParticles2D"] +pause_mode = 2 +z_index = -5 +emitting = false +amount = 16 +lifetime = 2.0 +one_shot = true +explosiveness = 0.9 +texture = ExtResource( 1 ) +emission_shape = 2 +emission_rect_extents = Vector2( 2, 0 ) +flag_align_y = true +direction = Vector2( 0, -1 ) +spread = 10.0 +gravity = Vector2( 0, 120 ) +initial_velocity = 100.0 +initial_velocity_random = 0.5 +scale_amount = 0.25 +scale_amount_random = 0.5 diff --git a/objects/environment/stalactite/stalactite.gd b/objects/environment/stalactite/stalactite.gd new file mode 100644 index 0000000..fe987e0 --- /dev/null +++ b/objects/environment/stalactite/stalactite.gd @@ -0,0 +1,43 @@ +extends Node2D + +onready var cast = $RayCast2D +export var fall_speed = 100 +var fall = false +onready var refresh_timer = $RefreshTimer +onready var anims = $AnimationPlayer +onready var startpos = position + +func _ready(): + # adjust to difficulty + fall_speed *= Game.enemy_speed_factor + +func _physics_process(delta): + if cast.is_colliding(): + var collider = cast.get_collider() + if collider.is_in_group("player_hitbox") or collider.is_in_group("msx"): + anims.play("wiggle") + + if fall == true: + position.y += fall_speed * delta + + if !refresh_timer.is_stopped() && refresh_timer.get_time_left() <= 0.6: + anims.play("disappear") + + + +func _on_Hitbox_area_entered(area): + if area.is_in_group("player_hitbox"): + area.get_parent().die() + + +func _on_RefreshTimer_timeout(): + call_deferred("set_position", startpos) + fall = false + anims.play("idle") + anims.play("disappear", -1, -1.0, true) + + +func _on_AnimationPlayer_animation_finished(anim_name): + if anim_name == "wiggle": + if fall == false: refresh_timer.start() + fall = true diff --git a/objects/environment/stalactite/stalactite.tscn b/objects/environment/stalactite/stalactite.tscn new file mode 100644 index 0000000..1d66b73 --- /dev/null +++ b/objects/environment/stalactite/stalactite.tscn @@ -0,0 +1,157 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://graphics/stalactite/stalactite.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/stalactite/stalactite.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 4, 2.5 ) + +[sub_resource type="Animation" id=4] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Hitbox/CollisionShape2D:disabled") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} + +[sub_resource type="Animation" id=2] +resource_name = "disappear" +length = 0.6 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.00203761, 0.1, 0.2, 0.3, 0.4, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, false, true, false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hitbox/CollisionShape2D:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("RayCast2D:enabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[sub_resource type="Animation" id=3] +resource_name = "idle" +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("RayCast2D:enabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hitbox/CollisionShape2D:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=5] +resource_name = "wiggle" +length = 0.1 +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.025, 0.05, 0.075, 0.1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, 3 ), Vector2( 3, 3 ), Vector2( 4, 3 ), Vector2( 5, 3 ), Vector2( 4, 3 ) ] +} + +[node name="Stalactite" type="Node2D"] +script = ExtResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 4, 3 ) +texture = ExtResource( 1 ) + +[node name="RayCast2D" type="RayCast2D" parent="."] +position = Vector2( 3, 3 ) +enabled = true +cast_to = Vector2( 0, 40 ) +collision_mask = 10 +collide_with_areas = true + +[node name="Hitbox" type="Area2D" parent="."] +position = Vector2( 0, 3 ) +collision_mask = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 4, 0 ) +shape = SubResource( 1 ) +disabled = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "idle" +anims/RESET = SubResource( 4 ) +anims/disappear = SubResource( 2 ) +anims/idle = SubResource( 3 ) +anims/wiggle = SubResource( 5 ) + +[node name="RefreshTimer" type="Timer" parent="."] +wait_time = 2.0 +one_shot = true + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] +[connection signal="timeout" from="RefreshTimer" to="." method="_on_RefreshTimer_timeout"] diff --git a/objects/environment/stalactite/stalactite_particles.gd b/objects/environment/stalactite/stalactite_particles.gd new file mode 100644 index 0000000..ea07667 --- /dev/null +++ b/objects/environment/stalactite/stalactite_particles.gd @@ -0,0 +1,4 @@ +extends CPUParticles2D + +func _ready(): + emitting = true diff --git a/objects/environment/stalactite/stalactite_particles.tscn b/objects/environment/stalactite/stalactite_particles.tscn new file mode 100644 index 0000000..c8fba30 --- /dev/null +++ b/objects/environment/stalactite/stalactite_particles.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://graphics/particles/stalactite.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/stalactite/stalactite_particles.gd" type="Script" id=2] + +[node name="StalactiteParticles" type="CPUParticles2D"] +emitting = false +lifetime = 0.2 +one_shot = true +texture = ExtResource( 1 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 300 ) +initial_velocity = 80.0 +angle = 255.3 +angle_random = 0.47 +scale_amount = 0.0 +scale_amount_random = 1.0 +script = ExtResource( 2 ) diff --git a/objects/environment/switches/button.gd b/objects/environment/switches/button.gd new file mode 100644 index 0000000..836b530 --- /dev/null +++ b/objects/environment/switches/button.gd @@ -0,0 +1,14 @@ +tool +extends "res://objects/environment/switches/switch.gd" + +var pressed = false +var sound = load("res://audio/sounds/button.ogg") + +func _on_ActivationArea_area_entered(area): + if !pressed: + if area.is_in_group("player_hitbox"): + activate() + $Sprite.frame = 1 + $StaticBody2D/CollisionPolygon2D.disabled = true + pressed = true + Audio.play_sound(sound,$AudioStreamPlayer) diff --git a/objects/environment/switches/button.tscn b/objects/environment/switches/button.tscn new file mode 100644 index 0000000..f49b15d --- /dev/null +++ b/objects/environment/switches/button.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/switches/button.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/switches/button.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 2, 0.5 ) + +[node name="Button" type="Node2D"] +script = ExtResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 4, 4 ) +texture = ExtResource( 1 ) +hframes = 2 + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="StaticBody2D"] +polygon = PoolVector2Array( 1, 7, 0, 8, 1, 8, 7, 8, 8, 8, 7, 7 ) + +[node name="ActivationArea" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="ActivationArea"] +position = Vector2( 4, 6.5 ) +shape = SubResource( 1 ) + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +volume_db = -8.0 + +[connection signal="area_entered" from="ActivationArea" to="." method="_on_ActivationArea_area_entered"] diff --git a/objects/environment/switches/switch.gd b/objects/environment/switches/switch.gd new file mode 100644 index 0000000..41b2742 --- /dev/null +++ b/objects/environment/switches/switch.gd @@ -0,0 +1,19 @@ +tool +extends Node2D + +export (String) var target_group = "" + +func activate(): + for object in get_tree().get_nodes_in_group(target_group): + object.switch_action() + +func _process(delta): + # redraw lines every frame to account for things changing + if Engine.editor_hint and Engine.get_frames_drawn() % 10 == 0: + update() + +func _draw(): + if Engine.editor_hint: + for node in get_tree().get_nodes_in_group(target_group): + if node is Node2D: + draw_line(Vector2.ZERO, to_local(node.global_position), Color(0.2, 1.0, 0.0, 0.5), 1.5) diff --git a/objects/environment/test_fire/test_fire.tscn b/objects/environment/test_fire/test_fire.tscn new file mode 100644 index 0000000..ae6b1b0 --- /dev/null +++ b/objects/environment/test_fire/test_fire.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/backgrounds/fire.png" type="Texture" id=1] +[ext_resource path="res://shaders/fire.gdshader" type="Shader" id=2] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) + +[node name="Node2D" type="Node2D"] + +[node name="ColorRect" type="ColorRect" parent="."] +margin_right = 256.0 +margin_bottom = 192.0 +color = Color( 0, 0, 0, 1 ) + +[node name="Fire" type="Sprite" parent="."] +material = SubResource( 1 ) +position = Vector2( 144, 96 ) +scale = Vector2( 2.02667, 1 ) +texture = ExtResource( 1 ) diff --git a/objects/environment/tube/tube_entrance.gd b/objects/environment/tube/tube_entrance.gd index 4962417..fb73f6e 100644 --- a/objects/environment/tube/tube_entrance.gd +++ b/objects/environment/tube/tube_entrance.gd @@ -4,7 +4,7 @@ export var speed = 120.0 export var direction = Vector2.RIGHT func _on_TubeEntrance_area_entered(area): - if area.is_in_group("player"): + if area.is_in_group("player_hitbox"): var player = area.get_parent() player.global_position = global_position + Vector2(4.0, 4.0) player.enter_transport(speed, direction) diff --git a/objects/environment/tube/tube_exit.gd b/objects/environment/tube/tube_exit.gd index 9a584df..a8cb131 100644 --- a/objects/environment/tube/tube_exit.gd +++ b/objects/environment/tube/tube_exit.gd @@ -1,5 +1,5 @@ extends Area2D func _on_TubeExit_area_entered(area): - if area.is_in_group("player"): + if area.is_in_group("player_hitbox"): area.get_parent().exit_transport() diff --git a/objects/environment/turniwood/turning_platform.gd b/objects/environment/turniwood/turning_platform.gd index 0f34719..5bc03d0 100644 --- a/objects/environment/turniwood/turning_platform.gd +++ b/objects/environment/turniwood/turning_platform.gd @@ -1,19 +1,33 @@ +tool extends Node2D + onready var anims = $AnimationPlayer onready var flip_timer = $FlipTimer onready var delay_timer = $DelayTimer +onready var static_body = $StaticBody2D export var time:float = 60 export var delay = 0.0 -export(int, "Wood", "Yellow") var color -onready var time_ms = time * 0.0166666666666667 # Time is converted from frames @ 60fps to ms +export var texture: Texture setget _set_texture +onready var time_ms = time / 60.0 # Time is converted from frames @ 60fps to ms +onready var collision_layer = static_body.collision_layer func _ready(): + if Engine.editor_hint: + return + _set_texture(texture) #Auto start if delay variable is zero if delay == 0.0: anims.play("idle") flip_timer.start(time_ms) else: delay_timer.start(delay) + #Easy mode + time_ms /= Game.enemy_speed_factor + +func _set_texture(new_texture: Texture) -> void: + texture = new_texture + if is_inside_tree(): + $Sprite.texture = new_texture func _on_AnimationPlayer_animation_finished(anim_name): #Return to idle after turn animation @@ -21,6 +35,7 @@ func _on_AnimationPlayer_animation_finished(anim_name): anims.play("idle") flip_timer.start(time_ms) + func _on_FlipTimer_timeout(): anims.play("turn") @@ -28,3 +43,12 @@ func _on_FlipTimer_timeout(): func _on_DelayTimer_timeout(): anims.play("idle") flip_timer.start(time_ms) + + +func _on_DetectPlayer_body_entered(body: Node) -> void: + if body.is_in_group("player"): + static_body.collision_layer = 0 + +func _on_DetectPlayer_body_exited(body: Node) -> void: + if body.is_in_group("player"): + static_body.collision_layer = collision_layer diff --git a/objects/environment/turniwood/turning_platform.tscn b/objects/environment/turniwood/turning_platform.tscn index bdeb679..6e0e46f 100644 --- a/objects/environment/turniwood/turning_platform.tscn +++ b/objects/environment/turniwood/turning_platform.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://objects/environment/turniwood/turning_platform.gd" type="Script" id=1] [ext_resource path="res://graphics/turniwood/turning_platform_yellow.png" type="Texture" id=2] @@ -6,12 +6,30 @@ [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 4, 1 ) +[sub_resource type="RectangleShape2D" id=4] +extents = Vector2( 3.5, 0.5 ) + +[sub_resource type="Animation" id=5] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0 ] +} + [sub_resource type="Animation" id=2] resource_name = "idle" loop = true step = 0.125 tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/path = NodePath("StaticBody2D/CollisionShape2D:disabled") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false @@ -20,10 +38,10 @@ tracks/0/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, -"values": [ Rect2( 0, 0, 8, 8 ) ] +"values": [ false ] } tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:rotation_degrees") +tracks/1/path = NodePath("Sprite:frame") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false @@ -32,19 +50,7 @@ tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, -"values": [ 0.0 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("StaticBody2D/CollisionShape2D:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ false ] +"values": [ 0 ] } [sub_resource type="Animation" id=3] @@ -76,46 +82,61 @@ tracks/1/keys = { "values": [ Rect2( 0, 0, 8, 8 ), Rect2( 8, 0, 8, 8 ), Rect2( 0, 0, 8, 8 ), Rect2( 8, 0, 8, 8 ), Rect2( 0, 0, 8, 8 ) ] } tracks/2/type = "value" -tracks/2/path = NodePath("Sprite:rotation_degrees") +tracks/2/path = NodePath("Sprite:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { -"times": PoolRealArray( 0.4, 0.55, 0.65, 0.8, 0.9 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), -"update": 1, -"values": [ 0.0, 90.0, 90.0, 0.0, 0.0 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Sprite:position") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { "times": PoolRealArray( 0.15, 0.2, 0.35, 0.4 ), "transitions": PoolRealArray( 1, 1, 1, 1 ), "update": 0, "values": [ Vector2( 4, 4 ), Vector2( 5, 4 ), Vector2( 3, 4 ), Vector2( 4, 4 ) ] } +tracks/3/type = "value" +tracks/3/path = NodePath("Sprite:frame") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.55, 0.65, 0.8, 0.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 0 ] +} [node name="TurningPlatform" type="Node2D"] script = ExtResource( 1 ) +texture = ExtResource( 2 ) [node name="Sprite" type="Sprite" parent="."] position = Vector2( 4, 4 ) texture = ExtResource( 2 ) -region_enabled = true +hframes = 4 region_rect = Rect2( 0, 0, 8, 8 ) [node name="StaticBody2D" type="StaticBody2D" parent="."] +collision_layer = 4 [node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +visible = false position = Vector2( 4, 4 ) shape = SubResource( 1 ) +one_way_collision = true + +[node name="DetectPlayer" type="Area2D" parent="."] +collision_layer = 0 +collision_mask = 128 +monitoring = false +monitorable = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="DetectPlayer"] +position = Vector2( 4, 4 ) +shape = SubResource( 4 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 5 ) anims/idle = SubResource( 2 ) anims/turn = SubResource( 3 ) @@ -124,6 +145,8 @@ anims/turn = SubResource( 3 ) [node name="DelayTimer" type="Timer" parent="."] one_shot = true +[connection signal="body_entered" from="DetectPlayer" to="." method="_on_DetectPlayer_body_entered"] +[connection signal="body_exited" from="DetectPlayer" to="." method="_on_DetectPlayer_body_exited"] [connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] [connection signal="timeout" from="FlipTimer" to="." method="_on_FlipTimer_timeout"] [connection signal="timeout" from="DelayTimer" to="." method="_on_DelayTimer_timeout"] diff --git a/objects/environment/turret/turret.gd b/objects/environment/turret/turret.gd index 61998d8..276a963 100644 --- a/objects/environment/turret/turret.gd +++ b/objects/environment/turret/turret.gd @@ -35,4 +35,4 @@ func _physics_process(delta): bullet.direction = bullet.direction.rotated(rand_range(-bullet_spread, bullet_spread)) bullet.speed = bullet_speed get_parent().call_deferred("add_child", bullet) - Game.play_sound(Game.a_arrow, Game.ac_climb) + Audio.play_sound(Audio.a_arrow, Audio.ac_climb) diff --git a/objects/environment/turret/turret_bullet.gd b/objects/environment/turret/turret_bullet.gd index daa3298..ef8631c 100644 --- a/objects/environment/turret/turret_bullet.gd +++ b/objects/environment/turret/turret_bullet.gd @@ -9,7 +9,7 @@ func _physics_process(delta): func _on_Hitbox_area_entered(area): - if area.is_in_group("player"): + if area.is_in_group("player_hitbox"): area.get_parent().die() diff --git a/objects/environment/zball/zball.gd b/objects/environment/zball/zball.gd new file mode 100644 index 0000000..7c9a173 --- /dev/null +++ b/objects/environment/zball/zball.gd @@ -0,0 +1,26 @@ +extends RigidBody2D + + +export var max_glow: float = 5.0 + + +onready var glow: Light2D = $Glow + + +func _on_Hurtbox_area_entered(area: Area2D) -> void: + if area.is_in_group("enemy_hitbox"): + var target = area.get_parent() + target.die() + + +func _physics_process(delta: float) -> void: + var speed: float = inverse_lerp(0.0, 250.0, linear_velocity.length()) + glow.energy = lerp(0.0, max_glow, speed) + + +func _on_body_entered(body: Node) -> void: + pass +# if glow.energy < max_glow: +# pass +# glow.energy += glow_increase +# smoke_particles.amount += 1 diff --git a/objects/environment/zball/zball.tscn b/objects/environment/zball/zball.tscn new file mode 100644 index 0000000..c531390 --- /dev/null +++ b/objects/environment/zball/zball.tscn @@ -0,0 +1,38 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://objects/environment/zball/zball.gd" type="Script" id=1] +[ext_resource path="res://graphics/secret/zball.png" type="Texture" id=2] +[ext_resource path="res://graphics/secret/zball_glow.png" type="Texture" id=3] + +[sub_resource type="PhysicsMaterial" id=2] +bounce = 0.75 + +[sub_resource type="CircleShape2D" id=1] +radius = 4.0 + +[node name="ZBall" type="RigidBody2D"] +mass = 5.0 +physics_material_override = SubResource( 2 ) +continuous_cd = 2 +script = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[node name="Sprite" type="Sprite" parent="."] +light_mask = 9 +texture = ExtResource( 2 ) + +[node name="Glow" type="Light2D" parent="."] +texture = ExtResource( 3 ) +energy = 5.0 +range_item_cull_mask = 8 + +[node name="Hurtbox" type="Area2D" parent="."] +collision_mask = 5 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox"] +shape = SubResource( 1 ) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] +[connection signal="area_entered" from="Hurtbox" to="." method="_on_Hurtbox_area_entered"] diff --git a/objects/hud/3d_text.gd b/objects/hud/3d_text.gd new file mode 100644 index 0000000..ffdbd9e --- /dev/null +++ b/objects/hud/3d_text.gd @@ -0,0 +1,35 @@ +tool +extends ViewportContainer + + +export var text: String = "" setget _set_text +export var text_material: Material = null setget _set_material + + +onready var text_mesh = $"%TextMesh" +onready var animation_player = $"%AnimationPlayer" +export var anim = "RESET" + +func _ready() -> void: + animation_player.play(anim) + + +func _set_text(value: String) -> void: + text = value + if not is_instance_valid(text_mesh): + yield(self, "ready") + text_mesh.mesh.text = text + + +func _set_material(value: Material) -> void: + text_material = value + if not is_instance_valid(text_mesh): + yield(self, "ready") + text_mesh.mesh.material = text_material + +func final_score(): + _set_text("%05d" % Game.final_score) + Audio.play_sound(Audio.a_final_score,Audio.ac_collectible) + +func play_confirm_sound(): + pass # Replace with function body. diff --git a/objects/hud/3d_text.tscn b/objects/hud/3d_text.tscn new file mode 100644 index 0000000..da91231 --- /dev/null +++ b/objects/hud/3d_text.tscn @@ -0,0 +1,692 @@ +[gd_scene load_steps=23 format=2] + +[ext_resource path="res://ui/PressStart2P-Regular.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://objects/hud/3d_text.gd" type="Script" id=2] +[ext_resource path="res://ui/Kozuka Mincho Std H.otf" type="DynamicFontData" id=3] +[ext_resource path="res://ui/Boba Date.otf" type="DynamicFontData" id=4] +[ext_resource path="res://ui/HooskaiChamferedSquare.ttf" type="DynamicFontData" id=5] + +[sub_resource type="DynamicFont" id=19] +font_data = ExtResource( 1 ) + +[sub_resource type="TextMesh" id=2] +resource_local_to_scene = true +text = "TEXT" +font = SubResource( 19 ) +pixel_size = 0.05 +depth = 0.1 + +[sub_resource type="Environment" id=4] +background_mode = 1 +ambient_light_color = Color( 1, 1, 1, 1 ) +ambient_light_energy = 0.5 + +[sub_resource type="Animation" id=5] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 1, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 1.1, 1.5, 2 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("TextMesh:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text_material") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ null ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("..:text") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "TEXT" ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("TextMesh:mesh:font:font_data") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ ExtResource( 1 ) ] +} + +[sub_resource type="Animation" id=6] +resource_name = "Zoom Entrance" +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:translation") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 1, -100 ), Vector3( 0, 1, 0 ) ] +} + +[sub_resource type="SpatialMaterial" id=16] +albedo_color = Color( 0.105882, 0.34902, 0.509804, 1 ) +metallic = 0.46 + +[sub_resource type="Animation" id=17] +resource_name = "bug world" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:rotation_degrees") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 0, 360, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0.8, 0.8, 0.8 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("..:text_material") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 16 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "WELC0ME T0 BUG W0RLD" ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("TextMesh:mesh:font:font_data") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 4 ) ] +} + +[sub_resource type="SpatialMaterial" id=11] +albedo_color = Color( 0.309804, 0.690196, 0.380392, 1 ) +metallic = 0.35 +metallic_specular = 0.11 + +[sub_resource type="Animation" id=20] +resource_name = "final score" +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:rotation_degrees") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 180, 0, 216 ), Vector3( 360, 0, 360 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("..:text_material") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 11 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "00000" ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("TextMesh:mesh:font:font_data") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("TextMesh:translation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( -8, 1.8, 0 ), Vector3( 0, 0, 0 ) ] +} +tracks/6/type = "method" +tracks/6/path = NodePath("..") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "final_score" +} ] +} + +[sub_resource type="SpatialMaterial" id=9] +albedo_color = Color( 0.901961, 0.133333, 0.133333, 1 ) +metallic = 0.35 + +[sub_resource type="Animation" id=18] +resource_name = "fucker" +length = 2.0 +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 1.4, 1.825 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, -3, 0 ), Vector3( 0, 1, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 1.4, 1.825 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("TextMesh:rotation_degrees") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 1.4, 1.825 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 180, 0 ), Vector3( 0, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text_material") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 1.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 9 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("..:text") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 1.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "FUCKER" ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("TextMesh:mesh:font:font_data") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 1.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 1 ) ] +} + +[sub_resource type="Animation" id=10] +resource_name = "game over" +length = 2.0 +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, -3, 0 ), Vector3( 0, 1.8, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("TextMesh:rotation_degrees") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 180, 0 ), Vector3( 0, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text_material") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 9 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("..:text") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "GAME OVER" ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("TextMesh:mesh:font:font_data") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 1 ) ] +} + +[sub_resource type="Animation" id=7] +resource_name = "level complete" +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:rotation_degrees") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3, 0.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 180, 0, 216 ), Vector3( 360, 0, 360 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.8, 0.9, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 1, 1, 1 ), Vector3( 1.1, 1.1, 1.1 ), Vector3( 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("..:text_material") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 11 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "YOU WIN!" ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("TextMesh:mesh:font:font_data") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 1 ) ] +} + +[sub_resource type="SpatialMaterial" id=12] +albedo_color = Color( 0.439216, 0.780392, 0.658824, 1 ) + +[sub_resource type="Animation" id=13] +resource_name = "prey slaughtered" +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 1, 0 ), Vector3( 0, 1, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.3, 0.35, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 1, 1, 1 ), Vector3( 1.1, 1.1, 1.1 ), Vector3( 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("TextMesh:rotation_degrees") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 0, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text_material") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 12 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("TextMesh:mesh:font:font_data") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 3 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("..:text") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "PREY SLAUGHTERED" ] +} + +[sub_resource type="SpatialMaterial" id=14] +albedo_color = Color( 0.901961, 0.619608, 0.133333, 1 ) + +[sub_resource type="Animation" id=15] +resource_name = "victory" +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, -3, 0 ), Vector3( 0, 1, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.9, 0.95, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 1, 1, 1 ), Vector3( 1.1, 1.1, 1.1 ), Vector3( 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("TextMesh:rotation_degrees") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 180, 0 ), Vector3( 0, 0, 720 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text_material") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 14 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("..:text") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "VICTORY!" ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("TextMesh:mesh:font:font_data") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 1 ) ] +} + +[node name="3DText" type="ViewportContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 2 ) +text = "TEXT" + +[node name="Viewport" type="Viewport" parent="."] +size = Vector2( 256, 192 ) +transparent_bg = true +handle_input_locally = false +usage = 3 +render_target_update_mode = 3 +gui_disable_input = true + +[node name="TextMesh" type="MeshInstance" parent="Viewport"] +unique_name_in_owner = true +transform = Transform( 1.1, 0, 0, 0, 1.5, 0, 0, 0, 2, 0, 1, 0 ) +mesh = SubResource( 2 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="Viewport"] +transform = Transform( 0.893849, 0.317044, -0.317044, 0, 0.707107, 0.707107, 0.448368, -0.632047, 0.632047, 0, 1, 0 ) +light_specular = 16.0 + +[node name="Camera" type="Camera" parent="Viewport"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5 ) +environment = SubResource( 4 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Viewport"] +unique_name_in_owner = true +anims/RESET = SubResource( 5 ) +"anims/Zoom Entrance" = SubResource( 6 ) +"anims/bug world" = SubResource( 17 ) +"anims/final score" = SubResource( 20 ) +anims/fucker = SubResource( 18 ) +"anims/game over" = SubResource( 10 ) +"anims/level complete" = SubResource( 7 ) +"anims/prey slaughtered" = SubResource( 13 ) +anims/victory = SubResource( 15 ) diff --git a/objects/hud/blocktext.tscn b/objects/hud/blocktext.tscn index 4efea9b..56ffa1b 100644 --- a/objects/hud/blocktext.tscn +++ b/objects/hud/blocktext.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=6 format=2] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] [ext_resource path="res://objects/hud/blocktext.gd" type="Script" id=2] [ext_resource path="res://graphics/hud/block_text.png" type="Texture" id=3] diff --git a/objects/hud/gamepad_buttons.atlastex b/objects/hud/gamepad_buttons.atlastex new file mode 100644 index 0000000..d9d5e07 Binary files /dev/null and b/objects/hud/gamepad_buttons.atlastex differ diff --git a/objects/hud/hud.gd b/objects/hud/hud.gd index 6dc1b2b..c1a7f77 100644 --- a/objects/hud/hud.gd +++ b/objects/hud/hud.gd @@ -1,4 +1,4 @@ -extends Control +extends CanvasLayer onready var gold_counter = $GoldCounter onready var shard_counter = $ShardCounter @@ -12,42 +12,84 @@ onready var arrow_counter = $ArrowCounter onready var lives_counter = $LivesCounter onready var high_counter = $HighCounter onready var time_counter = $TimeCounter +onready var oxygen = $Oxygen +onready var oxygen_meter = $Oxygen/OxygenMeter +export var song_name = "♫Music" export (Color) var bonus_color func _ready(): - Game.time = 0 + # load arrow palette + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + $Arrow.material.set_shader_param("palette", palette) + #Change graphics depending on if lives are on + if Game.use_lives: + $LivesHead.visible = true + else: + $DeathsHead.visible = true + #Change text to song name + var music = $Music + music.text = song_name + yield(get_tree(), "idle_frame") + var tween = create_tween() + tween.tween_property(music, "rect_position:x", 254.0 - music.rect_size.x, 1.0) + tween.tween_interval(3.0) + tween.tween_property(music, "rect_position:x", 256.0, 1.0) + #Fixes frame 1 2 deaths counter + if Game.use_lives == false: + lives_counter.text = str(Game.deaths) + #Show oxygen meter when underwater +# var player = get_tree().get_nodes_in_group("player").pop_back() +# if player.underwater == true: oxygen.visible = true + +func shard_popup(shard_number): + #Change text to song name + var shard_title = $ShardTitle + var level = LevelData.levels[Game.current_level] + shard_title.text = "§" + str(level.shard_titles[shard_number]) + yield(get_tree(), "idle_frame") + var tween = create_tween() + tween.tween_property(shard_title, "rect_position:x", 254.0 - shard_title.rect_size.x, 1.0) + tween.tween_interval(3.0) + tween.tween_property(shard_title, "rect_position:x", 256.0, 1.0) func _physics_process(delta): #Gold Counter - gold_counter.text = "%02d" % Game.golds + gold_counter.text = "%02d" % Game.keys #Shard Counter shard_counter.text = str(Game.shards) #Star Counter - red_star.visible = Game.stars[0] - yellow_star.visible = Game.stars[1] - green_star.visible = Game.stars[2] - blue_star.visible = Game.stars[3] - magenta_star.visible = Game.stars[4] + red_star.visible = Game.stars_collected[0] + yellow_star.visible = Game.stars_collected[1] + green_star.visible = Game.stars_collected[2] + blue_star.visible = Game.stars_collected[3] + magenta_star.visible = Game.stars_collected[4] #Score Counter score_counter.text = "%05d" % Game.score #Arrow Counter arrow_counter.text = str(Game.arrows) ##TOUCH UP LATER #Lives counter - lives_counter.text = str(Game.lives) + if Game.use_lives: + lives_counter.text = str(Game.lives) + else: + if Game.marathon_mode: + lives_counter.text = str(Game.marathon_deaths) + else: + lives_counter.text = str(Game.deaths) #Life bonus color - if Game.lives == 2: + if Game.deaths <= 0: lives_counter.modulate = bonus_color else: lives_counter.modulate = Color.white - #High counter - high_counter.text = str("HIGH:") + str("%06d" % Game.high_score) ##Timer - Game.time += delta - time_counter.text = Game.timeify(Game.time) + time_counter.text = Game.format_time(Game.time) #Time bonus counter if (Game.has_collection_bonus() && Game.time <= Game.get_map().target_time_100) or (!Game.has_collection_bonus() && Game.time <= Game.get_map().target_time_any): time_counter.modulate = bonus_color else: time_counter.modulate = Color.white +# #Oxygen meter +# var player = get_tree().get_nodes_in_group("player").pop_back() +# oxygen_meter.scale.x = player.oxygen_timer.time_left + #if oxygen_meter.scale.x > 15: oxygen_meter.scale.x = 15 diff --git a/objects/hud/hud.tscn b/objects/hud/hud.tscn index 302d0a6..20b2064 100644 --- a/objects/hud/hud.tscn +++ b/objects/hud/hud.tscn @@ -1,126 +1,215 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=22 format=2] [ext_resource path="res://graphics/hud/stars_hud.png" type="Texture" id=1] +[ext_resource path="res://graphics/hud/lives_head.png" type="Texture" id=2] [ext_resource path="res://graphics/hud/hud.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/deaths_head.png" type="Texture" id=4] +[ext_resource path="res://graphics/hud/gold_counter.png" type="Texture" id=5] [ext_resource path="res://objects/hud/hud.gd" type="Script" id=6] -[ext_resource path="res://scripts/theme.tres" type="Theme" id=10] +[ext_resource path="res://graphics/hud/key_counter.png" type="Texture" id=7] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=8] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=9] +[ext_resource path="res://ui/theme.tres" type="Theme" id=10] +[ext_resource path="res://graphics/hud/oxygen.png" type="Texture" id=11] +[ext_resource path="res://graphics/hud/oxygen_meter.png" type="Texture" id=12] +[ext_resource path="res://shaders/recolor.tres" type="Shader" id=13] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=14] +[ext_resource path="res://graphics/hud/hud_arrow.png" type="Texture" id=15] +[ext_resource path="res://scripts/sg_palette.gd" type="Script" id=16] + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 13 ) +shader_param/palette = ExtResource( 14 ) [sub_resource type="ShaderMaterial" id=1] [sub_resource type="ShaderMaterial" id=2] -[node name="CanvasLayer" type="CanvasLayer"] -layer = 100 +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 13 ) -[node name="HUD" type="Control" parent="."] -margin_top = 1.0 -margin_bottom = 1.0 +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 9 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true + +[node name="HUD" type="CanvasLayer" groups=["hud"]] +layer = 100 script = ExtResource( 6 ) bonus_color = Color( 0.478431, 1, 0.47451, 1 ) -[node name="Back" type="Sprite" parent="HUD"] -position = Vector2( 128, 95 ) +[node name="Back" type="Sprite" parent="."] +position = Vector2( 128, 96 ) texture = ExtResource( 3 ) -[node name="GoldCounter" type="Label" parent="HUD"] +[node name="GoldCounter" type="Label" parent="."] margin_left = 12.0 -margin_top = -2.0 -margin_right = 52.0 -margin_bottom = 18.0 +margin_top = 1.0 +margin_right = 26.0 +margin_bottom = 11.0 theme = ExtResource( 10 ) -text = "00 -" +text = "00" -[node name="ShardCounter" type="Label" parent="HUD"] +[node name="ShardCounter" type="Label" parent="."] margin_left = 41.0 -margin_top = -2.0 -margin_right = 81.0 -margin_bottom = 18.0 +margin_top = 1.0 +margin_right = 48.0 +margin_bottom = 11.0 theme = ExtResource( 10 ) text = "0" -[node name="RedStar" type="Sprite" parent="HUD"] +[node name="Gold" type="Sprite" parent="."] +visible = false +position = Vector2( 8, 6 ) +texture = ExtResource( 5 ) + +[node name="Key" type="Sprite" parent="."] +position = Vector2( 9, 6 ) +texture = ExtResource( 7 ) + +[node name="Arrow" type="Sprite" parent="."] +material = SubResource( 4 ) +position = Vector2( 58, 6 ) +texture = ExtResource( 15 ) + +[node name="ArrowShade" type="Sprite" parent="Arrow"] +modulate = Color( 0.57, 0.57, 0.57, 1 ) +use_parent_material = true +position = Vector2( 0, 4 ) +texture = ExtResource( 15 ) +region_enabled = true +region_rect = Rect2( 0, 6, 5, 1 ) + +[node name="RedStar" type="Sprite" parent="."] visible = false material = SubResource( 1 ) -position = Vector2( 83, 5 ) +position = Vector2( 83, 6 ) texture = ExtResource( 1 ) region_enabled = true region_rect = Rect2( 0, 0, 8, 8 ) -[node name="YellowStar" type="Sprite" parent="HUD"] +[node name="YellowStar" type="Sprite" parent="."] visible = false material = SubResource( 2 ) -position = Vector2( 93, 5 ) +position = Vector2( 93, 6 ) texture = ExtResource( 1 ) region_enabled = true region_rect = Rect2( 8, 0, 8, 8 ) -[node name="GreenStar" type="Sprite" parent="HUD"] +[node name="GreenStar" type="Sprite" parent="."] visible = false -position = Vector2( 103, 5 ) +position = Vector2( 103, 6 ) texture = ExtResource( 1 ) region_enabled = true region_rect = Rect2( 16, 0, 8, 8 ) -[node name="BlueStar" type="Sprite" parent="HUD"] +[node name="BlueStar" type="Sprite" parent="."] visible = false -position = Vector2( 113, 5 ) +position = Vector2( 113, 6 ) texture = ExtResource( 1 ) region_enabled = true region_rect = Rect2( 24, 0, 8, 8 ) -[node name="MagentaStar" type="Sprite" parent="HUD"] +[node name="MagentaStar" type="Sprite" parent="."] visible = false -position = Vector2( 123, 5 ) +position = Vector2( 123, 6 ) texture = ExtResource( 1 ) region_enabled = true region_rect = Rect2( 32, 0, 8, 8 ) -[node name="ScoreText" type="Label" parent="HUD"] +[node name="LivesHead" type="Sprite" parent="."] +visible = false +material = SubResource( 5 ) +position = Vector2( 234, 6 ) +texture = ExtResource( 2 ) +script = ExtResource( 16 ) + +[node name="DeathsHead" type="Sprite" parent="."] +visible = false +position = Vector2( 236, 6 ) +texture = ExtResource( 4 ) + +[node name="ScoreText" type="Label" parent="."] margin_left = 137.0 -margin_top = -2.0 +margin_top = 1.0 margin_right = 221.0 -margin_bottom = 18.0 +margin_bottom = 11.0 theme = ExtResource( 10 ) text = "SCORE:" -[node name="ScoreCounter" type="Label" parent="HUD"] +[node name="ScoreCounter" type="Label" parent="."] margin_left = 179.0 -margin_top = -2.0 -margin_right = 263.0 -margin_bottom = 18.0 +margin_top = 1.0 +margin_right = 214.0 +margin_bottom = 11.0 theme = ExtResource( 10 ) text = "00000" -[node name="HighCounter" type="Label" parent="HUD"] +[node name="HighCounter" type="Label" parent="."] visible = false margin_left = 178.0 -margin_top = 178.0 +margin_top = 179.0 margin_right = 262.0 -margin_bottom = 198.0 +margin_bottom = 199.0 theme = ExtResource( 10 ) text = "High:000000" -[node name="LivesCounter" type="Label" parent="HUD"] +[node name="LivesCounter" type="Label" parent="."] +modulate = Color( 0.478431, 1, 0.47451, 1 ) margin_left = 240.0 -margin_top = -2.0 -margin_right = 324.0 -margin_bottom = 18.0 +margin_top = 1.0 +margin_right = 247.0 +margin_bottom = 11.0 theme = ExtResource( 10 ) text = "2" -[node name="ArrowCounter" type="Label" parent="HUD"] +[node name="ArrowCounter" type="Label" parent="."] margin_left = 61.0 -margin_top = -2.0 -margin_right = 145.0 -margin_bottom = 18.0 +margin_top = 1.0 +margin_right = 68.0 +margin_bottom = 11.0 theme = ExtResource( 10 ) text = "0" -[node name="TimeCounter" type="Label" parent="HUD"] +[node name="TimeCounter" type="Label" parent="."] +modulate = Color( 0.478431, 1, 0.47451, 1 ) margin_left = 1.0 -margin_top = 178.0 -margin_right = 57.0 -margin_bottom = 198.0 +margin_top = 181.0 +margin_right = 50.0 +margin_bottom = 191.0 theme = ExtResource( 10 ) -text = "0:00:00" +text = "00:00:00" + +[node name="Music" type="Label" parent="."] +material = ExtResource( 8 ) +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = -10.0 +margin_right = 42.0 +theme = ExtResource( 10 ) +text = "♫Music" +align = 2 + +[node name="ShardTitle" type="Label" parent="."] +material = SubResource( 3 ) +margin_left = 256.0 +margin_top = 182.0 +margin_right = 333.0 +margin_bottom = 192.0 +theme = ExtResource( 10 ) +text = "§time bonus" +align = 2 + +[node name="Oxygen" type="Sprite" parent="."] +visible = false +position = Vector2( 16, 18 ) +texture = ExtResource( 11 ) + +[node name="OxygenMeter" type="Sprite" parent="Oxygen"] +position = Vector2( -2, -1 ) +rotation = 3.14159 +scale = Vector2( 15, 1 ) +texture = ExtResource( 12 ) +flip_v = true diff --git a/objects/hud/hud_boss.gd b/objects/hud/hud_boss.gd new file mode 100644 index 0000000..6e145e8 --- /dev/null +++ b/objects/hud/hud_boss.gd @@ -0,0 +1,85 @@ +extends CanvasLayer + +onready var gold_counter = $GoldCounter +onready var shard_counter = $ShardCounter +onready var red_star = $RedStar +onready var yellow_star = $YellowStar +onready var green_star = $GreenStar +onready var blue_star = $BlueStar +onready var magenta_star = $MagentaStar +onready var score_counter = $ScoreCounter +onready var arrow_counter = $ArrowCounter +onready var lives_counter = $LivesCounter +onready var high_counter = $HighCounter +onready var time_counter = $TimeCounter +onready var oxygen = $Oxygen +onready var oxygen_meter = $Oxygen/OxygenMeter + +export var song_name = "♫Music" +export (Color) var bonus_color + +func _ready(): + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + $Arrow.material.set_shader_param("palette", palette) + #Change graphics depending on if lives are on + if Game.use_lives: + $LivesHead.visible = true + else: + $DeathsHead.visible = true + #Change text to song name + var music = $Music + music.text = song_name + yield(get_tree(), "idle_frame") + var tween = create_tween() + tween.tween_property(music, "rect_position:x", 254.0 - music.rect_size.x, 1.0) + tween.tween_interval(3.0) + tween.tween_property(music, "rect_position:x", 256.0, 1.0) + #Fixes frame 1 2 deaths counter + if Game.use_lives == false: + lives_counter.text = str(Game.deaths) + #Show oxygen meter when underwater +# var player = get_tree().get_nodes_in_group("player").pop_back() +# if player.underwater == true: oxygen.visible = true + +func shard_popup(shard_number): + #Change text to song name + var shard_title = $ShardTitle + var level = LevelData.levels[Game.current_level] + shard_title.text = "§" + str(level.shard_titles[shard_number]) + yield(get_tree(), "idle_frame") + var tween = create_tween() + tween.tween_property(shard_title, "rect_position:x", 254.0 - shard_title.rect_size.x, 1.0) + tween.tween_interval(3.0) + tween.tween_property(shard_title, "rect_position:x", 256.0, 1.0) + +func _physics_process(delta): + #Star Counter + red_star.visible = Game.stars_collected[0] + yellow_star.visible = Game.stars_collected[1] + green_star.visible = Game.stars_collected[2] + blue_star.visible = Game.stars_collected[3] + magenta_star.visible = Game.stars_collected[4] + #Arrow Counter + arrow_counter.text = str(Game.arrows) + ##TOUCH UP LATER + #Lives counter + if Game.use_lives: + lives_counter.text = str(Game.lives) + else: + lives_counter.text = str(Game.deaths) + #Life bonus color + if Game.lives == 2: + lives_counter.modulate = bonus_color + else: + lives_counter.modulate = Color.white + ##Timer + time_counter.text = Game.format_time(Game.time) + #Time bonus counter + if (Game.has_collection_bonus() && Game.time <= Game.get_map().target_time_100) or (!Game.has_collection_bonus() && Game.time <= Game.get_map().target_time_any): + time_counter.modulate = bonus_color + else: + time_counter.modulate = Color.white +# #Oxygen meter +# var player = get_tree().get_nodes_in_group("player").pop_back() +# oxygen_meter.scale.x = player.oxygen_timer.time_left + #if oxygen_meter.scale.x > 15: oxygen_meter.scale.x = 15 diff --git a/objects/hud/hud_boss.tscn b/objects/hud/hud_boss.tscn new file mode 100644 index 0000000..7dabda4 --- /dev/null +++ b/objects/hud/hud_boss.tscn @@ -0,0 +1,218 @@ +[gd_scene load_steps=22 format=2] + +[ext_resource path="res://graphics/hud/stars_hud.png" type="Texture" id=1] +[ext_resource path="res://graphics/hud/lives_head.png" type="Texture" id=2] +[ext_resource path="res://graphics/hud/hud.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/deaths_head.png" type="Texture" id=4] +[ext_resource path="res://graphics/hud/gold_counter.png" type="Texture" id=5] +[ext_resource path="res://objects/hud/hud_boss.gd" type="Script" id=6] +[ext_resource path="res://graphics/hud/key_counter.png" type="Texture" id=7] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=8] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=9] +[ext_resource path="res://ui/theme.tres" type="Theme" id=10] +[ext_resource path="res://graphics/hud/oxygen.png" type="Texture" id=11] +[ext_resource path="res://graphics/hud/oxygen_meter.png" type="Texture" id=12] +[ext_resource path="res://shaders/recolor.tres" type="Shader" id=13] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=14] +[ext_resource path="res://graphics/hud/hud_arrow.png" type="Texture" id=15] +[ext_resource path="res://scripts/sg_palette.gd" type="Script" id=16] + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 13 ) +shader_param/palette = ExtResource( 14 ) + +[sub_resource type="ShaderMaterial" id=1] + +[sub_resource type="ShaderMaterial" id=2] + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 13 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 9 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true + +[node name="BossHUD" type="CanvasLayer" groups=["hud"]] +layer = 100 +script = ExtResource( 6 ) +bonus_color = Color( 0.478431, 1, 0.47451, 1 ) + +[node name="Back" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +texture = ExtResource( 3 ) + +[node name="GoldCounter" type="Label" parent="."] +modulate = Color( 0.690196, 0.690196, 0.690196, 1 ) +margin_left = 12.0 +margin_top = 1.0 +margin_right = 26.0 +margin_bottom = 11.0 +theme = ExtResource( 10 ) +text = "--" + +[node name="ShardCounter" type="Label" parent="."] +modulate = Color( 0.690196, 0.690196, 0.690196, 1 ) +margin_left = 41.0 +margin_top = 1.0 +margin_right = 48.0 +margin_bottom = 11.0 +theme = ExtResource( 10 ) +text = "-" + +[node name="Gold" type="Sprite" parent="."] +visible = false +position = Vector2( 8, 6 ) +texture = ExtResource( 5 ) + +[node name="Key" type="Sprite" parent="."] +position = Vector2( 9, 6 ) +texture = ExtResource( 7 ) + +[node name="Arrow" type="Sprite" parent="."] +material = SubResource( 4 ) +position = Vector2( 58, 6 ) +texture = ExtResource( 15 ) + +[node name="ArrowShade" type="Sprite" parent="Arrow"] +modulate = Color( 0.57, 0.57, 0.57, 1 ) +use_parent_material = true +position = Vector2( 0, 4 ) +texture = ExtResource( 15 ) +region_enabled = true +region_rect = Rect2( 0, 6, 5, 1 ) + +[node name="RedStar" type="Sprite" parent="."] +visible = false +material = SubResource( 1 ) +position = Vector2( 83, 6 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 0, 0, 8, 8 ) + +[node name="YellowStar" type="Sprite" parent="."] +visible = false +material = SubResource( 2 ) +position = Vector2( 93, 6 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 8, 0, 8, 8 ) + +[node name="GreenStar" type="Sprite" parent="."] +visible = false +position = Vector2( 103, 6 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 16, 0, 8, 8 ) + +[node name="BlueStar" type="Sprite" parent="."] +visible = false +position = Vector2( 113, 6 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 24, 0, 8, 8 ) + +[node name="MagentaStar" type="Sprite" parent="."] +visible = false +position = Vector2( 123, 6 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 32, 0, 8, 8 ) + +[node name="LivesHead" type="Sprite" parent="."] +visible = false +material = SubResource( 5 ) +position = Vector2( 234, 6 ) +texture = ExtResource( 2 ) +script = ExtResource( 16 ) + +[node name="DeathsHead" type="Sprite" parent="."] +visible = false +position = Vector2( 236, 6 ) +texture = ExtResource( 4 ) + +[node name="ScoreText" type="Label" parent="."] +margin_left = 137.0 +margin_top = 1.0 +margin_right = 221.0 +margin_bottom = 11.0 +theme = ExtResource( 10 ) +text = "SCORE:" + +[node name="ScoreCounter" type="Label" parent="."] +modulate = Color( 0.690196, 0.690196, 0.690196, 1 ) +margin_left = 179.0 +margin_top = 1.0 +margin_right = 214.0 +margin_bottom = 11.0 +theme = ExtResource( 10 ) +text = "-----" + +[node name="HighCounter" type="Label" parent="."] +visible = false +margin_left = 178.0 +margin_top = 179.0 +margin_right = 262.0 +margin_bottom = 199.0 +theme = ExtResource( 10 ) +text = "High:000000" + +[node name="LivesCounter" type="Label" parent="."] +modulate = Color( 0.478431, 1, 0.47451, 1 ) +margin_left = 240.0 +margin_top = 1.0 +margin_right = 247.0 +margin_bottom = 11.0 +theme = ExtResource( 10 ) +text = "2" + +[node name="ArrowCounter" type="Label" parent="."] +margin_left = 61.0 +margin_top = 1.0 +margin_right = 68.0 +margin_bottom = 11.0 +theme = ExtResource( 10 ) +text = "0" + +[node name="TimeCounter" type="Label" parent="."] +modulate = Color( 0.478431, 1, 0.47451, 1 ) +margin_left = 1.0 +margin_top = 181.0 +margin_right = 50.0 +margin_bottom = 191.0 +theme = ExtResource( 10 ) +text = "00:00:00" + +[node name="Music" type="Label" parent="."] +material = ExtResource( 8 ) +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = -10.0 +margin_right = 42.0 +theme = ExtResource( 10 ) +text = "♫Music" +align = 2 + +[node name="ShardTitle" type="Label" parent="."] +material = SubResource( 3 ) +margin_left = 256.0 +margin_top = 182.0 +margin_right = 333.0 +margin_bottom = 192.0 +theme = ExtResource( 10 ) +text = "§time bonus" +align = 2 + +[node name="Oxygen" type="Sprite" parent="."] +visible = false +position = Vector2( 16, 18 ) +texture = ExtResource( 11 ) + +[node name="OxygenMeter" type="Sprite" parent="Oxygen"] +position = Vector2( -2, -1 ) +rotation = 3.14159 +scale = Vector2( 15, 1 ) +texture = ExtResource( 12 ) +flip_v = true diff --git a/objects/hud/labeled_slider.gd b/objects/hud/labeled_slider.gd new file mode 100644 index 0000000..af9b80b --- /dev/null +++ b/objects/hud/labeled_slider.gd @@ -0,0 +1,14 @@ +extends HSlider + + +export var label: NodePath + + +func _init() -> void: + connect("value_changed", self, "_on_value_changed") + + +func _on_value_changed(value: float) -> void: + var l = get_node(label) + if l is Label: + l.text = str(value) diff --git a/objects/hud/letter_block.gd b/objects/hud/letter_block.gd new file mode 100644 index 0000000..3f49e6e --- /dev/null +++ b/objects/hud/letter_block.gd @@ -0,0 +1,56 @@ +tool +extends "res://objects/enemy/enemy.gd" + +signal letter_chosen(letter) +signal backspace() + +enum Glyph { + A, B, C, D, E, F, G, H, + I, J, K, L, M, N, O, P, + Q, R, S, T, U, V, W, X, + Y, Z, _0, _1, _2, _3, _4, _5, + _6, _7, _8, _9, Backspace +} +const GLYPH_STRINGS = [ + "A", "B", "C", "D", "E", "F", "G", "H", + "I", "J", "K", "L", "M", "N", "O", "P", + "Q", "R", "S", "T", "U", "V", "W", "X", + "Y", "Z", "0", "1", "2", "3", "4", "5", + "6", "7", "8", "9", "" +] + +export (Glyph) var glyph: int = 0 setget _set_glyph + +onready var sprite: Sprite = $Sprite +onready var _seed: float = randf() * 250.0 + +func _set_glyph(value: int) -> void: + glyph = value + get_node("Sprite").frame = value + +func _ready() -> void: + if Engine.editor_hint: + return + # connect to node in "gets_letters" group so don't have to do the shit manually + for node in get_tree().get_nodes_in_group("gets_letters"): + if node.has_method("_on_letter_chosen"): + connect("letter_chosen", node, "_on_letter_chosen") + if node.has_method("_on_backspace"): + connect("backspace", node, "_on_backspace") + +func _process(delta: float) -> void: + if Engine.editor_hint: + return + sprite.position.x = 4.0 + sin(float(Time.get_ticks_msec()) / 250.0 + _seed) + sprite.position.y = 5.0 + sin(float(Time.get_ticks_msec()) / 125.0 + _seed) + +func die() -> void: + emit_signal("letter_chosen", GLYPH_STRINGS[glyph]) + if glyph == Glyph.Backspace: + emit_signal("backspace") + +func _on_Hitbox_area_entered(area): + emit_signal("letter_chosen", GLYPH_STRINGS[glyph]) + if glyph == Glyph.Backspace: + emit_signal("backspace") + ._on_Hitbox_area_entered(area) diff --git a/objects/hud/letter_block.tscn b/objects/hud/letter_block.tscn new file mode 100644 index 0000000..10f3495 --- /dev/null +++ b/objects/hud/letter_block.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/hud/letter_block.gd" type="Script" id=1] +[ext_resource path="res://graphics/hud/letter_blocks.png" type="Texture" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 3, 3.5 ) + +[node name="LetterBlock" type="Node2D" groups=["enemy"]] +script = ExtResource( 1 ) +blood = false + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 4, 5 ) +texture = ExtResource( 2 ) +hframes = 8 +vframes = 5 + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] +collision_layer = 0 +collision_mask = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 4, 4.5 ) +shape = SubResource( 1 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/hud/menu_sounds.gd b/objects/hud/menu_sounds.gd new file mode 100644 index 0000000..385f933 --- /dev/null +++ b/objects/hud/menu_sounds.gd @@ -0,0 +1,27 @@ +extends Node + +const SEMITONE := 1.05946 +const CHROMATIC := [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0] +const RUMBLE := [0.0, 0.0, 5.0, 7.0, 10.0, 0.0, 5.0, 7.0, 10.0, 7.0] + +var can_play: bool = false +var current_note: int = 0 +var notes_till_rumble: int = 48 + +onready var select_sound: AudioStreamPlayer = $"%SelectSound" + +func play_select_sound(): + if can_play: + var tune = CHROMATIC if notes_till_rumble > 0 else RUMBLE + if notes_till_rumble == 0: + current_note = 0 + Audio.ac_menu.pitch_scale = pow(SEMITONE, tune[current_note]) + Audio.play_sound(Audio.a_select,Audio.ac_menu) + current_note = posmod(current_note + 1, tune.size()) + notes_till_rumble -= 1 + else: + can_play = true + +func play_confirm_sound(): + Audio.ac_menu.pitch_scale = 1 + Audio.play_sound(Audio.a_confirm,Audio.ac_menu) diff --git a/objects/hud/menu_sounds.tscn b/objects/hud/menu_sounds.tscn new file mode 100644 index 0000000..6217b8c --- /dev/null +++ b/objects/hud/menu_sounds.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/hud/menu_sounds.gd" type="Script" id=1] +[ext_resource path="res://audio/sounds/confirm.ogg" type="AudioStream" id=2] +[ext_resource path="res://audio/sounds/select.ogg" type="AudioStream" id=3] + +[node name="MenuSounds" type="Node"] +script = ExtResource( 1 ) + +[node name="SelectSound" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true +stream = ExtResource( 3 ) +volume_db = -15.0 + +[node name="ConfirmSound" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true +stream = ExtResource( 2 ) +volume_db = -15.0 diff --git a/objects/hud/msx_off_level_indicator.gd b/objects/hud/msx_off_level_indicator.gd new file mode 100644 index 0000000..74dda07 --- /dev/null +++ b/objects/hud/msx_off_level_indicator.gd @@ -0,0 +1,3 @@ +extends Node2D + +onready var anims = $AnimationPlayer diff --git a/objects/hud/msx_off_level_indicator.tscn b/objects/hud/msx_off_level_indicator.tscn new file mode 100644 index 0000000..2fc9b4e --- /dev/null +++ b/objects/hud/msx_off_level_indicator.tscn @@ -0,0 +1,212 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://graphics/hud/off_level_indicator.png" type="Texture" id=1] +[ext_resource path="res://graphics/hud/msx_head.png" type="Texture" id=2] +[ext_resource path="res://objects/hud/msx_off_level_indicator.gd" type="Script" id=3] + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Head:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ArrowR:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ArrowL:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=3] +resource_name = "left" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Head:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ArrowL:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ArrowL:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -11, 0 ), Vector2( -13, 0 ), Vector2( -11, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ArrowR:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=1] +resource_name = "onscreen" +tracks/0/type = "value" +tracks/0/path = NodePath("Head:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ArrowR:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ArrowL:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=4] +resource_name = "right" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("ArrowR:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Head:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ArrowR:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 11, 1 ), Vector2( 13, 1 ), Vector2( 11, 1 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ArrowL:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[node name="MsxOffLevelIndicator" type="Node2D"] +script = ExtResource( 3 ) + +[node name="Head" type="Sprite" parent="."] +visible = false +texture = ExtResource( 2 ) + +[node name="ArrowR" type="Sprite" parent="."] +visible = false +position = Vector2( 11.336, 1 ) +rotation = 1.5708 +texture = ExtResource( 1 ) + +[node name="ArrowL" type="Sprite" parent="."] +visible = false +position = Vector2( -11.336, 0 ) +rotation = -1.5708 +texture = ExtResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 2 ) +anims/left = SubResource( 3 ) +anims/onscreen = SubResource( 1 ) +anims/right = SubResource( 4 ) diff --git a/objects/hud/off_level_indicator.tscn b/objects/hud/off_level_indicator.tscn new file mode 100644 index 0000000..ba3281e --- /dev/null +++ b/objects/hud/off_level_indicator.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=2] +[ext_resource path="res://graphics/hud/off_level_indicator.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/sg_head.png" type="Texture" id=4] +[ext_resource path="res://scripts/sg_palette.gd" type="Script" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 2 ) + +[sub_resource type="Animation" id=2] +resource_name = "wobble" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Arrow:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 5 ), Vector2( 1, 3 ), Vector2( 1, 5 ) ] +} + +[node name="OffLevelIndicator" type="Node2D"] +z_index = 4096 + +[node name="Head" type="Sprite" parent="."] +material = SubResource( 1 ) +position = Vector2( 0, 15 ) +texture = ExtResource( 4 ) +script = ExtResource( 5 ) + +[node name="Arrow" type="Sprite" parent="."] +position = Vector2( 1, 5 ) +texture = ExtResource( 3 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "wobble" +anims/wobble = SubResource( 2 ) diff --git a/objects/hud/options_screen.gd b/objects/hud/options_screen.gd new file mode 100644 index 0000000..c688f01 --- /dev/null +++ b/objects/hud/options_screen.gd @@ -0,0 +1,106 @@ +extends Control + +# emmitted when "back" is pressed +signal exit + +export (StyleBox) var tab_selected_style + +onready var tabs = $Tabs +onready var confirm_dialog = $ConfirmDialog + +# option controls # +# game +onready var rumble = $"%Rumble" +# video +onready var fullscreen = $"%Fullscreen" +onready var window_size = $"%WindowSize" +onready var scaling_mode = $"%ScalingMode" +onready var transition_speed = $"%TransitionSpeed" +# audio +onready var master_volume = $"%MasterSlider" +onready var music_volume = $"%MusicSlider" +onready var sound_volume = $"%SoundSlider" + +# flagged when options have been changed +var dirty = false + +func focus(): + load_options(Options) + dirty = false + visible = true + confirm_dialog.visible = false + grab_focus() + +func load_options(options): + # game + rumble.select(options.rumble) + # video + fullscreen.select(1 if options.fullscreen else 0) # index 1 is the "on" button +# window_size.select(options.window_size) + scaling_mode.select(options.scaling_mode) + transition_speed.select(options.transition_speed) + # audio + master_volume.value = options.master_volume + music_volume.value = options.music_volume + sound_volume.value = options.sound_volume + +func apply_options(): + # game + Options.rumble = rumble.get_selection() + # video + Options.fullscreen = fullscreen.get_selection() == 1 # true if 1, otherwise false +# Options.window_size = window_size.get_selection() + Options.scaling_mode = scaling_mode.get_selection() + Options.transition_speed = transition_speed.get_selection() + # audio + Options.master_volume = master_volume.value + Options.music_volume = music_volume.value + Options.sound_volume = sound_volume.value + + Options.save_options() + +func _gui_input(event): + if event.is_action_pressed("ui_left"): + tabs.current_tab = posmod(tabs.current_tab - 1, tabs.get_child_count()) + elif event.is_action_pressed("ui_right"): + tabs.current_tab = posmod(tabs.current_tab + 1, tabs.get_child_count()) + elif event.is_action_pressed("ui_down"): + var current_tab = tabs.get_current_tab_control() + current_tab.get_node(current_tab.focus_neighbour_bottom).grab_focus() + accept_event() + +func _unhandled_input(event): + if !visible: + return + if event.is_action_pressed("ui_accept"): + apply_options() + dirty = false + elif event.is_action_pressed("ui_cancel"): + if dirty: + confirm_dialog.visible = true + confirm_dialog.grab_focus() + else: + emit_signal("exit") + elif event.is_action_pressed("ui_reset"): + load_options(Options.defaults) + dirty = true + +# "_unused" is a dirty hack, +# but it means we can connect signals that provide parameters +func _mark_dirty(_unused = null, _unused2 = null): + dirty = true + +func _on_ConfirmDialog_gui_input(event): + if event.is_action_pressed("ui_accept"): + apply_options() + confirm_dialog.visible = false + emit_signal("exit") + elif event.is_action_pressed("ui_cancel"): + confirm_dialog.visible = false + emit_signal("exit") + +func _on_tabs_focus_entered(): + tabs.set("custom_styles/tab_fg", tab_selected_style) + +func _on_tabs_focus_exited(): + tabs.set("custom_styles/tab_fg", null) diff --git a/objects/hud/options_screen.tscn b/objects/hud/options_screen.tscn new file mode 100644 index 0000000..5993a79 --- /dev/null +++ b/objects/hud/options_screen.tscn @@ -0,0 +1,554 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://objects/hud/options_screen.gd" type="Script" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://objects/hud/selection_group.gd" type="Script" id=4] + +[sub_resource type="StyleBoxFlat" id=6] +content_margin_left = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 0.0 +bg_color = Color( 0.6, 0.6, 0.6, 0 ) +border_width_bottom = 1 +border_color = Color( 1, 1, 1, 1 ) +expand_margin_bottom = 5.0 +anti_aliasing = false + +[sub_resource type="ButtonGroup" id=1] + +[sub_resource type="ButtonGroup" id=7] + +[sub_resource type="ButtonGroup" id=3] + +[sub_resource type="ButtonGroup" id=4] + +[sub_resource type="ButtonGroup" id=5] + +[node name="OptionsScreen" type="Control"] +focus_mode = 2 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) +tab_selected_style = SubResource( 6 ) + +[node name="Panel" type="Panel" parent="."] +margin_left = 8.0 +margin_top = 16.0 +margin_right = 248.0 +margin_bottom = 176.0 + +[node name="OptionsTitle" type="Label" parent="."] +margin_left = 16.0 +margin_top = 24.0 +margin_right = 240.0 +margin_bottom = 34.0 +theme = ExtResource( 2 ) +text = "-OPTIONS-" +align = 1 + +[node name="Tabs" type="TabContainer" parent="."] +margin_left = 16.0 +margin_top = 40.0 +margin_right = 240.0 +margin_bottom = 152.0 +theme = ExtResource( 2 ) + +[node name="Game" type="VBoxContainer" parent="Tabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 10.0 +focus_neighbour_bottom = NodePath("Rumble") + +[node name="Spacer" type="Control" parent="Tabs/Game"] +margin_right = 224.0 +margin_bottom = 5.0 +rect_min_size = Vector2( 0, 5 ) + +[node name="Rumble" type="HBoxContainer" parent="Tabs/Game"] +unique_name_in_owner = true +margin_top = 9.0 +margin_right = 224.0 +margin_bottom = 32.0 +rect_min_size = Vector2( 0, 12 ) +focus_neighbour_top = NodePath("../../..") +script = ExtResource( 4 ) +group = SubResource( 1 ) + +[node name="Label" type="Label" parent="Tabs/Game/Rumble"] +margin_right = 53.0 +margin_bottom = 23.0 +size_flags_horizontal = 3 +size_flags_vertical = 1 +text = "Rumble: +" + +[node name="None" type="Button" parent="Tabs/Game/Rumble"] +margin_left = 69.0 +margin_right = 97.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath(".") +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +pressed = true +action_mode = 0 +group = SubResource( 1 ) +text = "None" + +[node name="Normal" type="Button" parent="Tabs/Game/Rumble"] +margin_left = 119.0 +margin_right = 161.0 +margin_bottom = 10.0 +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +action_mode = 0 +group = SubResource( 1 ) +text = "Normal" + +[node name="BPM" type="Button" parent="Tabs/Game/Rumble"] +margin_left = 187.0 +margin_right = 208.0 +margin_bottom = 10.0 +focus_neighbour_right = NodePath(".") +size_flags_horizontal = 6 +size_flags_vertical = 0 +custom_colors/font_color_focus = Color( 1, 0, 0, 1 ) +toggle_mode = true +action_mode = 0 +group = SubResource( 1 ) +text = "BPM" +align = 0 + +[node name="Video" type="VBoxContainer" parent="Tabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 10.0 +focus_neighbour_bottom = NodePath("Fullscreen") + +[node name="Spacer" type="Control" parent="Tabs/Video"] +margin_right = 224.0 +margin_bottom = 8.0 +rect_min_size = Vector2( 0, 8 ) + +[node name="Fullscreen" type="HBoxContainer" parent="Tabs/Video"] +unique_name_in_owner = true +margin_top = 12.0 +margin_right = 224.0 +margin_bottom = 24.0 +rect_min_size = Vector2( 0, 12 ) +focus_neighbour_top = NodePath("../../..") +focus_neighbour_bottom = NodePath("../WindowSize") +script = ExtResource( 4 ) +group = SubResource( 7 ) + +[node name="Label" type="Label" parent="Tabs/Video/Fullscreen"] +margin_right = 140.0 +margin_bottom = 12.0 +size_flags_horizontal = 3 +size_flags_vertical = 1 +text = "Start in fullscreen:" + +[node name="Off" type="Button" parent="Tabs/Video/Fullscreen"] +margin_left = 152.0 +margin_right = 173.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath(".") +focus_neighbour_right = NodePath("../On") +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +pressed = true +action_mode = 0 +group = SubResource( 7 ) +text = "Off" + +[node name="On" type="Button" parent="Tabs/Video/Fullscreen"] +margin_left = 198.0 +margin_right = 212.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../Off") +focus_neighbour_right = NodePath(".") +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +action_mode = 0 +group = SubResource( 7 ) +text = "on" + +[node name="WindowSize" type="HBoxContainer" parent="Tabs/Video"] +unique_name_in_owner = true +margin_top = 28.0 +margin_right = 224.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 0, 12 ) +focus_neighbour_top = NodePath("../Fullscreen") +focus_neighbour_bottom = NodePath("../ScalingMode") +script = ExtResource( 4 ) +group = SubResource( 3 ) + +[node name="Label" type="Label" parent="Tabs/Video/WindowSize"] +margin_right = 84.0 +margin_bottom = 12.0 +size_flags_horizontal = 3 +size_flags_vertical = 1 +text = "Window Size:" + +[node name="1x" type="Button" parent="Tabs/Video/WindowSize"] +margin_left = 93.0 +margin_right = 107.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath(".") +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +pressed = true +action_mode = 0 +group = SubResource( 3 ) +text = "1x" + +[node name="2x" type="Button" parent="Tabs/Video/WindowSize"] +margin_left = 121.0 +margin_right = 135.0 +margin_bottom = 10.0 +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +action_mode = 0 +group = SubResource( 3 ) +text = "2x" + +[node name="3x" type="Button" parent="Tabs/Video/WindowSize"] +margin_left = 149.0 +margin_right = 163.0 +margin_bottom = 10.0 +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +action_mode = 0 +group = SubResource( 3 ) +text = "3x" + +[node name="4x" type="Button" parent="Tabs/Video/WindowSize"] +margin_left = 177.0 +margin_right = 191.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../3x") +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +action_mode = 0 +group = SubResource( 3 ) +text = "4x" + +[node name="5x" type="Button" parent="Tabs/Video/WindowSize"] +margin_left = 205.0 +margin_right = 219.0 +margin_bottom = 10.0 +focus_neighbour_right = NodePath(".") +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +action_mode = 0 +group = SubResource( 3 ) +text = "5x" + +[node name="ScalingMode" type="HBoxContainer" parent="Tabs/Video"] +unique_name_in_owner = true +margin_top = 44.0 +margin_right = 224.0 +margin_bottom = 56.0 +rect_min_size = Vector2( 0, 12 ) +focus_neighbour_top = NodePath("../WindowSize") +focus_neighbour_bottom = NodePath("../TransitionSpeed") +script = ExtResource( 4 ) +group = SubResource( 4 ) + +[node name="Label" type="Label" parent="Tabs/Video/ScalingMode"] +margin_right = 56.0 +margin_bottom = 12.0 +size_flags_horizontal = 3 +size_flags_vertical = 1 +text = "Scaling:" + +[node name="Integer" type="Button" parent="Tabs/Video/ScalingMode"] +margin_left = 61.0 +margin_right = 110.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath(".") +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +pressed = true +action_mode = 0 +group = SubResource( 4 ) +text = "integer" + +[node name="Aspect" type="Button" parent="Tabs/Video/ScalingMode"] +margin_left = 121.0 +margin_right = 163.0 +margin_bottom = 10.0 +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +action_mode = 0 +group = SubResource( 4 ) +text = "aspect" + +[node name="Stretch" type="Button" parent="Tabs/Video/ScalingMode"] +margin_left = 173.0 +margin_right = 222.0 +margin_bottom = 10.0 +focus_neighbour_right = NodePath(".") +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +action_mode = 0 +group = SubResource( 4 ) +text = "stretch" +align = 0 + +[node name="TransitionSpeed" type="HBoxContainer" parent="Tabs/Video"] +unique_name_in_owner = true +margin_top = 60.0 +margin_right = 224.0 +margin_bottom = 72.0 +rect_min_size = Vector2( 0, 12 ) +focus_neighbour_top = NodePath("../ScalingMode") +script = ExtResource( 4 ) +group = SubResource( 5 ) + +[node name="Label" type="Label" parent="Tabs/Video/TransitionSpeed"] +margin_right = 77.0 +margin_bottom = 12.0 +size_flags_horizontal = 3 +size_flags_vertical = 1 +text = "Fade speed:" + +[node name="None" type="Button" parent="Tabs/Video/TransitionSpeed"] +margin_left = 81.0 +margin_right = 109.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath(".") +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +action_mode = 0 +group = SubResource( 5 ) +text = "None" + +[node name="Slow" type="Button" parent="Tabs/Video/TransitionSpeed"] +margin_left = 115.0 +margin_right = 143.0 +margin_bottom = 10.0 +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +action_mode = 0 +group = SubResource( 5 ) +text = "slow" + +[node name="Medium" type="Button" parent="Tabs/Video/TransitionSpeed"] +margin_left = 148.0 +margin_right = 190.0 +margin_bottom = 10.0 +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +pressed = true +action_mode = 0 +group = SubResource( 5 ) +text = "Medium" + +[node name="Fast" type="Button" parent="Tabs/Video/TransitionSpeed"] +margin_left = 195.0 +margin_right = 223.0 +margin_bottom = 10.0 +focus_neighbour_right = NodePath(".") +size_flags_horizontal = 6 +size_flags_vertical = 0 +toggle_mode = true +action_mode = 0 +group = SubResource( 5 ) +text = "Fast" + +[node name="Audio" type="VBoxContainer" parent="Tabs"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 10.0 +focus_neighbour_bottom = NodePath("MasterVolume/MasterSlider") + +[node name="Spacer" type="Control" parent="Tabs/Audio"] +margin_right = 224.0 +margin_bottom = 8.0 +rect_min_size = Vector2( 0, 8 ) + +[node name="MasterVolume" type="HBoxContainer" parent="Tabs/Audio"] +margin_top = 12.0 +margin_right = 224.0 +margin_bottom = 24.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="Tabs/Audio/MasterVolume"] +margin_right = 95.0 +margin_bottom = 12.0 +size_flags_horizontal = 3 +size_flags_vertical = 1 +text = "Master vol.:" +valign = 1 + +[node name="MasterSlider" type="HSlider" parent="Tabs/Audio/MasterVolume"] +unique_name_in_owner = true +margin_left = 99.0 +margin_right = 199.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 100, 0 ) +focus_neighbour_top = NodePath("../../../..") +focus_neighbour_bottom = NodePath("../../MusicVolume/MusicSlider") +size_flags_horizontal = 3 +max_value = 1.0 +step = 0.05 +value = 1.0 +scrollable = false +__meta__ = { +"_edit_group_": true +} + +[node name="Volume" type="Label" parent="Tabs/Audio/MasterVolume"] +margin_left = 203.0 +margin_right = 224.0 +margin_bottom = 12.0 +size_flags_horizontal = 9 +size_flags_vertical = 1 +text = "100" +valign = 1 + +[node name="MusicVolume" type="HBoxContainer" parent="Tabs/Audio"] +margin_top = 28.0 +margin_right = 224.0 +margin_bottom = 40.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="Tabs/Audio/MusicVolume"] +margin_right = 95.0 +margin_bottom = 12.0 +size_flags_horizontal = 3 +size_flags_vertical = 1 +text = "music vol.:" +valign = 1 + +[node name="MusicSlider" type="HSlider" parent="Tabs/Audio/MusicVolume"] +unique_name_in_owner = true +margin_left = 99.0 +margin_right = 199.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 100, 0 ) +focus_neighbour_top = NodePath("../../MasterVolume/MasterSlider") +focus_neighbour_bottom = NodePath("../../SoundVolume/SoundSlider") +size_flags_horizontal = 3 +max_value = 1.0 +step = 0.05 +value = 1.0 +scrollable = false +__meta__ = { +"_edit_group_": true +} + +[node name="Volume" type="Label" parent="Tabs/Audio/MusicVolume"] +margin_left = 203.0 +margin_right = 224.0 +margin_bottom = 12.0 +size_flags_horizontal = 9 +size_flags_vertical = 1 +text = "100" +valign = 1 + +[node name="SoundVolume" type="HBoxContainer" parent="Tabs/Audio"] +margin_top = 44.0 +margin_right = 224.0 +margin_bottom = 56.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="Tabs/Audio/SoundVolume"] +margin_right = 95.0 +margin_bottom = 12.0 +size_flags_horizontal = 3 +size_flags_vertical = 1 +text = "SOund vol.:" +valign = 1 + +[node name="SoundSlider" type="HSlider" parent="Tabs/Audio/SoundVolume"] +unique_name_in_owner = true +margin_left = 99.0 +margin_right = 199.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 100, 0 ) +focus_neighbour_top = NodePath("../../MusicVolume/MusicSlider") +size_flags_horizontal = 3 +max_value = 1.0 +step = 0.05 +value = 1.0 +scrollable = false +__meta__ = { +"_edit_group_": true +} + +[node name="Volume" type="Label" parent="Tabs/Audio/SoundVolume"] +margin_left = 203.0 +margin_right = 224.0 +margin_bottom = 12.0 +size_flags_horizontal = 9 +size_flags_vertical = 1 +text = "100" +valign = 1 + +[node name="HBoxContainer" type="VBoxContainer" parent="."] +margin_left = 16.0 +margin_top = 152.0 +margin_right = 240.0 +margin_bottom = 170.0 +theme = ExtResource( 2 ) + +[node name="Controls" type="Label" parent="HBoxContainer"] +margin_right = 224.0 +margin_bottom = 10.0 +text = "Z: back, X: apply, C: defaults" + +[node name="ConfirmDialog" type="PanelContainer" parent="."] +visible = false +margin_left = 48.0 +margin_top = 40.0 +margin_right = 208.0 +margin_bottom = 88.0 +focus_mode = 2 + +[node name="Label" type="Label" parent="ConfirmDialog"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 157.0 +margin_bottom = 45.0 +size_flags_vertical = 5 +text = "Apply Changes?" +align = 1 + +[node name="Label2" type="Label" parent="ConfirmDialog"] +margin_left = 3.0 +margin_top = 20.0 +margin_right = 157.0 +margin_bottom = 27.0 +text = "X: apply, Z: discard" +align = 1 + +[connection signal="focus_entered" from="." to="." method="_on_tabs_focus_entered"] +[connection signal="focus_exited" from="." to="." method="_on_tabs_focus_exited"] +[connection signal="gui_input" from="OptionsTitle" to="." method="_on_Tabs_gui_input"] +[connection signal="selection_changed" from="Tabs/Game/Rumble" to="." method="_mark_dirty"] +[connection signal="selection_changed" from="Tabs/Video/Fullscreen" to="." method="_mark_dirty"] +[connection signal="selection_changed" from="Tabs/Video/WindowSize" to="." method="_mark_dirty"] +[connection signal="selection_changed" from="Tabs/Video/ScalingMode" to="." method="_mark_dirty"] +[connection signal="selection_changed" from="Tabs/Video/TransitionSpeed" to="." method="_mark_dirty"] +[connection signal="value_changed" from="Tabs/Audio/MasterVolume/MasterSlider" to="." method="_mark_dirty"] +[connection signal="value_changed" from="Tabs/Audio/MusicVolume/MusicSlider" to="." method="_mark_dirty"] +[connection signal="value_changed" from="Tabs/Audio/SoundVolume/SoundSlider" to="." method="_mark_dirty"] +[connection signal="gui_input" from="ConfirmDialog" to="." method="_on_ConfirmDialog_gui_input"] diff --git a/objects/hud/options_screen_scholar.gd b/objects/hud/options_screen_scholar.gd new file mode 100644 index 0000000..8206e92 --- /dev/null +++ b/objects/hud/options_screen_scholar.gd @@ -0,0 +1,134 @@ +extends Control + + +signal exit + + +# if true, options screen can not exit +var can_exit: bool = true + + +onready var tabs: TabContainer = $"%Tabs" +onready var select_tab: HBoxContainer = $"%SelectTab" +# options nodes +onready var rumble: HBoxContainer = $"%SelectRumble" +onready var gore: HBoxContainer = $"%SelectGore" +onready var speedrun_timer: HBoxContainer = $"%SelectSpeedrunTimer" +onready var speccy_help: HBoxContainer = $"%SelectSpeccyHelp" +onready var fullscreen: HBoxContainer = $"%SelectFullscreen" +onready var window_size: HBoxContainer = $"%SelectWindowSize" +onready var scaling: HBoxContainer = $"%SelectScaling" +onready var fade_speed: HBoxContainer = $"%SelectFadeSpeed" +onready var border: Button = $"%SelectBorder" +onready var scanlines: HBoxContainer = $"%SelectScanlines" +onready var master_vol: HSlider = $"%SelectMasterVol" +onready var music_vol: HSlider = $"%SelectMusicVol" +onready var sound_vol: HSlider = $"%SelectSoundVol" +onready var landing_sound: HBoxContainer = $"%SelectLandingSound" + + +func _ready() -> void: + get_scene_instance_load_placeholder() + _init_values() + + +func focus() -> void: + select_tab.selection = 0 + $"%SelectTab".grab_focus() + _on_tab_selected(0) + + +func _unhandled_input(event: InputEvent) -> void: + Options.save_options() + + if can_exit and event.is_action_pressed("ui_cancel") and not Options.entry: + if visible == true: emit_signal("exit") + + +func _init_values() -> void: + # game + rumble.selection = Options.rumble + gore.selection = Options.gore + speedrun_timer.selection = 1 if Options.speedrun_timer else 0 + speccy_help.selection = 1 if Options.speccy_help else 0 + # video + fullscreen.selection = 1 if Options.fullscreen else 0 + window_size.selection = int(Options.window_size) - 1 + scaling.selection = Options.scaling_mode + fade_speed.selection = Options.transition_speed + border._update() + scanlines.selection = Options.scanlines + # audio + master_vol.value = Options.master_volume * 100.0 + music_vol.value = Options.music_volume * 100.0 + sound_vol.value = Options.sound_volume * 100.0 + landing_sound.selection = 1 if Options.landing_sound else 0 + + +func _on_tab_selected(selection: int) -> void: + tabs.current_tab = selection + var tab = tabs.get_current_tab_control() + var next = tab.get_node(tab.focus_next) + if next: + select_tab.focus_neighbour_bottom = select_tab.get_path_to(next) + else: + select_tab.focus_neighbour_bottom = @"." + select_tab.update_focus_targets() + + +# +# GAME +# +func _on_Rumble_selected(selection) -> void: + Options.rumble = selection + +func _on_Gore_selected(selection) -> void: + Options.gore = selection + +func _on_SelectSpeedrunTimer_selected(selection) -> void: + Options.speedrun_timer = selection == 1 + +func _on_SelectSpeccyHelp_selected(selection) -> void: + Options.speccy_help = selection == 1 + + +# +# VIDEO +# +func _on_Fullscreen_selected(selection) -> void: + Options.fullscreen = selection == 1 # true if 1, false otherwise + +func _on_WindowSize_selected(selection) -> void: + Options.window_size = float(selection + 1) + +func _on_Scaling_selected(selection) -> void: + Options.scaling_mode = selection + +func _on_FadeSpeed_selected(selection) -> void: + Options.transition_speed = selection + +func _on_Border_selected(selection) -> void: + Options.border = selection + +func _on_Scanlines_selected(selection) -> void: + Options.scanlines = selection + + +# +# AUDIO +# +func _on_MasterVol_value_changed(value: float) -> void: + Options.master_volume = value * 0.01 + +func _on_MusicVol_value_changed(value: float) -> void: + Options.music_volume = value * 0.01 + +func _on_SoundVol_value_changed(value: float) -> void: + Options.sound_volume = value * 0.01 + +func _on_LandingSound_selected(selection) -> void: + Options.landing_sound = selection == 1 + + +func _on_DefaultControls_button_down() -> void: + Controls.default_controls() diff --git a/objects/hud/options_screen_scholar.tscn b/objects/hud/options_screen_scholar.tscn new file mode 100644 index 0000000..1939090 --- /dev/null +++ b/objects/hud/options_screen_scholar.tscn @@ -0,0 +1,934 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://objects/hud/options_screen_scholar.gd" type="Script" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://objects/hud/radio_buttons.gd" type="Script" id=3] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=4] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=5] +[ext_resource path="res://objects/hud/select_border.gd" type="Script" id=6] +[ext_resource path="res://objects/hud/labeled_slider.gd" type="Script" id=7] +[ext_resource path="res://objects/hud/set_keyboard_button.gd" type="Script" id=8] +[ext_resource path="res://objects/hud/set_gamepad_button.gd" type="Script" id=9] +[ext_resource path="res://objects/hud/scroll_follow_focus.gd" type="Script" id=10] +[ext_resource path="res://graphics/hud/levelselect_nexlevel.png" type="Texture" id=11] +[ext_resource path="res://objects/hud/player_name_input.gd" type="Script" id=12] + +[sub_resource type="StyleBoxFlat" id=5] +content_margin_left = 1.0 +content_margin_right = 1.0 +bg_color = Color( 0.14902, 0.0980392, 0.247059, 1 ) +corner_detail = 1 +anti_aliasing = false + +[sub_resource type="StyleBoxFlat" id=6] +content_margin_left = 1.0 +content_margin_right = 1.0 +bg_color = Color( 0.213124, 0.165611, 0.382812, 1 ) +corner_detail = 1 +anti_aliasing = false + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 11 ) +region = Rect2( 0, 0, 8, 8 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 11 ) +region = Rect2( 8, 0, 8, 8 ) + +[node name="OptionsScreen" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) + +[node name="CenterContainer" type="CenterContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"] +margin_left = 8.0 +margin_top = 16.0 +margin_right = 248.0 +margin_bottom = 176.0 +rect_min_size = Vector2( 240, 160 ) + +[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 237.0 +margin_bottom = 157.0 +custom_constants/margin_right = 8 +custom_constants/margin_top = 4 +custom_constants/margin_left = 8 +custom_constants/margin_bottom = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer"] +margin_left = 8.0 +margin_top = 4.0 +margin_right = 226.0 +margin_bottom = 152.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"] +margin_right = 218.0 +margin_bottom = 10.0 +text = "-options-" +align = 1 + +[node name="SelectTab" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +margin_top = 14.0 +margin_right = 218.0 +margin_bottom = 24.0 +focus_mode = 2 +alignment = 1 +script = ExtResource( 3 ) +condense = true +options = [ "game", "video", "audio", "input" ] + +[node name="HSeparator" type="HSeparator" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"] +margin_top = 28.0 +margin_right = 218.0 +margin_bottom = 32.0 + +[node name="Tabs" type="TabContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +margin_top = 36.0 +margin_right = 218.0 +margin_bottom = 148.0 +focus_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +tabs_visible = false + +[node name="Game" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs"] +anchor_right = 1.0 +anchor_bottom = 1.0 +focus_next = NodePath("Rumble/SelectRumble") + +[node name="Rumble" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game"] +margin_right = 218.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/Rumble"] +margin_top = 1.0 +margin_right = 49.0 +margin_bottom = 11.0 +text = "Rumble:" + +[node name="SelectRumble" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/Rumble"] +unique_name_in_owner = true +margin_left = 53.0 +margin_right = 218.0 +margin_bottom = 12.0 +focus_neighbour_top = NodePath("../../../../SelectTab") +focus_neighbour_bottom = NodePath("../../Gore/SelectGore") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "off", "deaths", "full" ] + +[node name="Gore" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game"] +margin_top = 16.0 +margin_right = 218.0 +margin_bottom = 28.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/Gore"] +margin_top = 1.0 +margin_right = 35.0 +margin_bottom = 11.0 +text = "Gore:" + +[node name="SelectGore" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/Gore"] +unique_name_in_owner = true +margin_left = 39.0 +margin_right = 218.0 +margin_bottom = 12.0 +focus_neighbour_top = NodePath("../../Rumble/SelectRumble") +focus_neighbour_bottom = NodePath("../../SpeedrunTimer/SelectSpeedrunTimer") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "none", "no stains", "full" ] + +[node name="SpeedrunTimer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game"] +margin_top = 32.0 +margin_right = 218.0 +margin_bottom = 44.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/SpeedrunTimer"] +margin_top = 1.0 +margin_right = 105.0 +margin_bottom = 11.0 +text = "Speedrun Timer:" + +[node name="SelectSpeedrunTimer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/SpeedrunTimer"] +unique_name_in_owner = true +margin_left = 144.0 +margin_right = 183.0 +margin_bottom = 12.0 +focus_neighbour_top = NodePath("../../Gore/SelectGore") +focus_neighbour_bottom = NodePath("../../SpeccyHelp/SelectSpeccyHelp") +focus_mode = 2 +size_flags_horizontal = 6 +script = ExtResource( 3 ) +condense = true +options = [ "off", "on" ] + +[node name="SpeccyHelp" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game"] +margin_top = 48.0 +margin_right = 218.0 +margin_bottom = 60.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/SpeccyHelp"] +margin_top = 1.0 +margin_right = 119.0 +margin_bottom = 11.0 +text = "Help from speccy:" + +[node name="SelectSpeccyHelp" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/SpeccyHelp"] +unique_name_in_owner = true +margin_left = 151.0 +margin_right = 190.0 +margin_bottom = 12.0 +focus_neighbour_top = NodePath("../../SpeedrunTimer/SelectSpeedrunTimer") +focus_neighbour_bottom = NodePath("../../ScoreBoardName/PlayerNameInput") +focus_mode = 2 +size_flags_horizontal = 6 +script = ExtResource( 3 ) +condense = true +options = [ "off", "on" ] + +[node name="ScoreBoardName" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game"] +margin_top = 64.0 +margin_right = 218.0 +margin_bottom = 74.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName"] +margin_right = 112.0 +margin_bottom = 10.0 +text = "Scoreboard name:" + +[node name="PlayerNameInput" type="TextEdit" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName"] +margin_left = 130.0 +margin_right = 203.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 73, 0 ) +focus_neighbour_top = NodePath("../../SpeccyHelp/SelectSpeccyHelp") +size_flags_horizontal = 6 +custom_constants/line_spacing = 0 +custom_styles/focus = SubResource( 5 ) +custom_styles/normal = SubResource( 6 ) +script = ExtResource( 12 ) + +[node name="Video" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +focus_next = NodePath("Fullscreen/SelectFullscreen") + +[node name="Fullscreen" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video"] +margin_right = 218.0 +margin_bottom = 10.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Fullscreen"] +margin_right = 140.0 +margin_bottom = 10.0 +text = "Start In fullscreen:" + +[node name="SelectFullscreen" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Fullscreen"] +unique_name_in_owner = true +margin_left = 144.0 +margin_right = 218.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../../../SelectTab") +focus_neighbour_bottom = NodePath("../../WindowSize/SelectWindowSize") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "off", "on" ] + +[node name="WindowSize" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video"] +margin_top = 14.0 +margin_right = 218.0 +margin_bottom = 24.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/WindowSize"] +margin_right = 84.0 +margin_bottom = 10.0 +text = "window size:" + +[node name="SelectWindowSize" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/WindowSize"] +unique_name_in_owner = true +margin_left = 88.0 +margin_right = 218.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../Fullscreen/SelectFullscreen") +focus_neighbour_bottom = NodePath("../../Scaling/SelectScaling") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "1x", "2x", "3x", "4x", "5x" ] + +[node name="Scaling" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video"] +margin_top = 28.0 +margin_right = 218.0 +margin_bottom = 38.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Scaling"] +margin_right = 56.0 +margin_bottom = 10.0 +text = "scaling:" + +[node name="SelectScaling" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Scaling"] +unique_name_in_owner = true +margin_left = 60.0 +margin_right = 218.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../WindowSize/SelectWindowSize") +focus_neighbour_bottom = NodePath("../../FadeSpeed/SelectFadeSpeed") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "integer", "aspect", "stretch" ] + +[node name="FadeSpeed" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video"] +margin_top = 42.0 +margin_right = 218.0 +margin_bottom = 52.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/FadeSpeed"] +margin_right = 35.0 +margin_bottom = 10.0 +text = "fade:" + +[node name="SelectFadeSpeed" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/FadeSpeed"] +unique_name_in_owner = true +margin_left = 39.0 +margin_right = 218.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../Scaling/SelectScaling") +focus_neighbour_bottom = NodePath("../../Border/HBoxContainer/SelectBorder") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "slow", "medium", "fast", "instant" ] + +[node name="Border" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video"] +margin_top = 56.0 +margin_right = 218.0 +margin_bottom = 66.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border"] +margin_right = 49.0 +margin_bottom = 10.0 +text = "border:" + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border"] +margin_left = 53.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +alignment = 1 + +[node name="BorderBackArrow" type="TextureRect" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer"] +unique_name_in_owner = true +visible = false +material = SubResource( 1 ) +margin_left = 30.0 +margin_top = 1.0 +margin_right = 36.0 +margin_bottom = 9.0 +size_flags_vertical = 4 +texture = ExtResource( 5 ) +flip_h = true + +[node name="SelectBorder" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer"] +unique_name_in_owner = true +margin_left = 40.0 +margin_right = 124.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath(".") +focus_neighbour_top = NodePath("../../../FadeSpeed/SelectFadeSpeed") +focus_neighbour_right = NodePath(".") +focus_neighbour_bottom = NodePath("../../../Scanlines/SelectScanlines") +theme = ExtResource( 2 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +text = "trans rights" +script = ExtResource( 6 ) + +[node name="BorderNextArrow" type="TextureRect" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer"] +unique_name_in_owner = true +visible = false +material = SubResource( 2 ) +margin_left = 128.0 +margin_top = 1.0 +margin_right = 134.0 +margin_bottom = 9.0 +size_flags_vertical = 4 +texture = ExtResource( 5 ) + +[node name="Scanlines" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video"] +margin_top = 70.0 +margin_right = 218.0 +margin_bottom = 80.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Scanlines"] +margin_right = 70.0 +margin_bottom = 10.0 +text = "scanlines:" + +[node name="SelectScanlines" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Scanlines"] +unique_name_in_owner = true +margin_left = 74.0 +margin_right = 218.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../Border/HBoxContainer/SelectBorder") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "none", "lcd", "crt" ] + +[node name="Audio" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +focus_next = NodePath("Master/SelectMasterVol") + +[node name="Master" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio"] +margin_right = 218.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Master"] +margin_top = 1.0 +margin_right = 94.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +text = "Master vol.:" + +[node name="SelectMasterVol" type="HSlider" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Master"] +unique_name_in_owner = true +margin_left = 98.0 +margin_right = 193.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../../../SelectTab") +focus_neighbour_bottom = NodePath("../../Music/SelectMusicVol") +size_flags_horizontal = 3 +step = 5.0 +value = 100.0 +scrollable = false +script = ExtResource( 7 ) +label = NodePath("../Volume") + +[node name="Volume" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Master"] +margin_left = 197.0 +margin_top = 1.0 +margin_right = 218.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 21, 0 ) +size_flags_horizontal = 9 +text = "100" +align = 2 + +[node name="Music" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio"] +margin_top = 16.0 +margin_right = 218.0 +margin_bottom = 28.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Music"] +margin_top = 1.0 +margin_right = 94.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +text = "Music vol.:" + +[node name="SelectMusicVol" type="HSlider" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Music"] +unique_name_in_owner = true +margin_left = 98.0 +margin_right = 193.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../Master/SelectMasterVol") +focus_neighbour_bottom = NodePath("../../Sound/SelectSoundVol") +size_flags_horizontal = 3 +step = 5.0 +value = 100.0 +scrollable = false +script = ExtResource( 7 ) +label = NodePath("../Volume") + +[node name="Volume" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Music"] +margin_left = 197.0 +margin_top = 1.0 +margin_right = 218.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 21, 0 ) +size_flags_horizontal = 9 +text = "100" +align = 2 + +[node name="Sound" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio"] +margin_top = 32.0 +margin_right = 218.0 +margin_bottom = 44.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Sound"] +margin_top = 1.0 +margin_right = 94.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +text = "Sound vol.:" + +[node name="SelectSoundVol" type="HSlider" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Sound"] +unique_name_in_owner = true +margin_left = 98.0 +margin_right = 193.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../Music/SelectMusicVol") +focus_neighbour_bottom = NodePath("../../LandingSound/SelectLandingSound") +size_flags_horizontal = 3 +step = 5.0 +value = 100.0 +scrollable = false +script = ExtResource( 7 ) +label = NodePath("../Volume") + +[node name="Volume" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Sound"] +margin_left = 197.0 +margin_top = 1.0 +margin_right = 218.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 21, 0 ) +size_flags_horizontal = 9 +text = "100" +align = 2 + +[node name="LandingSound" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio"] +margin_top = 48.0 +margin_right = 218.0 +margin_bottom = 60.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/LandingSound"] +margin_top = 1.0 +margin_right = 98.0 +margin_bottom = 11.0 +text = "Landing sound:" + +[node name="SelectLandingSound" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/LandingSound"] +unique_name_in_owner = true +margin_left = 102.0 +margin_right = 218.0 +margin_bottom = 12.0 +focus_neighbour_top = NodePath("../../Sound/SelectSoundVol") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "off", "on" ] + +[node name="Input" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +focus_next = NodePath("ScrollContainer/ControlsVBox/Left/Keyboard") +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Header" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input"] +margin_right = 218.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Spacer" type="CenterContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/Header"] +margin_right = 92.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 92, 0 ) + +[node name="UpArrow" type="TextureRect" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/Header/Spacer"] +unique_name_in_owner = true +margin_left = 42.0 +margin_top = 2.0 +margin_right = 50.0 +margin_bottom = 10.0 +texture = SubResource( 3 ) + +[node name="Keyboard" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/Header"] +margin_left = 96.0 +margin_top = 1.0 +margin_right = 155.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +text = "Keyboard" +align = 1 + +[node name="Gamepad" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/Header"] +margin_left = 159.0 +margin_top = 1.0 +margin_right = 218.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +text = "Gamepad" +align = 1 + +[node name="ScrollContainer" type="ScrollContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input"] +margin_top = 16.0 +margin_right = 218.0 +margin_bottom = 98.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( 10 ) + +[node name="ControlsVBox" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer"] +unique_name_in_owner = true +margin_right = 218.0 +margin_bottom = 122.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Left" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_right = 218.0 +margin_bottom = 10.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Left"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "left" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Left"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "move_left" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Left"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +icon_align = 1 +script = ExtResource( 9 ) +action = "move_left" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Right" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 14.0 +margin_right = 218.0 +margin_bottom = 24.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Right"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "right" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Right"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "move_right" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Right"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "move_right" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Up" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 28.0 +margin_right = 218.0 +margin_bottom = 38.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Up"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "up" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Up"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "move_up" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Up"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "move_up" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Down" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 42.0 +margin_right = 218.0 +margin_bottom = 52.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Down"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "down" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Down"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "move_down" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Down"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "move_down" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Confirm" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 56.0 +margin_right = 218.0 +margin_bottom = 66.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Confirm"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "confirm" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Confirm"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "ui_accept" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Confirm"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "ui_accept" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Back" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 70.0 +margin_right = 218.0 +margin_bottom = 80.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Back"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "back" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Back"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "ui_cancel" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Back"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "ui_cancel" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Jump" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 84.0 +margin_right = 218.0 +margin_bottom = 94.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Jump"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "jump" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Jump"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "jump" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Jump"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "jump" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Attack" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 98.0 +margin_right = 218.0 +margin_bottom = 108.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Attack"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "attack" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Attack"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "shoot" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Attack"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "shoot" +options_screen = NodePath("../../../../../../../../../..") + +[node name="DefaultControls" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_left = 81.0 +margin_top = 112.0 +margin_right = 137.0 +margin_bottom = 122.0 +focus_neighbour_left = NodePath("..") +focus_neighbour_right = NodePath("..") +size_flags_horizontal = 4 +text = "defaults" + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input"] +margin_top = 102.0 +margin_right = 218.0 +margin_bottom = 112.0 + +[node name="Spacer" type="CenterContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/HBoxContainer"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) + +[node name="DownArrow" type="TextureRect" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/HBoxContainer/Spacer"] +unique_name_in_owner = true +margin_left = 42.0 +margin_top = 1.0 +margin_right = 50.0 +margin_bottom = 9.0 +texture = SubResource( 4 ) + +[node name="Keyboard" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/HBoxContainer"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +align = 1 + +[node name="Gamepad" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/HBoxContainer"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +align = 1 + +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/SelectTab" to="." method="_on_tab_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/Rumble/SelectRumble" to="." method="_on_Rumble_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/Gore/SelectGore" to="." method="_on_Gore_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/SpeedrunTimer/SelectSpeedrunTimer" to="." method="_on_SelectSpeedrunTimer_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/SpeccyHelp/SelectSpeccyHelp" to="." method="_on_SelectSpeccyHelp_selected"] +[connection signal="focus_entered" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" to="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" method="_on_focus_entered"] +[connection signal="focus_exited" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" to="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" method="_on_focus_exited"] +[connection signal="gui_input" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" to="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" method="_on_gui_input"] +[connection signal="text_changed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" to="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" method="_on_text_changed"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Fullscreen/SelectFullscreen" to="." method="_on_Fullscreen_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/WindowSize/SelectWindowSize" to="." method="_on_WindowSize_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Scaling/SelectScaling" to="." method="_on_Scaling_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/FadeSpeed/SelectFadeSpeed" to="." method="_on_FadeSpeed_selected"] +[connection signal="focus_entered" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer/SelectBorder" to="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer/SelectBorder" method="_on_focus_entered"] +[connection signal="focus_exited" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer/SelectBorder" to="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer/SelectBorder" method="_on_focus_exited"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer/SelectBorder" to="." method="_on_Border_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Scanlines/SelectScanlines" to="." method="_on_Scanlines_selected"] +[connection signal="value_changed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Master/SelectMasterVol" to="." method="_on_MasterVol_value_changed"] +[connection signal="value_changed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Music/SelectMusicVol" to="." method="_on_MusicVol_value_changed"] +[connection signal="value_changed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Sound/SelectSoundVol" to="." method="_on_SoundVol_value_changed"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/LandingSound/SelectLandingSound" to="." method="_on_LandingSound_selected"] +[connection signal="button_down" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/DefaultControls" to="." method="_on_DefaultControls_button_down"] diff --git a/objects/hud/pause_screen.gd b/objects/hud/pause_screen.gd index 4790214..7a9b7d8 100644 --- a/objects/hud/pause_screen.gd +++ b/objects/hud/pause_screen.gd @@ -1,28 +1,95 @@ -extends Node2D +extends CanvasLayer + +var lore_entries: Array = [] +var current_lore: int = -1 +var can_switch_lore: bool = true + +onready var options_screen = $OptionsScreen +onready var lore_container = $LoreContainer # Called when the node enters the scene tree for the first time. func _ready(): + get_tree().paused = true $Body/Resume.grab_focus() + if Game.marathon_mode: + $Body/Restart.disabled = true + $Body/Restart.focus_mode = Control.FOCUS_NONE + $"%GreyedRestart".visible = true + $Body.text = "RESUME\nRESTART\nOPTIONS\nQUIT GAME" + else: + $Body.text = "RESUME\nRESTART\nOPTIONS\nEXIT LEVEL" + #Random lore + if lore_entries != null and not lore_entries.empty(): + current_lore = randi() % lore_entries.size() + _update_lore_entry() + #Pause music + Audio.ac_music.set_stream_paused(true) + Audio.ac_pause_music.play() func _physics_process(delta): #Resume with pause button if Input.is_action_just_pressed("pause"): - get_tree().paused = false - queue_free() + unpause() + +func _input(event: InputEvent) -> void: + if can_switch_lore: + if event.is_action_pressed("ui_left"): + current_lore = posmod(current_lore - 1, lore_entries.size()) + _update_lore_entry() + $MenuSounds.play_select_sound() + elif event.is_action_pressed("ui_right"): + current_lore = posmod(current_lore + 1, lore_entries.size()) + _update_lore_entry() + $MenuSounds.play_select_sound() + +func _update_lore_entry() -> void: + if current_lore >= 0 and lore_entries != null and not lore_entries.empty(): + for child in lore_container.get_children(): + lore_container.remove_child(child) + var lore = lore_entries[current_lore].instance() + lore_container.add_child(lore) func _on_Resume_pressed(): - get_tree().paused = false - queue_free() + unpause() func _on_Restart_pressed(): + Audio.ac_music.set_stream_paused(false) + Audio.ac_pause_music.stop() Game.call_deferred("restart_level") get_tree().paused = false queue_free() +func _on_Settings_pressed(): + $LoreContainer.visible = false + options_screen.visible = true + can_switch_lore = false + options_screen.focus() + + func _on_ExitLevel_pressed(): + Audio.ac_music.set_stream_paused(false) + Audio.ac_pause_music.stop() get_tree().paused = false - Game.change_map(load("res://maps/level_select.tscn")) + if Game.marathon_mode: + Game.change_map(load("res://menus/marathon_start.tscn")) + else: + Game.change_map(load("res://menus/level_select_scholar.tscn")) + yield(Fade, "fade_finished") + queue_free() + + +func _on_OptionsScreen_exit(): + options_screen.visible = false + $LoreContainer.visible = true + $Body/Settings.grab_focus() + can_switch_lore = true + +func unpause(): + get_tree().paused = false + #Stop pause music + Audio.ac_music.set_stream_paused(false) + Audio.ac_pause_music.stop() queue_free() diff --git a/objects/hud/pause_screen.tscn b/objects/hud/pause_screen.tscn index 20aea8e..2ce8e48 100644 --- a/objects/hud/pause_screen.tscn +++ b/objects/hud/pause_screen.tscn @@ -1,35 +1,45 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=9 format=2] -[ext_resource path="res://tilesets/t_gui.tres" type="TileSet" id=1] -[ext_resource path="res://scripts/theme.tres" type="Theme" id=2] +[ext_resource path="res://ui/arrow_figure_8.tres" type="Material" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] [ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=3] [ext_resource path="res://objects/hud/pause_screen.gd" type="Script" id=4] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6] +[ext_resource path="res://objects/hud/options_screen_scholar.tscn" type="PackedScene" id=7] +[ext_resource path="res://ui/border.png" type="Texture" id=8] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=9] -[node name="PauseScreen" type="Node2D"] +[node name="PauseScreen" type="CanvasLayer"] pause_mode = 2 +layer = 110 script = ExtResource( 4 ) -[node name="TileMap" type="TileMap" parent="."] -pause_mode = 2 -tile_set = ExtResource( 1 ) -cell_size = Vector2( 8, 8 ) -format = 1 -tile_data = PoolIntArray( 524296, 0, 0, 524297, 536870912, 1, 524298, 536870912, 1, 524299, 536870912, 1, 524300, 536870912, 1, 524301, 536870912, 1, 524302, 536870912, 1, 524303, 536870912, 1, 524304, 536870912, 1, 524305, 536870912, 1, 524306, 536870912, 1, 524307, 536870912, 1, 524308, 536870912, 1, 524309, 536870912, 1, 524310, 536870912, 1, 524311, 536870912, 0, 589832, 0, 2, 589847, 536870912, 2, 655368, 0, 2, 655383, 536870912, 2, 720904, 0, 2, 720919, 536870912, 2, 786440, 0, 2, 786455, 536870912, 2, 851976, 0, 2, 851991, 536870912, 2, 917512, 0, 2, 917527, 536870912, 2, 983048, 1073741824, 0, 983049, 1610612736, 1, 983050, 1610612736, 1, 983051, 1610612736, 1, 983052, 1610612736, 1, 983053, 1610612736, 1, 983054, 1610612736, 1, 983055, 1610612736, 1, 983056, 1610612736, 1, 983057, 1610612736, 1, 983058, 1610612736, 1, 983059, 1610612736, 1, 983060, 1610612736, 1, 983061, 1610612736, 1, 983062, 1610612736, 1, 983063, 1610612736, 0 ) +[node name="Border" type="NinePatchRect" parent="."] +margin_left = 64.0 +margin_top = 25.0 +margin_right = 192.0 +margin_bottom = 82.0 +texture = ExtResource( 8 ) +patch_margin_left = 3 +patch_margin_top = 3 +patch_margin_right = 3 +patch_margin_bottom = 3 [node name="ColorRect" type="ColorRect" parent="."] pause_mode = 2 margin_left = 67.0 -margin_top = 72.0 +margin_top = 28.0 margin_right = 189.0 -margin_bottom = 120.0 +margin_bottom = 79.0 color = Color( 0.239216, 0.239216, 0.443137, 1 ) [node name="Paused" type="Label" parent="."] pause_mode = 2 +material = ExtResource( 6 ) margin_left = 64.0 -margin_top = 56.0 +margin_top = 14.0 margin_right = 192.0 -margin_bottom = 70.0 +margin_bottom = 24.0 theme = ExtResource( 2 ) text = "PAUSED!" align = 1 @@ -37,56 +47,99 @@ align = 1 [node name="Body" type="Label" parent="."] pause_mode = 2 margin_left = 64.0 -margin_top = 74.0 +margin_top = 29.0 margin_right = 192.0 -margin_bottom = 122.0 +margin_bottom = 78.0 theme = ExtResource( 2 ) text = "RESUME RESTART -SETTINGS +OPTIONS EXit level" align = 1 [node name="Resume" type="TextureButton" parent="Body"] pause_mode = 2 +material = ExtResource( 1 ) margin_left = 36.0 -margin_top = 3.0 +margin_top = 1.0 margin_right = 44.0 -margin_bottom = 11.0 +margin_bottom = 9.0 +focus_neighbour_left = NodePath(".") +focus_neighbour_right = NodePath(".") focus_neighbour_bottom = NodePath("../Restart") texture_focused = ExtResource( 3 ) [node name="Restart" type="TextureButton" parent="Body"] pause_mode = 2 +material = ExtResource( 1 ) margin_left = 32.0 -margin_top = 13.0 +margin_top = 14.0 margin_right = 40.0 -margin_bottom = 21.0 +margin_bottom = 22.0 +focus_neighbour_left = NodePath(".") focus_neighbour_top = NodePath("../Resume") +focus_neighbour_right = NodePath(".") focus_neighbour_bottom = NodePath("../Settings") texture_focused = ExtResource( 3 ) +[node name="GreyedRestart" type="Label" parent="Body/Restart"] +unique_name_in_owner = true +visible = false +margin_left = 7.0 +margin_top = -1.0 +margin_right = 63.0 +margin_bottom = 9.0 +custom_colors/font_color = Color( 0.690196, 0.690196, 0.690196, 1 ) +text = "Restart" + [node name="Settings" type="TextureButton" parent="Body"] pause_mode = 2 -margin_left = 29.0 -margin_top = 23.0 -margin_right = 37.0 -margin_bottom = 31.0 +material = ExtResource( 1 ) +margin_left = 32.0 +margin_top = 27.0 +margin_right = 40.0 +margin_bottom = 35.0 +focus_neighbour_left = NodePath(".") focus_neighbour_top = NodePath("../Restart") +focus_neighbour_right = NodePath(".") focus_neighbour_bottom = NodePath("../ExitLevel") texture_focused = ExtResource( 3 ) [node name="ExitLevel" type="TextureButton" parent="Body"] pause_mode = 2 +material = ExtResource( 1 ) margin_left = 22.0 -margin_top = 33.0 +margin_top = 40.0 margin_right = 30.0 -margin_bottom = 41.0 +margin_bottom = 48.0 +focus_neighbour_left = NodePath(".") focus_neighbour_top = NodePath("../Settings") +focus_neighbour_right = NodePath(".") texture_focused = ExtResource( 3 ) -[node name="StaticBody2D" type="StaticBody2D" parent="."] +[node name="LoreContainer" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 8.0 +margin_top = 84.0 +margin_right = -8.0 +margin_bottom = -14.0 +[node name="OptionsScreen" parent="." instance=ExtResource( 7 )] +visible = false + +[node name="MenuSounds" parent="." instance=ExtResource( 9 )] + +[connection signal="focus_entered" from="Body/Resume" to="MenuSounds" method="play_select_sound"] [connection signal="pressed" from="Body/Resume" to="." method="_on_Resume_pressed"] +[connection signal="pressed" from="Body/Resume" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Body/Restart" to="MenuSounds" method="play_select_sound"] [connection signal="pressed" from="Body/Restart" to="." method="_on_Restart_pressed"] +[connection signal="pressed" from="Body/Restart" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Body/Settings" to="MenuSounds" method="play_select_sound"] +[connection signal="pressed" from="Body/Settings" to="." method="_on_Settings_pressed"] +[connection signal="pressed" from="Body/Settings" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Body/ExitLevel" to="MenuSounds" method="play_select_sound"] [connection signal="pressed" from="Body/ExitLevel" to="." method="_on_ExitLevel_pressed"] +[connection signal="pressed" from="Body/ExitLevel" to="MenuSounds" method="play_confirm_sound"] +[connection signal="exit" from="OptionsScreen" to="." method="_on_OptionsScreen_exit" flags=3] diff --git a/objects/hud/player_name_input.gd b/objects/hud/player_name_input.gd new file mode 100644 index 0000000..23edaf8 --- /dev/null +++ b/objects/hud/player_name_input.gd @@ -0,0 +1,29 @@ +extends TextEdit + + +func _ready() -> void: + text = Options.scoreboard_name + + +func _exit_tree() -> void: + Options.entry = false + + +func _on_text_changed() -> void: + text = text.substr(0, 10).to_lower().strip_escapes() + Options.scoreboard_name = text + cursor_set_column(text.length()) + + +func _on_focus_entered() -> void: + Options.entry = true + cursor_set_column(text.length()) + + +func _on_focus_exited() -> void: + Options.set_deferred("entry", false) + + +func _on_gui_input(event: InputEvent) -> void: + if event.is_action_pressed("text_enter"): + get_node(focus_neighbour_top).grab_focus() diff --git a/objects/hud/radio_buttons.gd b/objects/hud/radio_buttons.gd new file mode 100644 index 0000000..9949e94 --- /dev/null +++ b/objects/hud/radio_buttons.gd @@ -0,0 +1,101 @@ +tool +class_name RadioButtons +extends HBoxContainer + + +signal selected(selection) + + +export var condense: bool = false +export var default_selection: int = 0 setget _set_default_selection +export (Array, String) var options: Array = [] setget _set_options + + +onready var selection: int = default_selection setget _set_selection + + +var _buttons: Array = [] + + +func _init() -> void: + focus_mode = FOCUS_ALL + connect("focus_entered", self, "_on_focus_entered") + + +func _set_default_selection(value: int) -> void: + if value < 0: + value = 0 + elif value >= options.size() and value != 0: + value = options.size() - 1 + default_selection = value + if not _buttons.empty(): + _buttons[default_selection].pressed = true + + +func _set_options(value: Array) -> void: + options = value + _init_buttons() + + +func _set_selection(value: int) -> void: + selection = value + _buttons[selection].pressed = true + + +func update_focus_targets() -> void: + for b in _buttons: + b.focus_neighbour_top = "../%s" % focus_neighbour_top + b.focus_neighbour_bottom = "../%s" % focus_neighbour_bottom + + +func _init_buttons() -> void: + # initialize buttons array + for child in get_children(): + remove_child(child) + child.queue_free() + _buttons.clear() + _buttons.resize(options.size()) + + # set up new buttons + var group := ButtonGroup.new() + for i in options.size(): + # create new button + var b := Button.new() + b.text = options[i] + b.toggle_mode = true + b.group = group + # size flags + if condense: + b.size_flags_horizontal = 0 + else: + b.size_flags_horizontal = SIZE_EXPAND | SIZE_SHRINK_CENTER + b.size_flags_vertical = 0 + # connect signal with index as payload + b.connect("focus_entered", self, "_on_button_selected", [i]) + # add button to children and array + _buttons[i] = b + add_child(b) + # sync top/bottom focus to self + b.focus_neighbour_top = "../%s" % focus_neighbour_top + b.focus_neighbour_bottom = "../%s" % focus_neighbour_bottom + # set up focus between buttons + if i > 0: + var prev_b: Button = _buttons[i - 1] + b.focus_neighbour_left = b.get_path_to(prev_b) + prev_b.focus_neighbour_right = prev_b.get_path_to(b) + elif i == 0: + b.focus_neighbour_left = @"." + elif i == options.size() - 1: + b.focus_neighbour_right = @"." + _buttons[default_selection].pressed = true + + +func _on_focus_entered() -> void: + _buttons[selection].grab_focus() + + +func _on_button_selected(i: int) -> void: + if i != selection: + selection = i + emit_signal("selected", i) + _buttons[i].pressed = true diff --git a/objects/hud/scroll_follow_focus.gd b/objects/hud/scroll_follow_focus.gd new file mode 100644 index 0000000..89c6282 --- /dev/null +++ b/objects/hud/scroll_follow_focus.gd @@ -0,0 +1,39 @@ +extends ScrollContainer + + +onready var up_arrow: TextureRect = $"%UpArrow" +onready var down_arrow: TextureRect = $"%DownArrow" +onready var controls_v_box: VBoxContainer = $"%ControlsVBox" + + +func _ready() -> void: + yield(get_tree(), "idle_frame") + get_viewport().connect("gui_focus_changed", self, "_on_focus_changed") + connect("visibility_changed", self, "_on_visibility_changed") + + +func _exit_tree() -> void: + get_viewport().disconnect("gui_focus_changed", self, "_on_focus_changed") + + +func _on_focus_changed(focused: Control) -> void: + if is_a_parent_of(focused): + var foc_rect := focused.get_global_rect() + if not get_global_rect().encloses(foc_rect): + var direction := sign(foc_rect.position.y - get_global_rect().position.y) + scroll_vertical += direction * 14.0 + + if scroll_vertical < 1.0: + up_arrow.visible = false + else: + up_arrow.visible = true + + if scroll_vertical > 35.0: + down_arrow.visible = false + else: + down_arrow.visible = true + + +func _on_visibility_changed() -> void: + scroll_vertical = 0.0 + up_arrow.visible = false diff --git a/objects/hud/select_border.gd b/objects/hud/select_border.gd new file mode 100644 index 0000000..b0f61e1 --- /dev/null +++ b/objects/hud/select_border.gd @@ -0,0 +1,36 @@ +extends Button + + +signal selected(selection) + + +onready var back_arrow: TextureRect = $"%BorderBackArrow" +onready var next_arrow: TextureRect = $"%BorderNextArrow" + + +func _ready() -> void: + text = Border.names[Border.current_border] + + +func _gui_input(event: InputEvent) -> void: + if event.is_action_pressed("ui_left"): + Border.current_border -= 1 + _update() + elif event.is_action_pressed("ui_right"): + Border.current_border += 1 + _update() + + +func _update() -> void: + emit_signal("selected", Border.current_border) + text = Border.names[Border.current_border] + + +func _on_focus_entered() -> void: + back_arrow.visible = true + next_arrow.visible = true + + +func _on_focus_exited() -> void: + back_arrow.visible = false + next_arrow.visible = false diff --git a/objects/hud/selection_group.gd b/objects/hud/selection_group.gd new file mode 100644 index 0000000..4cd4f72 --- /dev/null +++ b/objects/hud/selection_group.gd @@ -0,0 +1,33 @@ +extends HBoxContainer + +signal selection_changed(selection) + +export (ButtonGroup) var group + +var _selection = 0 + +func _ready(): + focus_mode = FOCUS_ALL + connect("focus_entered", self, "_focused") + for child in get_children(): + if child is BaseButton: + child.focus_neighbour_top = "../%s" % focus_neighbour_top + child.focus_neighbour_bottom = "../%s" % focus_neighbour_bottom + child.connect("focus_entered", child, "set_pressed", [true]) + child.connect("focus_entered", self, "_button_selected", [], CONNECT_DEFERRED) + +func _focused(): + _selection = get_selection() + group.get_pressed_button().grab_focus() + +func _button_selected(): + var new_selection = get_selection() + if _selection != new_selection: + _selection = new_selection + emit_signal("selection_changed", _selection) + +func get_selection(): + return group.get_buttons().find(group.get_pressed_button()) + +func select(selection): + group.get_buttons()[selection].pressed = true diff --git a/objects/hud/set_gamepad_button.gd b/objects/hud/set_gamepad_button.gd new file mode 100644 index 0000000..fea23f9 --- /dev/null +++ b/objects/hud/set_gamepad_button.gd @@ -0,0 +1,69 @@ +extends Button + + +const BLINK_SPEED: int = 150 +const GAMEPAD_BUTTONS: AtlasTexture = preload("res://objects/hud/gamepad_buttons.atlastex") + +export var action: String +export var options_screen: NodePath + + +var listen := false +var gamepad_buttons := GAMEPAD_BUTTONS.duplicate() + + +func _init() -> void: + icon_align = Button.ALIGN_CENTER + connect("pressed", self, "_on_pressed") + add_to_group("controls_buttons") + + +func _ready() -> void: + _update_text() + + +func _process(delta: float) -> void: + if listen: + if Time.get_ticks_msec() % (BLINK_SPEED * 2) < BLINK_SPEED: + modulate.a = 0.0 + else: + modulate.a = 1.0 + + +func _update_text() -> void: + var button = Controls.get_button(action) + if button >= 0: + gamepad_buttons.region.position.x = float(button % 8) * 12.0 + gamepad_buttons.region.position.y = float(button / 8) * 10.0 + icon = gamepad_buttons + text = "" + else: + text = "-" + modulate.a = 1.0 + + +func _on_pressed() -> void: + if not listen: + listen = true + disabled = true + text = "" + get_node(options_screen).can_exit = false + get_tree().create_timer(2.0, true).connect("timeout", self, "_on_timeout") + + +func _on_timeout() -> void: + listen = false + disabled = false + _update_text() + get_node(options_screen).set_deferred("can_exit", true) + + +func _gui_input(event: InputEvent) -> void: + if listen: + if event is InputEventJoypadButton and event.pressed: + Controls.set_button(action, event.button_index) + listen = false + get_node(options_screen).set_deferred("can_exit", true) + set_deferred("disabled", false) + _update_text() + accept_event() diff --git a/objects/hud/set_keyboard_button.gd b/objects/hud/set_keyboard_button.gd new file mode 100644 index 0000000..ba5ae52 --- /dev/null +++ b/objects/hud/set_keyboard_button.gd @@ -0,0 +1,60 @@ +extends Button + + +const BLINK_SPEED: int = 150 + + +export var action: String +export var options_screen: NodePath + + +var listen := false + + +func _init() -> void: + connect("pressed", self, "_on_pressed") + add_to_group("controls_buttons") + + +func _ready() -> void: + _update_text() + + +func _process(delta: float) -> void: + if listen: + if Time.get_ticks_msec() % (BLINK_SPEED * 2) < BLINK_SPEED: + modulate.a = 0.0 + else: + modulate.a = 1.0 + + +func _update_text() -> void: + text = OS.get_scancode_string(Controls.get_key(action)) + modulate.a = 1.0 + + +func _on_pressed() -> void: + if not listen: + listen = true + disabled = true + text = "" + get_node(options_screen).can_exit = false + get_tree().create_timer(2.0, true).connect("timeout", self, "_on_timeout") + + +func _on_timeout() -> void: + listen = false + disabled = false + _update_text() + get_node(options_screen).set_deferred("can_exit", true) + + +func _gui_input(event: InputEvent) -> void: + if listen: + if event is InputEventKey and event.pressed: + Controls.set_key(action, event.physical_scancode) + listen = false + get_node(options_screen).set_deferred("can_exit", true) + set_deferred("disabled", false) + _update_text() + accept_event() diff --git a/objects/hud/silhouette.tscn b/objects/hud/silhouette.tscn new file mode 100644 index 0000000..427abde --- /dev/null +++ b/objects/hud/silhouette.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://graphics/particles/pixel.png" type="Texture" id=1] + +[node name="Silhouette" type="CanvasLayer"] +layer = 0 + +[node name="Light2D" type="Light2D" parent="."] +scale = Vector2( 256, 192 ) +texture = ExtResource( 1 ) +offset = Vector2( 0.5, 0.5 ) +color = Color( 0, 0, 0, 1 ) +mode = 2 +range_z_min = -3 +range_z_max = 50 diff --git a/objects/lore/abyss/beel.tscn b/objects/lore/abyss/beel.tscn new file mode 100644 index 0000000..6462ba8 --- /dev/null +++ b/objects/lore/abyss/beel.tscn @@ -0,0 +1,56 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=2] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/lore/beel_lore.png" type="Texture" id=4] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[node name="Lore" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 1 ) +custom_constants/separation = 0 + +[node name="Panel" type="PanelContainer" parent="."] +margin_top = 77.0 +margin_right = 38.0 +margin_bottom = 115.0 +rect_min_size = Vector2( 38, 38 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TextureRect" type="TextureRect" parent="Panel"] +material = SubResource( 1 ) +margin_left = 3.0 +margin_top = 3.0 +margin_right = 35.0 +margin_bottom = 35.0 +texture = ExtResource( 4 ) +expand = true +stretch_mode = 4 + +[node name="Control" type="PanelContainer" parent="."] +margin_left = 38.0 +margin_top = 62.0 +margin_right = 256.0 +margin_bottom = 130.0 +rect_min_size = Vector2( 0, 40 ) +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 6 + +[node name="Label" type="Label" parent="Control"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 215.0 +margin_bottom = 65.0 +custom_fonts/font = ExtResource( 2 ) +text = "Beel: +This man eating monster is part eel, part bee. its stinger has enough venom to immediately kill a human." +align = 1 +autowrap = true diff --git a/objects/lore/abyss/bullet_fish.tscn b/objects/lore/abyss/bullet_fish.tscn new file mode 100644 index 0000000..427ec21 --- /dev/null +++ b/objects/lore/abyss/bullet_fish.tscn @@ -0,0 +1,53 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=2] +[ext_resource path="res://graphics/enemy/fish.png" type="Texture" id=3] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 11, 10 ) + +[node name="Lore" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 1 ) +custom_constants/separation = 0 + +[node name="Panel" type="PanelContainer" parent="."] +margin_top = 77.0 +margin_right = 38.0 +margin_bottom = 115.0 +rect_min_size = Vector2( 38, 38 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TextureRect" type="TextureRect" parent="Panel"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 35.0 +margin_bottom = 35.0 +texture = SubResource( 1 ) +expand = true +stretch_mode = 4 + +[node name="Control" type="PanelContainer" parent="."] +margin_left = 38.0 +margin_top = 55.0 +margin_right = 256.0 +margin_bottom = 136.0 +rect_min_size = Vector2( 0, 40 ) +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 6 + +[node name="Label" type="Label" parent="Control"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 215.0 +margin_bottom = 78.0 +custom_fonts/font = ExtResource( 2 ) +text = "Bullet fish: +This little guy is the result of multiple species of fish stiched together. it glows because it's radioactive, so watch out!" +align = 1 +autowrap = true diff --git a/objects/lore/abyss/crater_of_the_abyss.tscn b/objects/lore/abyss/crater_of_the_abyss.tscn new file mode 100644 index 0000000..52a42e6 --- /dev/null +++ b/objects/lore/abyss/crater_of_the_abyss.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/crater_of_the_abyss.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 62.0 +margin_bottom = 130.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 65.0 +text = "Crater of the Abyss: +One of the victims of Fami's horrible space laser. its only inhabitants are chimeras and fake coral." diff --git a/objects/lore/abyss/mine.tscn b/objects/lore/abyss/mine.tscn new file mode 100644 index 0000000..8decea7 --- /dev/null +++ b/objects/lore/abyss/mine.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/enemy/mine.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 62.0 +margin_bottom = 130.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 65.0 +text = "Naval Mine: +Fami set these up in crater of the abyss to make it seem more like a legitimate, historical body of water." diff --git a/objects/lore/abyss/squig.tscn b/objects/lore/abyss/squig.tscn new file mode 100644 index 0000000..6b45b1c --- /dev/null +++ b/objects/lore/abyss/squig.tscn @@ -0,0 +1,53 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=2] +[ext_resource path="res://graphics/enemy/squig.png" type="Texture" id=3] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 14, 15 ) + +[node name="Lore2" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 1 ) +custom_constants/separation = 0 + +[node name="Panel" type="PanelContainer" parent="."] +margin_top = 77.0 +margin_right = 38.0 +margin_bottom = 115.0 +rect_min_size = Vector2( 38, 38 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TextureRect" type="TextureRect" parent="Panel"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 35.0 +margin_bottom = 35.0 +texture = SubResource( 1 ) +expand = true +stretch_mode = 4 + +[node name="Control" type="PanelContainer" parent="."] +margin_left = 38.0 +margin_top = 62.0 +margin_right = 256.0 +margin_bottom = 130.0 +rect_min_size = Vector2( 0, 40 ) +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 6 + +[node name="Label" type="Label" parent="Control"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 215.0 +margin_bottom = 65.0 +custom_fonts/font = ExtResource( 2 ) +text = "Squig: +A disgusting combination of squid and pig. Its ink will cause cancer if ingested. Rich people keep them as pets." +align = 1 +autowrap = true diff --git a/objects/lore/abyss/turchin.tscn b/objects/lore/abyss/turchin.tscn new file mode 100644 index 0000000..a33a61d --- /dev/null +++ b/objects/lore/abyss/turchin.tscn @@ -0,0 +1,60 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=2] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/enemy/turtle.png" type="Texture" id=4] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 4 ) +region = Rect2( 0, 33, 24, 12 ) + +[node name="Lore" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 1 ) +custom_constants/separation = 0 + +[node name="Panel" type="PanelContainer" parent="."] +margin_top = 77.0 +margin_right = 38.0 +margin_bottom = 115.0 +rect_min_size = Vector2( 38, 38 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TextureRect" type="TextureRect" parent="Panel"] +material = SubResource( 1 ) +margin_left = 3.0 +margin_top = 3.0 +margin_right = 35.0 +margin_bottom = 35.0 +texture = SubResource( 2 ) +expand = true +stretch_mode = 4 + +[node name="Control" type="PanelContainer" parent="."] +margin_left = 38.0 +margin_top = 55.0 +margin_right = 256.0 +margin_bottom = 136.0 +rect_min_size = Vector2( 0, 40 ) +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 6 + +[node name="Label" type="Label" parent="Control"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 215.0 +margin_bottom = 78.0 +custom_fonts/font = ExtResource( 2 ) +text = "Turchin: +A Chimera made from sea turtle and sea urchin parts. it's very expensive to produce due to the declining sea turtle population." +align = 1 +autowrap = true diff --git a/objects/lore/boss/2600.tscn b/objects/lore/boss/2600.tscn new file mode 100644 index 0000000..64ec36c --- /dev/null +++ b/objects/lore/boss/2600.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/2600_lore.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "STG-2600: +This monsterous mecha is powered by nasty fossil fuels. it's fitted with a mean vulcan and a laser that uses dirty uranium. It's as powerful as 830 jackhammers." diff --git a/objects/lore/boss/dr_intelli.tscn b/objects/lore/boss/dr_intelli.tscn new file mode 100644 index 0000000..4a04748 --- /dev/null +++ b/objects/lore/boss/dr_intelli.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/npc/intelli_idle.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Dr.Intelli: +born 03/23/2051, sg's boss and head of edizon inc. +despite working with him, he does not think fondly of fami. he wishes the world revolved around his ideas instead." diff --git a/objects/lore/boss/fami.tscn b/objects/lore/boss/fami.tscn new file mode 100644 index 0000000..5c725c9 --- /dev/null +++ b/objects/lore/boss/fami.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/npc/fami_human.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Fami: +Born 07/15/2030, This evil trillionaire is hell-bent on owning as much as he can. the world went to shit when he came to power in 2068." diff --git a/objects/lore/boss/sg_2083.tscn b/objects/lore/boss/sg_2083.tscn new file mode 100644 index 0000000..cb199cc --- /dev/null +++ b/objects/lore/boss/sg_2083.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/2083_lore.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "SG-2083: +Speccy fixed up the remains of the STG-2600, and converted its nasty fuel into solar energy. piloted by sg, the sg-2083 is humanity's last hope against super famira!" diff --git a/objects/lore/boss/steel_factory.tscn b/objects/lore/boss/steel_factory.tscn new file mode 100644 index 0000000..2466485 --- /dev/null +++ b/objects/lore/boss/steel_factory.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/steel_factory.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Edizon Inc. Steel factory: +Sg's Workplace. most of the production is achieved through automation. the humans that work there are treated the same way as the machines." diff --git a/objects/lore/boss/the_scrump.tscn b/objects/lore/boss/the_scrump.tscn new file mode 100644 index 0000000..52ee4d9 --- /dev/null +++ b/objects/lore/boss/the_scrump.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/scrump_lore.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 68.0 +margin_bottom = 123.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 52.0 +text = "The Scrump: +A horrid chimera made to look like the god of a satirical religion from the 30's." diff --git a/objects/lore/canopy/chipit.tscn b/objects/lore/canopy/chipit.tscn new file mode 100644 index 0000000..67f67c6 --- /dev/null +++ b/objects/lore/canopy/chipit.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/enemy/jumping_spider.png" type="Texture" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 13, 12 ) + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = SubResource( 1 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Chipit: +This chimera is a cross between a chipmunk and a cricket. defective units are deep fried and packaged into the popular snack food Chip-Itz." diff --git a/objects/lore/canopy/sabrespighter.tscn b/objects/lore/canopy/sabrespighter.tscn new file mode 100644 index 0000000..bcea6e3 --- /dev/null +++ b/objects/lore/canopy/sabrespighter.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/enemy/spider.png" type="Texture" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 15, 14 ) + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = SubResource( 1 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "sabrespighter: +This beast is a cross between a sabertooth tiger and a quarter-million black widow spiders. They were deployed in shady canopy to poison the water." diff --git a/objects/lore/canopy/shady_canopy.tscn b/objects/lore/canopy/shady_canopy.tscn new file mode 100644 index 0000000..796bdfe --- /dev/null +++ b/objects/lore/canopy/shady_canopy.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://graphics/lore/shady_canopy.png" type="Texture" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] + +[node name="Lore" instance=ExtResource( 2 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 1 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Shady Canopy: +A heavily wooded forest connected to verdant hills. people used to live here to hide from fami, but after he poisoned the water it's become too dangerous." diff --git a/objects/lore/canopy/skelarcher.tscn b/objects/lore/canopy/skelarcher.tscn new file mode 100644 index 0000000..9d87e4e --- /dev/null +++ b/objects/lore/canopy/skelarcher.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/enemy/skelarcher_shoot.png" type="Texture" id=2] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 19, 20 ) + +[node name="Lore" instance=ExtResource( 3 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = SubResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Skelarcher: +The withered remains of an old archer animated by an artificial soul. one of them is made from the remains of sg's friend." diff --git a/objects/lore/cave.tscn b/objects/lore/cave.tscn new file mode 100644 index 0000000..38cc02d --- /dev/null +++ b/objects/lore/cave.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="Control" parent="." index="1"] +margin_top = 75.0 +margin_bottom = 117.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 39.0 +text = "Blue ray caverns is used as a mine by a corporation that wants to create rust and grime" diff --git a/objects/lore/cave/blue_ray_cavern.tscn b/objects/lore/cave/blue_ray_cavern.tscn new file mode 100644 index 0000000..c9f10fa --- /dev/null +++ b/objects/lore/cave/blue_ray_cavern.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/blue_ray_cavern.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Blue Ray Cavern: +the zircon ultima was first found here, during an expedition led by rust inc. it was stumbled upon during a survey for metals." diff --git a/objects/lore/cave/shedge.tscn b/objects/lore/cave/shedge.tscn new file mode 100644 index 0000000..6e3a08d --- /dev/null +++ b/objects/lore/cave/shedge.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/enemy/snail.png" type="Texture" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 12, 11 ) + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = SubResource( 1 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Shedge: +a combination of a snail and a hedgehog. it may seem slow at first, but the hedgehog parts are responsible for its blinding speed." diff --git a/objects/lore/cave/the_scrumps_tongue.tscn b/objects/lore/cave/the_scrumps_tongue.tscn new file mode 100644 index 0000000..1ffe28d --- /dev/null +++ b/objects/lore/cave/the_scrumps_tongue.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/enemy/tentacle.png" type="Texture" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 8, 24 ) + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = SubResource( 1 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "The scrump's tongue: +originally the scrump was meant to have a tongue.for some reason this feature was removed in favor of a synthetic vomit beam." diff --git a/objects/lore/graveyard/artificial_soul.tscn b/objects/lore/graveyard/artificial_soul.tscn new file mode 100644 index 0000000..be186c8 --- /dev/null +++ b/objects/lore/graveyard/artificial_soul.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/artificial_soul_lore.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Artificial Soul: +A small bit of electronics with an AI \"brain\". originally developed to bring \"life\" to intelli's robotic sweetheart. he later used it to power fami's chimeras." diff --git a/objects/lore/graveyard/graveyard.tscn b/objects/lore/graveyard/graveyard.tscn new file mode 100644 index 0000000..0a7fff2 --- /dev/null +++ b/objects/lore/graveyard/graveyard.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/arlingwood_graveyard.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Arlingwood graveyard: +a graveyard where old presidents are buried. it's also been a testing ground for fami's chimeras and techromancy." diff --git a/objects/lore/graveyard/hellarcher.tscn b/objects/lore/graveyard/hellarcher.tscn new file mode 100644 index 0000000..b74af41 --- /dev/null +++ b/objects/lore/graveyard/hellarcher.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/enemy/hellarcher_shoot.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 19, 20 ) + +[node name="Lore" instance=ExtResource( 2 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = SubResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 62.0 +margin_bottom = 130.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 65.0 +text = "Hellarcher: +The withered remains of an old president reanimated with an artificial soul and given horns and a cloak." diff --git a/objects/lore/graveyard/woeful_soul.tscn b/objects/lore/graveyard/woeful_soul.tscn new file mode 100644 index 0000000..d86910f --- /dev/null +++ b/objects/lore/graveyard/woeful_soul.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/falling_block/woeful_soul.png" type="Texture" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 8, 8 ) + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = SubResource( 1 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Woeful soul: +created as an experiment in emotional manipulation, this human skull is fitted with an artificial soul and is made to look upset to make people feel bad for it." diff --git a/objects/lore/hills/bioslime.tscn b/objects/lore/hills/bioslime.tscn new file mode 100644 index 0000000..dcd5935 --- /dev/null +++ b/objects/lore/hills/bioslime.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] +[ext_resource path="res://graphics/enemy/pal_slime_purple.png" type="Texture" id=2] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=3] +[ext_resource path="res://graphics/enemy/slime.png" type="Texture" id=4] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false +shader_param/palette = ExtResource( 2 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 4 ) +region = Rect2( 0, 0, 13, 12 ) + +[node name="Lore" instance=ExtResource( 3 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = SubResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "BioSLime: +A monster made from discarded biological materials for making chimeras. it is the chicken nugget of the chimera world." diff --git a/objects/lore/hills/catbat.tscn b/objects/lore/hills/catbat.tscn new file mode 100644 index 0000000..ae43fbd --- /dev/null +++ b/objects/lore/hills/catbat.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/enemy/bat.png" type="Texture" id=2] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 2 ) +region = Rect2( 18, 0, 18, 10 ) + +[node name="Lore" instance=ExtResource( 3 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = SubResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "CATBAT: +A Chimera created from vampire bat and panther materials. Fami wants everyone to believe creatures like this always existed. the propaganda isn't working." diff --git a/objects/lore/hills/eviscerator.tscn b/objects/lore/hills/eviscerator.tscn new file mode 100644 index 0000000..fe8ca41 --- /dev/null +++ b/objects/lore/hills/eviscerator.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/enemy/snake.png" type="Texture" id=2] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 13, 16 ) + +[node name="Lore" instance=ExtResource( 3 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = SubResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Eviscerator: +A chimera created by snake and alligator parts, stitched together and turned into a monster.monsters like these have no compassion." diff --git a/objects/lore/hills/sg.gd b/objects/lore/hills/sg.gd new file mode 100644 index 0000000..41aa41c --- /dev/null +++ b/objects/lore/hills/sg.gd @@ -0,0 +1,6 @@ +extends HBoxContainer + + +func _ready() -> void: + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + $Panel/TextureRect.material.set_shader_param("palette", palette) diff --git a/objects/lore/hills/sg.tscn b/objects/lore/hills/sg.tscn new file mode 100644 index 0000000..c133ce9 --- /dev/null +++ b/objects/lore/hills/sg.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] +[ext_resource path="res://objects/lore/hills/sg_palette_lore.gd" type="Script" id=3] +[ext_resource path="res://objects/lore/hills/sg.gd" type="Script" id=4] +[ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Lore" instance=ExtResource( 2 )] +script = ExtResource( 4 ) + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = ExtResource( 5 ) +script = ExtResource( 3 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "SG: +born 07/15/2061, factory worker turned freedom fighter. despite their frailness they will do anything to +change the future." diff --git a/objects/lore/hills/sg_palette_lore.gd b/objects/lore/hills/sg_palette_lore.gd new file mode 100644 index 0000000..61fabed --- /dev/null +++ b/objects/lore/hills/sg_palette_lore.gd @@ -0,0 +1,5 @@ +extends TextureRect + +func _ready(): + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + material.set_shader_param("palette", palette) diff --git a/objects/lore/hills/speccy.tscn b/objects/lore/hills/speccy.tscn new file mode 100644 index 0000000..737a7f5 --- /dev/null +++ b/objects/lore/hills/speccy.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/npc/speccy.png" type="Texture" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 3, 0, 20, 24 ) +margin = Rect2( 0, -2, 0, 0 ) + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = SubResource( 1 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Speccy: +born 04/23/2060, sg's british friend. he once had 9 shards of zircon ultima but had to split them into 45 rainbow stars to keep them from fami." diff --git a/objects/lore/hills/verdant_hills.tscn b/objects/lore/hills/verdant_hills.tscn new file mode 100644 index 0000000..c2a2d2c --- /dev/null +++ b/objects/lore/hills/verdant_hills.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/verdant_hills.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Verdant hills: +It was once the most peaceful place in virginia, a beatiful stretch of nature that was corrupted by fami's evil deeds." diff --git a/objects/lore/lab/famis_lab.tscn b/objects/lore/lab/famis_lab.tscn new file mode 100644 index 0000000..1447444 --- /dev/null +++ b/objects/lore/lab/famis_lab.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/famis_lab.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Fami's lab: +The birthplace of all chimeras, fami's office is at the top of the lab. you must put an end to his ceaseless violence!" diff --git a/objects/lore/lab/scope.tscn b/objects/lore/lab/scope.tscn new file mode 100644 index 0000000..f8cfbc1 --- /dev/null +++ b/objects/lore/lab/scope.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/enemy/cop/scope_idle.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = ExtResource( 3 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Officer Scope: +While not in the highest level of authority, scope is fami's most trusted famicop. they're close friends and seem to share the same weird ideas about the economy." diff --git a/objects/lore/lab/sheriff.tscn b/objects/lore/lab/sheriff.tscn new file mode 100644 index 0000000..cdd97d5 --- /dev/null +++ b/objects/lore/lab/sheriff.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/enemy/cop/the_sheriff_idle.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = ExtResource( 3 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "\"The sheriff\": +THe most loyal famicop. He has no beliefs of his own and simply wants to work for whoever is in charge. people joke he is as old as time itself and will never die." diff --git a/objects/lore/lore.tscn b/objects/lore/lore.tscn new file mode 100644 index 0000000..b5dbf1b --- /dev/null +++ b/objects/lore/lore.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=2] + +[node name="Lore" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 1 ) +custom_constants/separation = 0 + +[node name="Panel" type="PanelContainer" parent="."] +margin_top = 77.0 +margin_right = 38.0 +margin_bottom = 115.0 +rect_min_size = Vector2( 38, 38 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TextureRect" type="TextureRect" parent="Panel"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 35.0 +margin_bottom = 35.0 +expand = true +stretch_mode = 4 + +[node name="Control" type="PanelContainer" parent="."] +margin_left = 38.0 +margin_top = 76.0 +margin_right = 256.0 +margin_bottom = 116.0 +rect_min_size = Vector2( 0, 40 ) +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 6 + +[node name="Label" type="Label" parent="Control"] +margin_left = 3.0 +margin_top = 8.0 +margin_right = 215.0 +margin_bottom = 31.0 +custom_fonts/font = ExtResource( 2 ) +text = "Test text +" +align = 1 +autowrap = true diff --git a/objects/lore/mountain/echo_mountain.tscn b/objects/lore/mountain/echo_mountain.tscn new file mode 100644 index 0000000..6af0e61 --- /dev/null +++ b/objects/lore/mountain/echo_mountain.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/echo_mountain.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Echo mountain: +One of the blue ridge mountains designated as a fake monument to the god of a parody religion. people used to drink and do weird drugs here." diff --git a/objects/lore/mountain/rolling_fiend.tscn b/objects/lore/mountain/rolling_fiend.tscn new file mode 100644 index 0000000..903388a --- /dev/null +++ b/objects/lore/mountain/rolling_fiend.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/enemy/rolling_fiend.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 16, 18 ) + +[node name="Lore" instance=ExtResource( 2 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = SubResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Rolling Fiend: +Half of an octopus augmented with horse hooves. They are programmed to \"love\" the feeling of bodies under their hooves." diff --git a/objects/lore/rust/roboturret.tscn b/objects/lore/rust/roboturret.tscn new file mode 100644 index 0000000..e19545f --- /dev/null +++ b/objects/lore/rust/roboturret.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/roboturret_lore.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 62.0 +margin_bottom = 130.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 65.0 +text = "Roboturret: +A heat seeking turret that murders all who oppose it. It's powered by spray cheese cans." diff --git a/objects/lore/rust/rolling_saw.tscn b/objects/lore/rust/rolling_saw.tscn new file mode 100644 index 0000000..420a051 --- /dev/null +++ b/objects/lore/rust/rolling_saw.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/enemy/sawblade.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 12, 12 ) + +[node name="Lore" instance=ExtResource( 2 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = SubResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 68.0 +margin_bottom = 123.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 52.0 +text = "Rolling saw: +A sharp diamond plated saw, +rust inc. uses these to slay disobedient workers." diff --git a/objects/lore/rust/rust_inc.tscn b/objects/lore/rust/rust_inc.tscn new file mode 100644 index 0000000..1634584 --- /dev/null +++ b/objects/lore/rust/rust_inc.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/rust_inc.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Rust inc.: +A factory run by an evil corporation whose only purpose is creating rust and pollution to ruin the wonderful world we once had." diff --git a/objects/lore/rust/tin.tscn b/objects/lore/rust/tin.tscn new file mode 100644 index 0000000..b126476 --- /dev/null +++ b/objects/lore/rust/tin.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/lore/tin_lore.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Lore" instance=ExtResource( 2 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = ExtResource( 3 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Tin: +A security drone installed in grocery stores and workplaces to spy on the working class and take them out if they disobey fami's will." diff --git a/objects/lore/station/dread_pd.tscn b/objects/lore/station/dread_pd.tscn new file mode 100644 index 0000000..0eb0306 --- /dev/null +++ b/objects/lore/station/dread_pd.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/police_station.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Dread PD: +Police station in Dreadericksburg, virginia. there's a metal cop head statue on the side of the building venerating the cruelest cop in virginia." diff --git a/objects/lore/station/famicop.tscn b/objects/lore/station/famicop.tscn new file mode 100644 index 0000000..a06dd3e --- /dev/null +++ b/objects/lore/station/famicop.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/enemy/cop/cop_shoot.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Lore" instance=ExtResource( 2 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = ExtResource( 3 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Famicop: +These bastards are responsible for fami staying in power. Their prime objective is to protect fami's hoard of wealth." diff --git a/objects/lore/station/msx.tscn b/objects/lore/station/msx.tscn new file mode 100644 index 0000000..6421c98 --- /dev/null +++ b/objects/lore/station/msx.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/npc/msx_idle.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Lore" instance=ExtResource( 2 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = ExtResource( 3 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Ms. X: +born 10/21/2062, she was locked up for such trivial crimes as shoplifting and marijuana possession. her reliance on drugs causes many issues in her life." diff --git a/objects/npc/msx.gd b/objects/npc/msx.gd new file mode 100644 index 0000000..dfbd744 --- /dev/null +++ b/objects/npc/msx.gd @@ -0,0 +1,116 @@ +extends KinematicBody2D + +export var hatch: NodePath + +var velocity = Vector2.ZERO +var is_moving = false +var is_holding_shard = true +var has_respawned = false +var first_lead = true +var is_free = false +onready var death_particles = $DeathSplatter +onready var sprite = $Sprite +onready var anims = $AnimationPlayer +onready var raycast = $RayCast2D +onready var respawn_raycast = $RespawnRaycast +onready var shard_position = $Position2D +onready var start_position = position +onready var blink_timer = $BlinkTimer +onready var text_anims = $TextAnim +const shard = preload("res://objects/collectibles/shard.tscn") +const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") +#DIALOGUE +const here_take_this = preload("res://audio/sounds/msx_here_take_this.wav") +const come_here = preload("res://audio/sounds/msx_come_here.ogg") +const help_me = preload("res://audio/sounds/msx_help_me_get_outta_here.ogg") +const fuck = preload("res://audio/sounds/msx_fuck.ogg") +const fucking_cop = preload("res://audio/sounds/msx_fucking_cop.ogg") +const goddammit = preload("res://audio/sounds/msx_goddammit.ogg") +const motherfucker = preload("res://audio/sounds/msx_motherfucker.ogg") +const shit = preload("res://audio/sounds/msx_shit.ogg") +var death_sounds = [ + Audio.a_msx_die, + fuck, + shit +] + +func _ready(): + raycast.add_exception($Hitbox) + blink_timer.start(rand_range(5.0,7.0)) + +func _physics_process(delta): + if is_moving: velocity.x = -50 + #Stop when see something + if raycast.is_colliding(): + #stop behind sg + velocity.x = 0 + if respawn_raycast.is_colliding(): + #start moving again after respawning when seeing sg + if raycast.get_collider() != null: + if raycast.get_collider().is_in_group("player_hitbox"): + if first_lead == true: + Audio.play_sound(help_me,Audio.ac_voice) + text_anims.play("help me") + first_lead = false + is_moving = true + velocity.y += 128 * delta + velocity = move_and_slide_with_snap(velocity, Vector2.DOWN, Vector2.UP, true) + #Anims + if velocity.x == 0: + if !anims.get_current_animation() == "give" && !anims.get_current_animation() == "respawn" && !anims.get_current_animation() == "blink": anims.play("idle") + else: + anims.play("walk") + #Stop at the end of path and give shard + if position.x <= 80: + is_moving = false + velocity.x = 0 + if is_holding_shard: + anims.play("give") + +func spawn_shard(): + Audio.play_sound(here_take_this,Audio.ac_voice) + text_anims.play("here take this") + var ShardInstance = shard.instance() + ShardInstance.global_position = Vector2(shard_position.global_position.x,shard_position.global_position.y) + ShardInstance.number = 1 + get_owner().add_child(ShardInstance) + is_holding_shard = false + +func switch_action(): + Audio.play_sound(come_here,Audio.ac_voice) + text_anims.play("come here") + is_free = true + +func spray_blood(): + for i in 16: + var spray = BloodSpray.instance() + spray.pause_mode = PAUSE_MODE_PROCESS + Physics2DServer.set_active(true) + spray.global_position = global_position + spray.velocity = Vector2(randf() * 80.0, 0.0).rotated(randf() * TAU) + spray.stains_player = false + get_parent().add_child(spray) + +func die(): + #Create particles + remove_child(death_particles) + get_parent().add_child(death_particles) + death_particles.global_position = global_position + death_particles.emitting = true + spray_blood() + Audio.play_sound(death_sounds[randi() % death_sounds.size()],Audio.ac_voice) + is_moving = false + velocity.x = 0 + position = start_position + anims.play("respawn") + has_respawned = true + + +func _open_hatch() -> void: + get_node(hatch).play("open") + + +func _on_BlinkTimer_timeout(): + if anims.current_animation != "give": + anims.play("blink") + blink_timer.start(rand_range(5.0,7.0)) diff --git a/objects/npc/msx.tscn b/objects/npc/msx.tscn new file mode 100644 index 0000000..1f41dd6 --- /dev/null +++ b/objects/npc/msx.tscn @@ -0,0 +1,776 @@ +[gd_scene load_steps=28 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/npc/msx_respawn.png" type="Texture" id=2] +[ext_resource path="res://graphics/npc/msx_walk.png" type="Texture" id=3] +[ext_resource path="res://graphics/npc/msx_blink.png" type="Texture" id=4] +[ext_resource path="res://ui/theme.tres" type="Theme" id=5] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6] +[ext_resource path="res://graphics/npc/msx_idle.png" type="Texture" id=11] +[ext_resource path="res://scripts/snap_sprite.gd" type="Script" id=12] +[ext_resource path="res://objects/npc/msx.gd" type="Script" id=13] +[ext_resource path="res://graphics/particles/blood.png" type="Texture" id=14] +[ext_resource path="res://graphics/npc/msx_give.png" type="Texture" id=15] + +[sub_resource type="Animation" id=16] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ ExtResource( 15 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 2 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Dialogue/HereTakeThis:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Dialogue/ComeHere:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Dialogue/HelpMe:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Sprite:region_enabled") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Sprite:offset") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Sprite:region_rect") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Rect2( 0, 0, 40, 20 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("CollisionShape2D:disabled") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hitbox/CollisionShape2D2:disabled") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} + +[sub_resource type="Animation" id=18] +resource_name = "blink" +length = 0.7 +step = 0.06 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 4 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 4 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.12, 0.24, 0.54, 0.66 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 0 ] +} + +[sub_resource type="Animation" id=19] +resource_name = "come here" +length = 4.0 +step = 0.06 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 11 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 1 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Dialogue/ComeHere:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.06, 2.52 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[sub_resource type="Animation" id=15] +resource_name = "give" +length = 4.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 15 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 2 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.18, 0.48 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 0 ] +} +tracks/3/type = "method" +tracks/3/path = NodePath(".") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.18, 1.3, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"values": [ { +"args": [ ], +"method": "spawn_shard" +}, { +"args": [ ], +"method": "_open_hatch" +}, { +"args": [ ], +"method": "queue_free" +} ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Sprite:offset") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 1.5, 1.6, 1.8, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, -6 ), Vector2( 0, 0 ), Vector2( 0, 10 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("CollisionShape2D:disabled") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 1.5 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hitbox/CollisionShape2D2:disabled") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 1.5 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=20] +resource_name = "help me" +length = 3.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 3 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 4 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Dialogue/ComeHere:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.1 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Dialogue/HelpMe:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0.1, 2.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[sub_resource type="Animation" id=4] +resource_name = "idle" +length = 0.001 +step = 0.06 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 11 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 1 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Dialogue/ComeHere:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.06 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=17] +resource_name = "respawn" +length = 0.4 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 4, 5, 6, 7 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:texture") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 2 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:hframes") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 8 ] +} + +[sub_resource type="Animation" id=9] +resource_name = "walk" +length = 0.4 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 3 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 4 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3 ] +} + +[sub_resource type="ShaderMaterial" id=10] +resource_local_to_scene = true +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="RectangleShape2D" id=11] +extents = Vector2( 2.5, 5 ) + +[sub_resource type="CapsuleShape2D" id=14] +radius = 2.5 +height = 5.0 + +[sub_resource type="Curve" id=13] +_data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] + +[sub_resource type="Animation" id=21] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Dialogue/HelpMe:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Dialogue/HereTakeThis:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Dialogue/ComeHere:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=23] +resource_name = "come here" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Dialogue/ComeHere:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[sub_resource type="Animation" id=22] +resource_name = "help me" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Dialogue/HelpMe:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Dialogue/ComeHere:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=24] +resource_name = "here take this" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Dialogue/HereTakeThis:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[node name="MsX" type="KinematicBody2D"] +script = ExtResource( 13 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "idle" +anims/RESET = SubResource( 16 ) +anims/blink = SubResource( 18 ) +"anims/come here" = SubResource( 19 ) +anims/give = SubResource( 15 ) +"anims/help me" = SubResource( 20 ) +anims/idle = SubResource( 4 ) +anims/respawn = SubResource( 17 ) +anims/walk = SubResource( 9 ) + +[node name="Sprite" type="Sprite" parent="."] +material = SubResource( 10 ) +scale = Vector2( -1, 1 ) +texture = ExtResource( 15 ) +hframes = 2 +region_rect = Rect2( 0, 0, 40, 20 ) +script = ExtResource( 12 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox", "msx", "player_hitbox"]] +position = Vector2( 0, 3 ) +collision_layer = 11 +collision_mask = 33 + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 0.5, 2 ) +shape = SubResource( 11 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( 0.5, 5 ) +shape = SubResource( 14 ) + +[node name="DeathSplatter" type="CPUParticles2D" parent="."] +pause_mode = 2 +emitting = false +amount = 16 +lifetime = 0.3 +one_shot = true +explosiveness = 0.9 +local_coords = false +texture = ExtResource( 14 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 50 ) +initial_velocity = 60.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 13 ) + +[node name="RayCast2D" type="RayCast2D" parent="."] +position = Vector2( 0, 1 ) +enabled = true +cast_to = Vector2( -32, 0 ) +collision_mask = 3 +collide_with_areas = true + +[node name="RespawnRaycast" type="RayCast2D" parent="."] +position = Vector2( -16, 0 ) +enabled = true +cast_to = Vector2( -56, 0 ) +collision_mask = 8 +collide_with_areas = true + +[node name="Position2D" type="Position2D" parent="."] +position = Vector2( -17, 2 ) +__meta__ = { +"_gizmo_extents_": 0.0 +} + +[node name="BlinkTimer" type="Timer" parent="."] + +[node name="TextAnim" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 21 ) +"anims/come here" = SubResource( 23 ) +"anims/help me" = SubResource( 22 ) +"anims/here take this" = SubResource( 24 ) + +[node name="Dialogue" type="Node2D" parent="."] + +[node name="HereTakeThis" type="Label" parent="Dialogue"] +visible = false +material = ExtResource( 6 ) +margin_left = -48.0 +margin_top = -22.0 +margin_right = 57.0 +margin_bottom = 1.0 +theme = ExtResource( 5 ) +text = "Here, take this" +align = 1 + +[node name="ComeHere" type="Label" parent="Dialogue"] +visible = false +material = ExtResource( 6 ) +margin_left = -96.0 +margin_top = -22.0 +margin_right = 9.0 +margin_bottom = -8.0 +theme = ExtResource( 5 ) +text = "Hey, come here!" + +[node name="HelpMe" type="Label" parent="Dialogue"] +visible = false +material = ExtResource( 6 ) +margin_left = -76.0 +margin_top = -33.0 +margin_right = 8.0 +margin_bottom = -10.0 +theme = ExtResource( 5 ) +text = "Help me get +outta here!" +align = 1 + +[connection signal="timeout" from="BlinkTimer" to="." method="_on_BlinkTimer_timeout"] diff --git a/objects/npc/speccy.gd b/objects/npc/speccy.gd new file mode 100644 index 0000000..982782f --- /dev/null +++ b/objects/npc/speccy.gd @@ -0,0 +1,65 @@ +tool +extends Node2D + + +export(String, DIR) var messages_dir: String setget _set_messages_dir +export var flip: bool = false setget _set_flip +#export +var message: String setget _set_message + + +func _ready() -> void: + if Engine.editor_hint: + return + + scale.x = 0.0 + $Message.texture = load("%s/%s.png" % [messages_dir, message]) + + +func appear() -> void: + if Options.speccy_help: + $AnimationPlayer.play("fun") + + +func switch_action() -> void: + appear() + + +func _set_messages_dir(value: String) -> void: + messages_dir = value + property_list_changed_notify() + + +func _set_message(value: String) -> void: + message = value + if not Engine.editor_hint: + return + $Message.texture = load("%s/%s.png" % [messages_dir, message]) + + +func _set_flip(value: bool) -> void: + flip = value + $Flipper.scale.x = -1.0 if flip else 1.0 + + +func _get_property_list() -> Array: + var files: String = "" + var dir: Directory = Directory.new() + if dir.open(messages_dir) == OK: + dir.list_dir_begin(true, true) + var file_name: String = dir.get_next() + while file_name != "": + if not dir.current_is_dir() and file_name.ends_with(".png"): + files += "%s," % file_name.trim_suffix(".png") + file_name = dir.get_next() + files = files.trim_suffix(",") + else: + push_error("Failed to open dir: %s" % messages_dir) + return [ + { + name = "message", + type = TYPE_STRING, + hint = PROPERTY_HINT_ENUM, + hint_string = files, + } + ] diff --git a/objects/npc/speccy.tscn b/objects/npc/speccy.tscn new file mode 100644 index 0000000..3b2f0b6 --- /dev/null +++ b/objects/npc/speccy.tscn @@ -0,0 +1,263 @@ +[gd_scene load_steps=13 format=2] + +[ext_resource path="res://graphics/npc/speccy.png" type="Texture" id=1] +[ext_resource path="res://shaders/beam_cycle.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/enemy/boss/stg_2600/beam_gradient.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/speccy/over_here.png" type="Texture" id=4] +[ext_resource path="res://graphics/npc/speccy_talk.png" type="Texture" id=5] +[ext_resource path="res://graphics/npc/speccy_cool.png" type="Texture" id=6] +[ext_resource path="res://objects/npc/speccy.gd" type="Script" id=7] +[ext_resource path="res://audio/sounds/oi_sg.ogg" type="AudioStream" id=8] + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 2 ) +shader_param/cycle_speed = 4.0 +shader_param/gradient = ExtResource( 3 ) + +[sub_resource type="Animation" id=1] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Flipper/Sprite:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Flipper/Sprite/Overlay:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Message:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Flipper/Sprite:hframes") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 1 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Flipper/Sprite:texture") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 1 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:scale") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("OiSG:playing") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("OiSG:stream_paused") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 6 ) +region = Rect2( 72, 0, 24, 24 ) + +[sub_resource type="Animation" id=2] +resource_name = "fun" +length = 4.0 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Flipper/Sprite:scale") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.5, 0.6, 3.3, 3.4, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1 ), Vector2( 0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( -0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( 0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( -0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( 1.25, 0.833 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1.25, 0.833 ), Vector2( 1e-05, 1 ), Vector2( -0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( 0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( -0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( 0.75, 1 ), Vector2( 1e-05, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Flipper/Sprite/Overlay:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.5, 0.6, 3.3, 3.4, 3.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Message:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.8, 0.9, 1, 2.95, 3.05, 3.15 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 1e-05, 1e-05 ), Vector2( 1.0418, 1 ), Vector2( 1, 0.96 ), Vector2( 1, 0.96 ), Vector2( 1.0418, 1 ), Vector2( 1e-05, 1e-05 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Flipper/Sprite:texture") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.75, 0.85, 1.4, 1.55, 1.75, 1.9, 2.05, 2.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ ExtResource( 1 ), ExtResource( 1 ), ExtResource( 5 ), ExtResource( 1 ), ExtResource( 5 ), ExtResource( 1 ), ExtResource( 5 ), ExtResource( 1 ), ExtResource( 6 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Flipper/Sprite:hframes") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 2.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ 1, 4 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Flipper/Sprite:frame") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 2.9, 2.95, 3, 3.05 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 0, 1, 2, 3 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Flipper/Sprite/Overlay:texture") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 3.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ ExtResource( 1 ), SubResource( 4 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath(".:scale") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("OiSG:playing") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.85, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 2, +"values": [ false, true, false ] +} + +[node name="Speccy" type="Node2D"] +script = ExtResource( 7 ) +messages_dir = "res://graphics/hud/speccy" +message = "over_here" + +[node name="Flipper" type="Node2D" parent="."] + +[node name="Sprite" type="Sprite" parent="Flipper"] +position = Vector2( -1, -12 ) +texture = ExtResource( 1 ) +offset = Vector2( -1, 0 ) + +[node name="Overlay" type="Sprite" parent="Flipper/Sprite"] +modulate = Color( 1, 1, 1, 0 ) +material = SubResource( 3 ) +texture = ExtResource( 1 ) +offset = Vector2( 1, 0 ) +region_rect = Rect2( 1.015, 0, 0, 0 ) + +[node name="Message" type="Sprite" parent="."] +position = Vector2( 0, -24 ) +texture = ExtResource( 4 ) + +[node name="OiSG" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 8 ) +stream_paused = true +bus = "sound" + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 1 ) +anims/fun = SubResource( 2 ) diff --git a/objects/player/arrow_projectile.gd b/objects/player/arrow_projectile.gd index 4e8ea05..8f51b59 100644 --- a/objects/player/arrow_projectile.gd +++ b/objects/player/arrow_projectile.gd @@ -1,33 +1,50 @@ extends Node2D -export var speed = 240.0 +# "block" graphic +const BlockText := preload("res://objects/hud/blocktext.tscn") + + +# speed to fly at +export var speed: float = 240.0 # group to kill -var target_group = "enemy_hitbox" +export var target_group: String = "enemy_hitbox" # direction to fly -var direction = 1.0 +export var direction: float = 1.0 +# whether or not it frees on wall collision +export var breaks_on_wall: float = true + #Edge to check culling, if this edge is offscreen, delete the arrow -onready var cull_edge = Vector2(5 * direction,0) -onready var player = get_parent().get_node("Player") -onready var initial_sector = Game.current_sector +onready var cull_edge := Vector2(5.0 * direction, 0.0) +onready var initial_sector: Vector2 = Game.current_sector + func _ready(): + if target_group == "enemy_hitbox": + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + $Sprite.material.set_shader_param("palette", palette) #Flip depending on direction scale.x = direction + func _physics_process(delta): #Move in right direction position.x += speed * direction * delta #Delete when offscreen if Game.get_sector(global_position + cull_edge) != initial_sector: + _persist_trail() queue_free() + #Wall Collision func _on_Hitbox_body_entered(body): - if body is TileMap or body is StaticBody2D: - _make_sparks() - queue_free() + if breaks_on_wall: + if body is TileMap or body is StaticBody2D or body.is_in_group("stop_arrow"): + _make_sparks() + _persist_trail() + queue_free() + # kill entity if in target group func _on_Hitbox_area_entered(area): @@ -37,33 +54,42 @@ func _on_Hitbox_area_entered(area): # create block text and return if blocked if area.is_in_group("blocks_arrow"): var pos = target.global_position - Game.instance_node(Game.block_text, pos.x, pos.y, target.get_parent()) + Game.instance_node(BlockText, pos.x, pos.y, target.get_parent()) _make_sparks() else: # kill targeted node target.die() #decrease arrows if enemy killed if target_group == "enemy_hitbox": - Game.arrows = max(0, Game.arrows - 1) # clamp arrows above 0 + Game.arrows = max(0, Game.arrows - 1) as int # clamp arrows above 0 + _persist_trail() queue_free() elif area.is_in_group("arrow"): _make_sparks() + _persist_trail() queue_free() -func _exit_tree(): - # make sure particles node sticks around until particles decay - var particles = $DustParticles - remove_child(particles) - get_parent().add_child(particles) - particles.global_position = global_position - particles.emitting = false - get_tree().create_timer(particles.lifetime, false).connect("timeout", particles, "queue_free") + +func _persist_trail(): + # don't do this twice to prevent crash + if not is_queued_for_deletion(): + # make particles a sibling so it lives a bit longer than arrow + var particles = $DustParticles + remove_child(particles) + get_parent().add_child(particles) + particles.global_position = global_position + particles.emitting = false + # free particles once they have gone through their lifetime + get_tree().create_timer(particles.lifetime, false).connect("timeout", particles, "queue_free") + func _make_sparks(): - var particles = $SparkParticles - remove_child(particles) - particles.global_position = global_position + particles.position * scale.x - particles.emitting = true - get_parent().add_child(particles) - var timer = get_tree().create_timer(particles.lifetime, false) - timer.connect("timeout", particles, "queue_free") + # don't do this twice to prevent crash + if not is_queued_for_deletion(): + var particles = $SparkParticles + remove_child(particles) + particles.global_position = global_position + particles.position * scale.x + particles.emitting = true + get_parent().add_child(particles) + var timer = get_tree().create_timer(particles.lifetime, false) + timer.connect("timeout", particles, "queue_free") diff --git a/objects/player/arrow_projectile.tscn b/objects/player/arrow_projectile.tscn index 54d3f9f..2b5471a 100644 --- a/objects/player/arrow_projectile.tscn +++ b/objects/player/arrow_projectile.tscn @@ -1,14 +1,16 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] -[ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] [ext_resource path="res://graphics/player/arrow.png" type="Texture" id=2] [ext_resource path="res://objects/player/arrow_projectile.gd" type="Script" id=3] [ext_resource path="res://graphics/particles/dust.png" type="Texture" id=4] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=5] -[sub_resource type="ShaderMaterial" id=1] +[sub_resource type="ShaderMaterial" id=7] shader = ExtResource( 1 ) shader_param/border_color = Color( 0, 0, 0, 1 ) -shader_param/border_corners = true +shader_param/border_corners = false +shader_param/palette = ExtResource( 5 ) [sub_resource type="Curve" id=3] _data = [ Vector2( 0, 1 ), 0.0, -0.139481, 0, 0, Vector2( 1, 0 ), -2.82064, 0.0, 0, 0 ] @@ -20,10 +22,11 @@ extents = Vector2( 5.5, 3.5 ) _data = [ Vector2( 0, 1 ), 0.0, -1.45746, 0, 0, Vector2( 1, 0 ), 0.00323196, 0.0, 0, 0 ] [node name="ArrowProjectile" type="Node2D"] +z_index = 1 script = ExtResource( 3 ) [node name="Sprite" type="Sprite" parent="."] -material = SubResource( 1 ) +material = SubResource( 7 ) z_index = -1 texture = ExtResource( 2 ) @@ -46,6 +49,7 @@ scale_amount_random = 0.25 scale_amount_curve = SubResource( 3 ) [node name="Hitbox" type="Area2D" parent="." groups=["arrow"]] +collision_mask = 5 [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] position = Vector2( -0.5, -0.5 ) diff --git a/objects/player/player.gd b/objects/player/player.gd index 26eb466..22b8818 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -1,351 +1,604 @@ extends KinematicBody2D +# SIGNALS # +signal died() +signal teleport_finished() + +# CONSTANTS # const ArrowProjectile = preload("res://objects/player/arrow_projectile.tscn") +const DeathSplatter = preload("res://objects/player/player_death_particles.tscn") +const SplashParticles = preload("res://objects/environment/splash/splash_particles.tscn") +const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") -##CLEAN UP CODE LATER -##Children -onready var sprite = $Sprite -onready var climb_ray = $ClimbRay -onready var anims = $AnimationPlayer -onready var sword_sprite = $SwordSprite -onready var sword_hitbox = $SwordArea -onready var death_particles = $DeathSplatter -onready var dust_particles = $DustParticles -#Map -onready var map = get_owner() -##States -enum State {IDLE,WALK,JUMP,FALL,STUNNED,CLIMB,SWORD,SHOOT,INACTIVE,TRANSPORT} -var current_state = State.IDLE -##Runtime -var axis = Vector2.ZERO #Current direction being held -var trail_color = Color(0.25,0,1,0.4) - #Physics -var velocity = Vector2.ZERO -var walk_speed = 50 -var gravity = 12 -var jump_pressure = 0 -var jump_force = 150 -var doublejump_force = 122 -var current_ladder = null #Used for checking climbing every frame instead of area entered -var can_doublejump = true -var can_move_in_air = false -var transport_speed = 0.0 -var transport_direction = Vector2.ZERO - #Positions -var arrowpos = Vector2(5,3) -##Preload +# EXPORTS # +## whether to be temporarily invulnerable after respawning +export var use_iframes: bool = false +## horizontal movement speed +export var walk_speed: float = 50.0 +## frames until walk speed peak (at 60fps reference) +export var walk_acceleration_frames: float = 1.0 +## speed to push pushable objects at +export var push_speed: float = 25.0 +## climbing speed +export var climb_speed: float = 39.0 +## gravity force +export var gravity: float = 720.0 +## SG's terminal velocity +export var max_fall_speed: float = 255.0 +## upward added by jump +export var jump_force: float = 150.0 +## proportion of remaining force retained when jump is released +export var jump_release_force: float = 0.25 +## impulse added when double jumping +export var double_jump_force: float = 122.0 +## if on turn on oxygentimer to kill player +export var underwater = false +## old player controls +export var beta_gameplay = false -#Set initial respawn point -func _ready(): +# velocity +var velocity: Vector2 = Vector2.ZERO +# current falling speed +var current_fall_speed: float = 0.0 +# snap vector +var snap: Vector2 = Vector2.ZERO +# ladder currently attached to +var _attached_ladder: Node2D = null +# whether to skip blood splatter for this death +var skip_blood: bool = false +#whether sg has landed before +var first_land = true + +var can_shield = true + + +# NODE REFERENCES # +onready var state_chart: StateChart = $StateChart +onready var animation_player: AnimationPlayer = $AnimationPlayer +onready var graphics: Node2D = $Graphics +onready var sprite: Sprite = $"%Sprite" +onready var arrow_position: Position2D = $"%ArrowPosition" +onready var dust_particles: CPUParticles2D = $"%DustParticles" +onready var grounded_shape: CollisionShape2D = $"%GroundedShape" +onready var airborne_shape: CollisionShape2D = $"%AirborneShape" +onready var ladder_detector: RayCast2D = $"%LadderDetector" +onready var death_splatter_position: Position2D = $"%DeathSplatterPosition" +onready var pushable_detector: RayCast2D = $"%PushableDetector" +onready var oxygen_timer = $OxygenTimer +onready var low_oxygen_label = $"%LowOxygenLabel" +onready var edge_detector = $Graphics/EdgeDetector +onready var body_shape: CollisionShape2D = $"%BodyShape" +onready var cfox: Sprite = $"%CFox" +onready var hitbox: Area2D = $"%Hitbox" + +# OVERRIDES # +func _ready() -> void: + Game.can_restart = true + #set palette + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + sprite.material.set_shader_param("palette", palette) + $"%CFox".material.set_shader_param("palette", palette) + $"%DissolveParticles".material.set_shader_param("palette", palette) + if Game.current_palette == "super_player": + $"%Sparkles".visible = true + + # death handling Game.respawn_point = global_position + connect("died", Game, "_on_player_died") + # to detect floor on first frame + move_and_slide(Vector2(0.0, 1.0), Vector2.UP) + # make certain pushable detector will not detect player + pushable_detector.add_exception(self) + # set up state chart + state_chart.initialize() + state_chart.set_guard_property("can_respawn", true) + state_chart.set_guard_property("use_iframes", use_iframes) + state_chart.set_guard_property("red_feather", false) + state_chart.set_guard_property("beta_gameplay", beta_gameplay) + # state chart debug + $StateDebugLayer/StateChartDebug.target = state_chart + # set lung size + if Game.difficulty == Game.Difficulty.SWEET: + oxygen_timer.set_wait_time(25) + if Game.difficulty == Game.Difficulty.PUNGENT: + oxygen_timer.set_wait_time(15) + oxygen_timer.start() -func _physics_process(delta): - if current_state == State.INACTIVE: - return - axis = Vector2(Input.get_axis("ui_left","ui_right"),Input.get_axis("ui_up","ui_down")) - #Check ladder - check_ladder() - match current_state: - State.IDLE: - _process_idle() - continue - State.WALK: - _process_walk() - continue - State.IDLE, State.WALK: - _process_idle_walk() - continue - State.JUMP: - _process_jump() - continue - State.FALL: - _process_fall() - continue - State.JUMP, State.FALL: - _process_jump_fall() - continue - State.CLIMB: - _process_climb() - continue - State.SWORD: - _process_sword() - continue - State.SHOOT: - _process_shoot() - continue - State.TRANSPORT: - _process_transport(delta) - return +func _physics_process(delta: float) -> void: + # snap sprite + sprite.global_position = graphics.global_position.round() + Vector2(0.0, -10.0) + # update transition guard properties + # whether player can currently shoot an arrow + var can_shoot = Game.arrows > 0 and get_tree().get_nodes_in_group("player_arrow").size() == 0 + state_chart.set_guard_property("can_shoot", can_shoot) + + # check for and propagate input events + if Input.is_action_just_pressed("shoot"): # shooting + state_chart.send_event("shoot") + elif Input.is_action_just_pressed("jump"): # jumping + state_chart.send_event("jump") + if Input.is_action_pressed("move_down"): + state_chart.send_event("duck_pressed") + if Input.is_action_just_released("move_down"): + state_chart.send_event("duck_released") + if Input.is_action_just_pressed("shield") && Game.can_use_shield == true: + if can_shield: + Audio.play_sound(Audio.a_shield,Audio.ac_die) + $ShieldTimer.start() + $ShieldCooldown.start() + $Shield.visible = true + $"%AirborneShape".disabled = true + $"%GroundedShape".disabled = true + can_shield = false + - #Gravity - if current_state != State.CLIMB: - velocity.y += gravity - #Cut y velocity when hitting ceiling - if is_on_ceiling(): - current_state = State.FALL - position.y += 1 - velocity.y = 0 - #Apply velocity - move_and_slide(velocity,Vector2.UP) - -func _process_idle(): - if anims.get_current_animation() != "idle": anims.play("idle") - #Stop - velocity.x = 0 - #Goto Walk - if axis.x != 0: current_state = State.WALK - -func _process_walk(): - if anims.get_current_animation() != "walk": anims.play("walk") - #Move - move(walk_speed,0,true) - #Goto Idle - if axis.x == 0: current_state = State.IDLE - #Push Blocks - for i in get_slide_count(): - var collision = get_slide_collision(i) - if collision.get_collider().is_in_group("pushable"): - collision.get_collider().push(collision.normal) -func _process_idle_walk(): - can_doublejump = false - can_move_in_air = false - velocity.y = 0 - #Goto Fall - if !is_on_floor(): current_state = State.FALL - #Goto Jump - check_jump() - #Goto Sword - if Debug.allow_sword && Input.is_action_just_pressed("sword"): - Game.play_sound(Game.a_sword,Game.ac_jump) - current_state = State.SWORD - return - #Goto Shoot - check_shoot() - -func _process_jump(): - jump_pressure += 1 - #Pressure sensitive jump - if jump_pressure == 15 or Input.is_action_just_released("jump"): - velocity.y = -jump_force / 4 - #velocity.y = 0 - current_state = State.FALL - -func _process_fall(): - if anims.get_current_animation() != "doublejump": anims.play("jump") - #Return to idle - if is_on_floor(): - current_state = State.IDLE - return - #Cant move in air - if !can_move_in_air: velocity.x = 0 - -func _process_jump_fall(): - check_double_jump() - move(walk_speed,0,true) - #Goto Shoot - check_shoot() - -func _process_climb(): - can_move_in_air = true - can_doublejump = true - #Graphics - anims.play("climb") - anims.set_speed_scale(abs(axis.y)) - #Climb - position.y += axis.y * 0.65 - #Sound - if axis.y == -1: - if Game.ac_climb.get_stream() != Game.a_climb_up: Game.play_sound(Game.a_climb_up,Game.ac_climb) - if axis.y == 1: - if Game.ac_climb.get_stream() != Game.a_climb_down: Game.play_sound(Game.a_climb_down,Game.ac_climb) - if axis.y == 0: Game.ac_climb.set_stream(null) - #Manual Jump,, only works when holding neutral or away from ladder - if axis.x != sprite.scale.x && Input.is_action_just_pressed("jump"): - position.x -= sprite.scale.x * 3 - velocity.y = -jump_force - anims.set_speed_scale(1) - current_state = State.FALL - Game.ac_climb.set_stream(null) - return - if climb_ray.get_collider() == null: - if axis.y == -1: - #Auto Jump - velocity.y = -jump_force - Game.play_sound(Game.a_jump,Game.ac_jump) - #Auto dismount - Game.ac_climb.set_stream(null) - current_state = State.FALL - return - #Side dismount - if axis.x != sprite.scale.x && Input.is_action_just_pressed("shoot"): - position.x -= sprite.scale.x * 3 - current_state = State.FALL - anims.set_speed_scale(1) - Game.ac_climb.set_stream(null) - return - - -func _process_sword(): - anims.play("stab") - #Stop - velocity.x = 0 - sword_sprite.scale.x = sprite.scale.x - #Move hitbox with flip - sword_hitbox.position.x = sprite.scale.x * 10 - #Return to idle after animationplayer end anim signal - -func _process_shoot(): - #Stop - velocity.x = 0 - if anims.get_current_animation() == "shoot air": - #Cancel air shoot animation when grounded - if is_on_floor(): - current_state = State.IDLE - return - move(walk_speed,0,true) - -func _process_transport(delta): - position += transport_direction * transport_speed * delta - -func spawn_arrow(): - Game.play_sound(Game.a_shoot,Game.ac_jump) - var arrow = ArrowProjectile.instance() - arrow.global_position = Vector2( - global_position.x + arrowpos.x * sprite.scale.x, - global_position.y + arrowpos.y - ) - arrow.direction = sprite.scale.x - arrow.add_to_group("player_arrow") - map.add_child(arrow) - -func check_jump(): - if Input.is_action_just_pressed("jump"): - #Detach ladder - if current_state == State.CLIMB: - Game.ac_climb.set_stream(null) # stop climb sound - position.x -= sprite.scale.x * 3 - else: - dust_particles.restart() - anims.set_speed_scale(1) - # Jump - can_doublejump = true - can_move_in_air = true - velocity.y = 0 - jump_pressure = 0 - current_state = State.JUMP - Game.play_sound(Game.a_jump,Game.ac_jump) - anims.play("jump") - velocity.y = -jump_force - move(walk_speed,0,true) - -func check_double_jump(): - if Input.is_action_just_pressed("jump") && can_doublejump: - Game.play_sound(Game.a_doublejump,Game.ac_jump) - can_doublejump = false - velocity.y = -doublejump_force - anims.play("doublejump") - -func check_shoot(): - #Only Shoot if have arrows and there are no arrows onscreen - if Input.is_action_just_pressed("shoot") && Game.arrows > 0 && get_tree().get_nodes_in_group("player_arrow").size() == 0: - current_state = State.SHOOT - if is_on_floor(): - anims.play("shoot grounded") - else: - anims.play("shoot air") #Shoot immediately in air - -func move(hsp,vsp,flip:bool): - if is_on_floor() or can_move_in_air: - velocity.x = hsp * axis.x - #Flip - if flip: if sign(axis.x) != 0: sprite.scale.x = axis.x - -func check_ladder(): - if climb_ray.get_collider() != null: - current_ladder = climb_ray.get_collider().get_parent() - #Stop the velocity - velocity = Vector2.ZERO - #Snap to closest side - if position.x < current_ladder.middle: - position.x = current_ladder.left_snap.global_position.x - sprite.scale.x = 1 - else: - position.x = current_ladder.right_snap.global_position.x - sprite.scale.x = -1 - #Start Climbing - current_state = State.CLIMB - #Move the raycast - #climb_ray.position.x = 4 * sprite.scale.x - -func enter_transport(speed, direction): - transport_speed = speed - transport_direction = direction - current_state = State.TRANSPORT - can_doublejump = false - anims.play("doublejump") - -func exit_transport(): - current_state = State.FALL - -func die(): - Game.ac_climb.set_stream(null) # stop climbing sound - if current_state == State.INACTIVE: - return - var new_particles = death_particles.duplicate() - get_parent().add_child(new_particles) - new_particles.global_position = global_position - new_particles.emitting = true - sprite.visible = false - current_state = State.INACTIVE - position = Game.respawn_point - Game.lives -= 1 - if Game.lives < 0: - new_particles.amount = 64 - new_particles.lifetime = 0.45 - new_particles.speed_scale = 1.5 - current_state = State.INACTIVE - Game.play_sound(Game.a_gover, Game.ac_die) - var time_tween = get_tree().create_tween() - time_tween.tween_property(Engine, "time_scale", 0.1, 0.3) - Game.ac_music.stop() - yield(time_tween, "finished") - yield(get_tree().create_timer(1.0 * 0.1), "timeout") - Game.call_deferred("restart_level") + # send relevant events + if is_on_floor(): # check on floor status + state_chart.send_event("grounded") else: - Game.play_sound(Game.a_die, Game.ac_die) - yield(Game.freeze_frame(0.3), "timeout") - current_state = State.IDLE - sprite.visible = true + state_chart.send_event("airborne") + + # check if in contact with ladder + if ladder_detector.is_colliding(): + state_chart.send_event("ladder_touched") + + # show oxygen count on low oxygen + if underwater: + if oxygen_timer.time_left < 5: + low_oxygen_label.text = str(floor(oxygen_timer.time_left) + 1) + set_underwater_audio(true) + else: + low_oxygen_label.text = "" + set_underwater_audio(false) + else: + #NOT UNDERWATER + low_oxygen_label.text = "" -func _on_AnimationPlayer_animation_finished(anim_name): - if current_state == State.INACTIVE: - return - #Return to idle after slash - if anim_name == "stab": - current_state = State.IDLE - return - #Return to idle after grounded shoot - if anim_name == "shoot grounded": - current_state = State.IDLE - return - #Return to fall or idle after air shoot - if anim_name == "shoot air": + +# HELPER FUNCTIONS # +## spawns an arrow +func spawn_arrow() -> void: + var arrow = ArrowProjectile.instance() + arrow.global_position = arrow_position.global_position + arrow.direction = sign(arrow_position.global_position.x - global_position.x) + arrow.add_to_group("player_arrow") + get_parent().add_child(arrow) + Audio.play_sound(Audio.a_shoot, Audio.ac_jump) + +func die() -> void: + state_chart.send_event("hurt") + +func zap() -> void: + state_chart.send_event("zapped") + +func set_underwater_audio(value): + var idx = AudioServer.get_bus_index("Master") + AudioServer.set_bus_effect_enabled(idx,0,value) + AudioServer.set_bus_effect_enabled(idx,1,value) + +func get_stick_input(axis): + var inp = Input.get_joy_axis(0,axis) + if abs(inp) >= 0.5: + return sign(inp) + else: + return 0 + +func reset_fall_speed(): + current_fall_speed = 0 + +# STATE ENTERS/EXITS # +func _on_Grounded_state_entered() -> void: + # still jump if pressed frame hit ground + if Input.is_action_just_pressed("jump"): + state_chart.send_event("jump") + # toggle hurtbox shapes + grounded_shape.disabled = false + airborne_shape.disabled = true + snap.y = 2.5 # snap when in grounded state + velocity.y = 1.0 + if first_land: + first_land = false + else: + #Landing sound + Audio.play_sound(Audio.a_land,Audio.ac_land) + #Landing Rumble + var intensity = inverse_lerp(0.0, max_fall_speed, current_fall_speed) + intensity = min(intensity * 1.1,1.0) + Input.start_joy_vibration(0, 1.0, intensity, 0.05) + +func _on_Still_state_entered() -> void: + animation_player.play("idle") + +func _on_Walking_state_entered() -> void: + animation_player.play("walk") + +func _on_Blinking_state_entered() -> void: + if $"%Blinking".active: + animation_player.play("blink") + var blink_timer = get_tree().create_timer(rand_range(1.0, 2.0), false) + blink_timer.connect("timeout", self,"_on_Blinking_state_entered") + +func _on_Stimming_state_entered() -> void: + animation_player.play("stim") + +func _on_Ducking_state_entered(): + velocity.x = 0 + animation_player.play("duck") + +func _on_Pushing_state_entered() -> void: + animation_player.play("push") + +func _on_Airborne_state_entered() -> void: + grounded_shape.disabled = true + airborne_shape.disabled = false + snap.y = 0.0 # do not snap when in air + velocity.y = 0.0 + +func _on_NormalJump_state_entered() -> void: + velocity.y = -jump_force + Audio.play_sound(Audio.a_jump, Audio.ac_jump) + animation_player.play("jump") + dust_particles.restart() + +func _on_NormalJump_state_exited() -> void: + # add bit of force proportional to how much of the jump is left + if Input.is_action_just_released("jump"): + var factor = inverse_lerp(0.0, -jump_force, velocity.y) + velocity.y = -jump_force * factor * jump_release_force + +func _on_LadderJump_state_entered() -> void: + velocity.y = -jump_force + Audio.play_sound(Audio.a_jump, Audio.ac_jump) + animation_player.play("ladder_jump") + +func _on_DoubleJump_state_entered() -> void: + velocity.y = -double_jump_force + Audio.play_sound(Audio.a_doublejump, Audio.ac_jump) + animation_player.play("double_jump") + +func _on_CoyoteFalling_state_entered() -> void: + global_position.y += 1.0 + velocity.x = 0.0 + animation_player.play("fall") + +func _on_NormalFalling_state_entered() -> void: + animation_player.play("fall") + +func _on_ScaredFalling_state_entered() -> void: + velocity.x = 0.0 + animation_player.play("fall_scared") + +func _on_Shooting_state_entered() -> void: + velocity.x = 0.0 + animation_player.play("shoot_grounded") + +func _on_AirShooting_state_entered() -> void: + spawn_arrow() + animation_player.play("shoot_airborne") + +func _on_Climbing_state_entered() -> void: + if ladder_detector.get_collider().is_in_group("ladder"): + _attached_ladder = ladder_detector.get_collider() + # move a tiny bit up if on ground to detach from falling blocks if is_on_floor(): - current_state = State.IDLE - return - else: - current_state = State.FALL - return + global_position.y -= get("collision/safe_margin") + velocity = Vector2.ZERO + snap = Vector2.ZERO + var input_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize + var ladder_dir = sign(_attached_ladder.middle - global_position.x) + var flip = global_position.y - 1.0 <= _attached_ladder.global_position.y and input_dir == ladder_dir and is_on_floor() + if (ladder_dir >= 0.0 != flip or not _attached_ladder.can_climb_right) and _attached_ladder.can_climb_left: + global_position.x = _attached_ladder.left_snap + graphics.scale.x = 1.0 + animation_player.play("climb") + elif _attached_ladder.can_climb_right: + global_position.x = _attached_ladder.right_snap + graphics.scale.x = -1.0 + animation_player.play("climb") + +func _on_Climbing_state_exited() -> void: + _attached_ladder = null + animation_player.playback_speed = 1.0 # restore playback speed + Audio.ac_climb.stream = null # stop audio + +# all the stuff that happens when they DIE +func _on_Dead_state_entered() -> void: + if Debug.fast_punishment > 0: + Engine.time_scale += .05 * Debug.fast_punishment + # send signals + emit_signal("died") + state_chart.send_event("died") + Input.start_joy_vibration(0,1,1,0.2) + # spawn death particles + if not skip_blood: + var particles = DeathSplatter.instance() + particles.global_position = death_splatter_position.global_position + particles.emitting = true + get_parent().add_child(particles) + for i in 16: + var spray = BloodSpray.instance() + spray.pause_mode = PAUSE_MODE_PROCESS + Physics2DServer.set_active(true) + spray.global_position = death_splatter_position.global_position + spray.velocity = Vector2(randf() * 80.0, 0.0).rotated(randf() * TAU) + spray.stains_player = false + get_parent().add_child(spray) + else: + skip_blood = false + # fade into the ether + graphics.visible = false + state_chart.send_event("respawn") + #refill oxygen + oxygen_timer.start() + +func _on_Drowning_state_entered() -> void: +# state_chart.send_event("died") + velocity = Vector2.ZERO + animation_player.call_deferred("play", "drown") + +func _on_Respawn_state_entered() -> void: + global_position = Game.respawn_point + graphics.visible = true + +func _on_Appearing_state_entered() -> void: + global_position = Game.respawn_point + animation_player.play("respawn") + +func _on_Edge_state_entered(): + animation_player.play("edge") + +func _on_Inactive_state_entered() -> void: + velocity = Vector2.ZERO + body_shape.disabled = true + hitbox.monitorable = false + hitbox.monitoring = false + +func _on_Inactive_state_exited() -> void: + body_shape.disabled = false + hitbox.monitorable = true + hitbox.monitoring = true + +func _on_Teleporting_state_entered() -> void: + hitbox.monitorable = false + hitbox.monitoring = false + velocity = Vector2.ZERO + Audio.play_sound(Audio.a_teleport, Audio.ac_jump) + animation_player.play("idle") + var tween = create_tween() + for i in 8: + tween.tween_property(sprite, "position:x", 1.0, 0.0333333) + tween.tween_property(sprite, "position:x", -1.0, 0.0333333) + tween.tween_property(sprite, "position:x", 0.0, 0.0666667) + yield(tween, "finished") + sprite.visible = false + $"%DissolveParticles".emitting = true + yield(get_tree().create_timer(1.0, false), "timeout") + emit_signal("teleport_finished") -func _on_SwordArea_area_entered(area): - if area.is_in_group("enemy_hitbox"): - var target = area.get_parent() - # create block text and return if blocked - if area.is_in_group("blocks_sword"): - var pos = target.global_position - Game.instance_node(Game.block_text, pos.x, pos.y, target.get_parent()) +# STATE PROCESSING # +## when on ground +func _process_grounded(delta: float) -> void: + # make sure is_on_floor detected still + velocity.y = 1.0 + #play edge sprite if hanging of edge + if !edge_detector.is_colliding(): + state_chart.send_event("edge") + else: + state_chart.send_event("off_edge") + +## called when player can move left and rightpass # Repass # Rpass # Replace with function body.eplace with function body.place with function body. +func _process_horizontal_movement(delta: float) -> void: + var input_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize + velocity.x = input_dir * walk_speed + if input_dir != 0.0: + graphics.scale.x = input_dir + +## player movement with acceleration +func _process_horizontal_movement_grounded(delta: float) -> void: + var input_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize +# if Input.is_action_pressed("stick_input"): input_dir = get_stick_input(JOY_AXIS_0) + if input_dir == 0.0 or input_dir != sign(velocity.x): + velocity.x = 0.0 + var acceleration = lerp(0.0, walk_speed, 1.0 / walk_acceleration_frames) * 60.0 + velocity.x += input_dir * acceleration * delta + velocity.x = clamp(velocity.x, -walk_speed, walk_speed) + if input_dir != 0.0: + graphics.scale.x = input_dir + +## walk/idle state +func _process_can_walk(delta: float) -> void: + if sign(Input.get_axis("move_left", "move_right")) != 0.0 or get_stick_input(JOY_AXIS_0) != 0.0: + state_chart.send_event("walk_start") + else: + state_chart.send_event("walk_stop") + +## rubbing up against a wall or pushing an object +func _process_pushing(delta: float) -> void: + if not is_on_wall(): + state_chart.send_event("push_stop") + var input_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize + if input_dir != 0.0: + pushable_detector.force_raycast_update() + if pushable_detector.is_colliding(): + var col = pushable_detector.get_collider() + if col.is_in_group("pushable"): + col.push(input_dir * push_speed) + velocity.x = input_dir * push_speed * 2.0 + else: + state_chart.send_event("push_stop") + +## climbing on ladders +func _process_climbing(delta: float) -> void: + # climbing movement + var input_dir = sign(Input.get_axis("move_up", "move_down") + get_stick_input(JOY_AXIS_1)) # sign() to normalize + move_and_slide(Vector2(0.0, input_dir * climb_speed), Vector2.UP) # move + animation_player.playback_speed = abs(input_dir) # play/pause animation + + # play sound + if input_dir < 0.0: + if Audio.ac_climb.stream != Audio.a_climb_up: + Audio.play_sound(Audio.a_climb_up, Audio.ac_climb) + if Audio.ac_climb.get_playback_position() >= Audio.a_climb_up.get_length(): + Audio.ac_climb.play() + elif input_dir > 0.0: + if Audio.ac_climb.stream != Audio.a_climb_down: + Audio.play_sound(Audio.a_climb_down, Audio.ac_climb) + if Audio.ac_climb.get_playback_position() >= Audio.a_climb_down.get_length(): + Audio.ac_climb.play() + else: + Audio.ac_climb.stream = null + + # check if still on ladder + ladder_detector.force_raycast_update() + var collider = ladder_detector.get_collider() + if collider and collider.is_in_group("ladder"): + _attached_ladder = collider + if Input.is_action_just_pressed("jump"): + var horizontal_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize + if sign(_attached_ladder.middle - global_position.x) != horizontal_dir: + global_position.x -= graphics.scale.x * 3.0 + state_chart.send_event("ladder_jump") + return + elif Input.is_action_just_pressed("shoot"): + var horizontal_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize + if sign(_attached_ladder.middle - global_position.x) != horizontal_dir: + global_position.x -= graphics.scale.x * 3.0 + state_chart.send_event("ladder_detach") + return +# # auto-dismount on ground +# elif Input.is_action_pressed("move_down") and is_on_floor(): +# var horizontal_dir = sign(Input.get_axis("move_left", "move_right")) +# if sign(_attached_ladder.middle - global_position.x) != horizontal_dir: +# global_position.x -= graphics.scale.x * 3.0 +# state_chart.send_event("ladder_detach")# + elif Input.is_action_just_pressed("move_left") and _attached_ladder.can_climb_left and not beta_gameplay: + global_position.x = _attached_ladder.left_snap + graphics.scale.x = 1.0 + elif Input.is_action_just_pressed("move_right") and _attached_ladder.can_climb_right and not beta_gameplay: + global_position.x = _attached_ladder.right_snap + graphics.scale.x = -1.0 + else: + var ladder_dir = sign(_attached_ladder.middle - global_position.x) + if ladder_dir >= 0.0: + global_position.x = _attached_ladder.left_snap + graphics.scale.x = 1.0 + else: + global_position.x = _attached_ladder.right_snap + graphics.scale.x = -1.0 + else: + if input_dir == -1.0: + state_chart.send_event("ladder_peak") return else: - target.die() + state_chart.send_event("ladder_detach") + return + +func _process_jump(delta: float) -> void: + if velocity.y >= 0.0: + state_chart.send_event("jump_peak") + if not Input.is_action_pressed("jump"): + state_chart.send_event("jump_released") + +## called by states SG will fall during +func _process_gravity(delta: float) -> void: + velocity.y = min(velocity.y + gravity * delta, max_fall_speed) + current_fall_speed = max(velocity.y,current_fall_speed) + +## called after all other physics things +func _process_movement(delta: float) -> void: + # apply velocity and react to collisions + velocity.y += get_floor_velocity().y + velocity = move_and_slide_with_snap(velocity, snap, Vector2.UP) + + # deal with that STUPID landing exactly on corner bug + var col = get_last_slide_collision() + if col != null: + if col.remainder.y >= 1.0 and col.normal.y == 0.0: + position.x += col.normal.x * 0.001 + + # check for wall + if is_on_wall() and (Input.get_axis("move_left", "move_right") != 0.0 or get_stick_input(JOY_AXIS_0) != 0.0): + state_chart.send_event("push_start") + +func _process_floating_up(delta: float) -> void: + graphics.global_position.y -= 50.0 * delta + var sprite_sector = Game.get_sector(Vector2(global_position.x, graphics.global_position.y - 20)) + if sprite_sector != Game.current_sector: + graphics.visible = false + graphics.position = Vector2.ZERO + emit_signal("died") + state_chart.send_event("respawn") + + +# COLLISION CALLBACKS # +func _on_Hitbox_body_entered(body: Node) -> void: + if body.is_in_group("death"): + if body.is_in_group("no_blood"): + skip_blood = true + if body.is_in_group("has_splash"): + Game.alternate_death = Audio.a_die_splash + var particles = SplashParticles.instance() + particles.global_position = death_splatter_position.global_position + particles.color = body.splash_color + particles.emitting = true + get_parent().add_child(particles) + if body.is_in_group("death_zap"): + Game.alternate_death = Audio.a_die_zap + die() + + +func _on_Ducking_event_received(event): + if event == "jump": + position.y -= 1 + + +func _on_OxygenTimer_timeout(): + if underwater: + state_chart.send_event("drown") + +#Reset low oxygen effect when leaving level +func _on_Player_tree_exited(): + set_underwater_audio(false) + + +func _on_Zapping_state_entered(): + velocity = Vector2.ZERO + Audio.play_sound(Audio.a_die_zap, Audio.ac_die) + animation_player.call_deferred("play", "zap") + + +func make_blood(): + var particles = DeathSplatter.instance() + particles.global_position = death_splatter_position.global_position + particles.emitting = true + get_parent().add_child(particles) + for i in 16: + var spray = BloodSpray.instance() + spray.pause_mode = PAUSE_MODE_PROCESS + Physics2DServer.set_active(true) + spray.global_position = death_splatter_position.global_position + spray.velocity = Vector2(randf() * 80.0, 0.0).rotated(randf() * TAU) + spray.stains_player = false + get_parent().add_child(spray) + + +func _on_Zapping_state_exited(): + $Graphics/ZapSprite.visible = false + emit_signal("died") + + +func _on_ShieldTimer_timeout(): + $Shield.visible = false + $"%AirborneShape".disabled = false + $"%GroundedShape".disabled = false + + +func _on_ShieldCooldown_timeout(): + can_shield = true + Audio.play_sound(Audio.a_shield_cooldown,Audio.ac_boss) + + +func _on_BetaFalling_state_entered() -> void: + velocity.x = 0.0 diff --git a/objects/player/player.tscn b/objects/player/player.tscn index 267f8de..a05b632 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -1,424 +1,337 @@ -[gd_scene load_steps=32 format=2] +[gd_scene load_steps=52 format=2] [ext_resource path="res://objects/player/player.gd" type="Script" id=1] -[ext_resource path="res://graphics/player/sg_walk.png" type="Texture" id=2] -[ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=3] -[ext_resource path="res://scripts/recolor_border.shader" type="Shader" id=4] -[ext_resource path="res://graphics/player/jump.png" type="Texture" id=5] -[ext_resource path="res://graphics/player/pal_purplearmor.png" type="Texture" id=6] -[ext_resource path="res://graphics/player/sg_climb.png" type="Texture" id=7] -[ext_resource path="res://graphics/player/pal_sword_red.png" type="Texture" id=8] -[ext_resource path="res://graphics/player/sg_stab.png" type="Texture" id=9] -[ext_resource path="res://graphics/player/sg_shoot_grounded.png" type="Texture" id=10] -[ext_resource path="res://graphics/player/sword_stab.png" type="Texture" id=11] -[ext_resource path="res://graphics/player/sg_shoot_air.png" type="Texture" id=12] -[ext_resource path="res://scripts/recolor.tres" type="Shader" id=13] -[ext_resource path="res://graphics/player/sg_doublejump.png" type="Texture" id=14] -[ext_resource path="res://graphics/particles/blood.png" type="Texture" id=15] -[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=16] +[ext_resource path="res://graphics/player/sg_zap.png" type="Texture" id=2] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=3] +[ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=4] +[ext_resource path="res://addons/godot_state_charts/parallel_state.gd" type="Script" id=5] +[ext_resource path="res://addons/godot_state_charts/state_chart.gd" type="Script" id=6] +[ext_resource path="res://ui/theme.tres" type="Theme" id=7] +[ext_resource path="res://addons/godot_state_charts/state_chart_debug.gd" type="Script" id=8] +[ext_resource path="res://addons/godot_state_charts/compound_state.gd" type="Script" id=9] +[ext_resource path="res://addons/godot_state_charts/transition.gd" type="Script" id=10] +[ext_resource path="res://addons/godot_state_charts/atomic_state.gd" type="Script" id=11] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=12] +[ext_resource path="res://shaders/electricity.gdshader" type="Shader" id=13] +[ext_resource path="res://graphics/player/sg.png" type="Texture" id=14] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=15] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=16] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=18] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=25] -[sub_resource type="ShaderMaterial" id=38] -resource_local_to_scene = true -shader = ExtResource( 4 ) +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = true -shader_param/palette = ExtResource( 6 ) +shader_param/palette = ExtResource( 12 ) -[sub_resource type="ShaderMaterial" id=28] +[sub_resource type="Curve" id=34] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=32] shader = ExtResource( 13 ) -shader_param/palette = ExtResource( 8 ) +shader_param/arc_speed = 4.0 +shader_param/arc_fps = 10.0 +shader_param/arc_scale = 8.0 +shader_param/arc_threshold = 0.15 +shader_param/arc_color = Color( 1, 0.93, 0, 1 ) +shader_param/gamma = 2.0 +shader_param/flash_rate = 3.0 +shader_param/flash_intensity = 0.2 +shader_param/background_color = Color( 0, 0, 0, 0 ) -[sub_resource type="RectangleShape2D" id=6] +[sub_resource type="AtlasTexture" id=28] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 20, 20 ) + +[sub_resource type="AtlasTexture" id=29] +atlas = ExtResource( 2 ) +region = Rect2( 20, 0, 20, 20 ) + +[sub_resource type="SpriteFrames" id=30] +animations = [ { +"frames": [ SubResource( 28 ), SubResource( 29 ) ], +"loop": true, +"name": "zap", +"speed": 15.0 +} ] + +[sub_resource type="Shader" id=26] +code = "// Recolor +shader_type canvas_item; + +uniform sampler2D palette : hint_albedo; + +void fragment() { + vec4 result_color = texture(palette, COLOR.rg); + result_color.a = 1.0; + COLOR = result_color; +}" + +[sub_resource type="ShaderMaterial" id=27] +shader = SubResource( 26 ) +shader_param/palette = ExtResource( 12 ) + +[sub_resource type="Curve" id=13] +_data = [ Vector2( 0, 1 ), 0.0, -0.0636948, 0, 0, Vector2( 1, 0 ), -3.43886, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=24] +shader = ExtResource( 3 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 12 ) + +[sub_resource type="RectangleShape2D" id=2] extents = Vector2( 2.5, 5 ) -[sub_resource type="RectangleShape2D" id=39] +[sub_resource type="RectangleShape2D" id=3] extents = Vector2( 2.5, 5 ) -[sub_resource type="Animation" id=29] -resource_name = "climb" +[sub_resource type="RectangleShape2D" id=16] +extents = Vector2( 2.5, 2.5 ) + +[sub_resource type="Animation" id=5] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ ExtResource( 14 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Graphics/Sprite:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Graphics/Sprite:hframes") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 8 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Graphics/Sprite:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Graphics/ZapSprite:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Graphics/ZapSprite:frame") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Graphics/ZapSprite:playing") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} + +[sub_resource type="Animation" id=18] +resource_name = "blink" +length = 0.2 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 96, 97, 96 ] +} + +[sub_resource type="Animation" id=31] length = 0.3 loop = true step = 0.15 tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/path = NodePath("Graphics/Sprite:rotation_degrees") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { "times": PoolRealArray( 0, 0.15 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, -"values": [ Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 7 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ null ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] +"values": [ 56, 57 ] } -[sub_resource type="Animation" id=35] -resource_name = "doublejump" -length = 0.3 +[sub_resource type="Animation" id=12] +resource_name = "double_jump" +length = 0.32 loop = true -step = 0.038 +step = 0.04 tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/path = NodePath("Graphics/Sprite:rotation_degrees") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 0.038, 0.076, 0.114, 0.152, 0.19, 0.228, 0.266 ), +"times": PoolRealArray( 0, 0.08, 0.16, 0.24 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 0.0, 90.0, 180.0, 270.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.04, 0.08, 0.12, 0.16, 0.2, 0.24, 0.28 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 1, -"values": [ Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 14 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ null ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0, 0.038, 0.076, 0.114, 0.152, 0.19, 0.228, 0.266, 0.3 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), -"update": 1, -"values": [ 0.0, 0.0, 90.0, 90.0, 180.0, 180.0, 270.0, 270.0, 360.0 ] +"values": [ 24, 25, 24, 25, 24, 25, 24, 25 ] } -[sub_resource type="Animation" id=30] -resource_name = "idle" -length = 0.5 -loop = true -step = 0.06 +[sub_resource type="Animation" id=23] +resource_name = "drown" +length = 10.0 +step = 0.05 tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/path = NodePath("Graphics/Sprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), +"times": PoolRealArray( 0, 0.05, 0.1, 0.8, 0.85, 0.9, 1.1, 1.15 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 1, -"values": [ Rect2( 0, 0, 20, 20 ) ] +"values": [ 112, 113, 114, 115, 116, 117, 118, 119 ] } tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") +tracks/1/path = NodePath("Graphics/Sprite:position") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 3 ) ] +"times": PoolRealArray( 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 0, -10 ), Vector2( 0, -10 ) ] } -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") +tracks/2/type = "method" +tracks/2/path = NodePath("StateChart") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ null ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=31] -resource_name = "jump" -length = 0.5 -loop = true -step = 0.06 -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ Rect2( 1, 0, 20, 20 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 5 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ null ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=37] -resource_name = "shoot air" -length = 0.5 -step = 0.06 -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ Rect2( 0, 0, 20, 20 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 12 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ null ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} -tracks/5/type = "method" -tracks/5/path = NodePath(".") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/keys = { -"times": PoolRealArray( 0 ), +"times": PoolRealArray( 1.3 ), "transitions": PoolRealArray( 1 ), "values": [ { -"args": [ ], -"method": "spawn_arrow" +"args": [ "float_up" ], +"method": "send_event" } ] } - -[sub_resource type="Animation" id=36] -resource_name = "shoot grounded" -length = 0.5 -step = 0.06 -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0, 0.06, 0.12, 0.24, 0.3, 0.36 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), -"update": 1, -"values": [ Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 40, 0, 20, 20 ), Rect2( 60, 0, 20, 20 ), Rect2( 80, 0, 20, 20 ), Rect2( 100, 0, 20, 20 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 10 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") +tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false @@ -426,54 +339,27 @@ tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ null ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), "update": 0, "values": [ 0.0 ] } -tracks/5/type = "method" -tracks/5/path = NodePath(".") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/keys = { -"times": PoolRealArray( 0.24 ), -"transitions": PoolRealArray( 1 ), -"values": [ { -"args": [ ], -"method": "spawn_arrow" -} ] -} -[sub_resource type="Animation" id=32] -resource_name = "stab" -length = 0.3 -step = 0.06 +[sub_resource type="Animation" id=20] +resource_name = "duck" +length = 0.001 tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/path = NodePath("Graphics/Sprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 0.06 ), -"transitions": PoolRealArray( 1, 1 ), +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), "update": 1, -"values": [ Rect2( 0, 0, 32, 32 ), Rect2( 32, 0, 32, 32 ) ] +"values": [ 32 ] } tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false @@ -481,64 +367,16 @@ tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 9 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0, 0.06 ), -"transitions": PoolRealArray( 1, 1 ), -"update": 1, -"values": [ true, false ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 11 ) ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("SwordSprite:region_rect") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0, 0.06 ), -"transitions": PoolRealArray( 1, 1 ), -"update": 1, -"values": [ Rect2( 0, 0, 32, 32 ), Rect2( 32, 0, 32, 32 ) ] -} -tracks/5/type = "value" -tracks/5/path = NodePath("Sprite:rotation_degrees") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), "update": 0, "values": [ 0.0 ] } -[sub_resource type="Animation" id=33] -resource_name = "walk" +[sub_resource type="Animation" id=22] +resource_name = "edge" length = 0.4 loop = true tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/path = NodePath("Graphics/Sprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false @@ -547,10 +385,10 @@ tracks/0/keys = { "times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), "transitions": PoolRealArray( 1, 1, 1, 1 ), "update": 1, -"values": [ Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 40, 0, 20, 20 ), Rect2( 60, 0, 20, 20 ) ] +"values": [ 88, 89, 90, 91 ] } tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false @@ -558,11 +396,210 @@ tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=15] +resource_name = "fall" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), "update": 1, -"values": [ ExtResource( 2 ) ] +"values": [ 72 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=14] +resource_name = "fall_scared" +length = 0.2 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ 80, 81 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.00238396 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=6] +resource_name = "idle" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=8] +resource_name = "jump" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 16 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=21] +resource_name = "ladder_jump" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=17] +resource_name = "push" +length = 0.8 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.2, 0.4, 0.6 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 64, 65, 66, 67 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=25] +resource_name = "respawn" +length = 0.4 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 120, 121, 122, 123, 124, 125, 126, 127 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] } tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") +tracks/2/path = NodePath("Graphics/Sprite:visible") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false @@ -574,7 +611,7 @@ tracks/2/keys = { "values": [ true ] } tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") +tracks/3/path = NodePath("Graphics/ZapSprite:playing") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false @@ -583,10 +620,10 @@ tracks/3/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, -"values": [ null ] +"values": [ false ] } tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") +tracks/4/path = NodePath("Graphics/ZapSprite:frame") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false @@ -594,100 +631,331 @@ tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Graphics/ZapSprite:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=11] +resource_name = "shoot_airborne" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 48 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), "update": 0, "values": [ 0.0 ] } -[sub_resource type="RectangleShape2D" id=34] -extents = Vector2( 6, 7 ) +[sub_resource type="Animation" id=10] +resource_name = "shoot_grounded" +length = 0.25 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.03, 0.06, 0.12, 0.15, 0.18 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 40, 41, 42, 43, 44, 45 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/2/type = "method" +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.12 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "spawn_arrow" +} ] +} +tracks/3/type = "method" +tracks/3/path = NodePath("StateChart") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.25 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "shoot_end" ], +"method": "send_event" +} ] +} -[sub_resource type="Curve" id=41] -_data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] +[sub_resource type="Animation" id=19] +resource_name = "stim" +length = 0.3 +loop = true +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.15 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ 104, 105 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} -[sub_resource type="Curve" id=43] -_data = [ Vector2( 0, 1 ), 0.0, -0.0636948, 0, 0, Vector2( 1, 0 ), -3.43886, 0.0, 0, 0 ] +[sub_resource type="Animation" id=7] +resource_name = "walk" +length = 0.4 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 8, 9, 10, 11 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} -[node name="Player" type="KinematicBody2D"] -collision_layer = 2 -collision_mask = 5 +[sub_resource type="Animation" id=33] +resource_name = "zap" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/ZapSprite:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Graphics/ZapSprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Graphics/ZapSprite:playing") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/4/type = "method" +tracks/4/path = NodePath("StateChart") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "respawn" ], +"method": "send_event" +} ] +} +tracks/5/type = "method" +tracks/5/path = NodePath(".") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "make_blood" +} ] +} + +[sub_resource type="StyleBoxEmpty" id=4] + +[node name="Player" type="KinematicBody2D" groups=["player"]] +collision_layer = 128 +collision_mask = 7 +moving_platform_apply_velocity_on_leave = 2 script = ExtResource( 1 ) +walk_acceleration_frames = 4.0 +gravity = 700.0 +jump_force = 140.0 +double_jump_force = 124.0 -[node name="Trail" type="Node" parent="."] +[node name="Graphics" type="Node2D" parent="."] -[node name="Sprite" type="Sprite" parent="."] -material = SubResource( 38 ) -texture = ExtResource( 3 ) -region_enabled = true -region_rect = Rect2( 0, 0, 20, 20 ) +[node name="Sprite" type="Sprite" parent="Graphics"] +unique_name_in_owner = true +light_mask = 5 +material = SubResource( 1 ) +position = Vector2( 0, -10 ) +texture = ExtResource( 14 ) +offset = Vector2( 0, -6 ) +hframes = 8 +vframes = 20 -[node name="SwordSprite" type="Sprite" parent="."] -material = SubResource( 28 ) -region_enabled = true -region_rect = Rect2( 0, 0, 32, 32 ) - -[node name="Area2D" type="Area2D" parent="." groups=["player"]] -position = Vector2( 0, 3 ) -collision_layer = 9 - -[node name="CollisionShape2D2" type="CollisionShape2D" parent="Area2D"] -position = Vector2( 0.5, 2 ) -shape = SubResource( 6 ) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="." groups=["sword"]] -position = Vector2( 0.5, 5 ) -shape = SubResource( 39 ) - -[node name="ClimbRay" type="RayCast2D" parent="."] -position = Vector2( 0.5, 10 ) -enabled = true -cast_to = Vector2( 0, -10 ) -collision_mask = 4 -collide_with_areas = true -collide_with_bodies = false - -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -anims/climb = SubResource( 29 ) -anims/doublejump = SubResource( 35 ) -anims/idle = SubResource( 30 ) -anims/jump = SubResource( 31 ) -"anims/shoot air" = SubResource( 37 ) -"anims/shoot grounded" = SubResource( 36 ) -anims/stab = SubResource( 32 ) -anims/walk = SubResource( 33 ) - -[node name="SwordArea" type="Area2D" parent="." groups=["sword"]] +[node name="Sparkles" type="CPUParticles2D" parent="Graphics/Sprite"] +unique_name_in_owner = true visible = false - -[node name="SwordHitBox" type="CollisionShape2D" parent="SwordArea"] -position = Vector2( 0, 3 ) -shape = SubResource( 34 ) -disabled = true - -[node name="DeathSplatter" type="CPUParticles2D" parent="."] -pause_mode = 2 -emitting = false -amount = 16 -lifetime = 0.3 -one_shot = true -explosiveness = 0.9 -local_coords = false -texture = ExtResource( 15 ) +light_mask = 0 +amount = 2 +lifetime = 2.0 +texture = ExtResource( 16 ) emission_shape = 2 -emission_rect_extents = Vector2( 4, 4 ) -direction = Vector2( 0, -1 ) -spread = 180.0 -gravity = Vector2( 0, 50 ) -initial_velocity = 60.0 -initial_velocity_random = 0.9 -damping = 2.0 +emission_rect_extents = Vector2( 4, 10 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 angle = 720.0 angle_random = 1.0 -scale_amount = 0.5 -scale_amount_random = 1.0 -scale_amount_curve = SubResource( 41 ) +scale_amount_curve = SubResource( 34 ) +color = Color( 1, 0.972549, 0.52549, 1 ) +script = ExtResource( 15 ) -[node name="DustParticles" type="CPUParticles2D" parent="."] -position = Vector2( 0, 12 ) +[node name="ZapSprite" type="AnimatedSprite" parent="Graphics"] +visible = false +material = SubResource( 32 ) +position = Vector2( 0, -10 ) +frames = SubResource( 30 ) +animation = "zap" + +[node name="DissolveParticles" type="CPUParticles2D" parent="Graphics"] +unique_name_in_owner = true +material = SubResource( 27 ) +position = Vector2( -9.5, -19.5 ) +emitting = false +amount = 256 +lifetime = 0.8 +one_shot = true +explosiveness = 1.0 +lifetime_randomness = 0.9 +emission_shape = 3 +emission_points = PoolVector2Array( 4, 6, 4, 7, 4, 8, 4, 9, 4, 10, 5, 2, 5, 3, 5, 4, 5, 5, 5, 6, 5, 7, 5, 8, 5, 9, 5, 10, 5, 11, 6, 1, 6, 2, 6, 3, 6, 4, 6, 5, 6, 6, 6, 7, 6, 8, 6, 9, 6, 10, 6, 11, 6, 12, 6, 13, 6, 14, 6, 15, 6, 16, 7, 0, 7, 1, 7, 2, 7, 3, 7, 4, 7, 5, 7, 6, 7, 7, 7, 8, 7, 9, 7, 10, 7, 11, 7, 12, 7, 13, 7, 14, 7, 15, 7, 16, 7, 17, 7, 18, 7, 19, 8, 0, 8, 1, 8, 2, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7, 8, 8, 8, 9, 8, 10, 8, 11, 8, 12, 8, 13, 8, 14, 8, 15, 8, 16, 8, 17, 8, 18, 8, 19, 9, 0, 9, 1, 9, 2, 9, 3, 9, 4, 9, 5, 9, 6, 9, 7, 9, 8, 9, 9, 9, 10, 9, 11, 9, 12, 9, 13, 9, 14, 9, 15, 9, 16, 9, 17, 9, 18, 9, 19, 10, 0, 10, 1, 10, 2, 10, 3, 10, 4, 10, 5, 10, 6, 10, 7, 10, 8, 10, 9, 10, 10, 10, 11, 10, 12, 10, 13, 10, 14, 10, 15, 10, 16, 10, 17, 10, 18, 10, 19, 11, 0, 11, 1, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 11, 11, 11, 12, 11, 13, 11, 14, 11, 15, 11, 16, 11, 17, 11, 18, 11, 19, 12, 0, 12, 1, 12, 2, 12, 3, 12, 4, 12, 5, 12, 6, 12, 7, 12, 8, 12, 9, 12, 10, 12, 11, 12, 12, 12, 13, 12, 14, 12, 15, 12, 16, 12, 17, 12, 18, 12, 19, 13, 0, 13, 1, 13, 2, 13, 3, 13, 4, 13, 5, 13, 6, 13, 7, 13, 8, 13, 9, 13, 10, 13, 11, 13, 12, 13, 13, 13, 14, 13, 15, 13, 16, 13, 17, 13, 18, 13, 19, 14, 1, 14, 2, 14, 3, 14, 4, 14, 5, 14, 6, 14, 7, 14, 8, 14, 9, 14, 10, 14, 11, 15, 2, 15, 3, 15, 4, 15, 5, 15, 6, 15, 7, 15, 8, 15, 9, 15, 10, 15, 11 ) +emission_colors = PoolColorArray( 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.372549, 0.623529, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.372549, 1, 1, 0.87451, 0.372549, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.372549, 0.623529, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.623529, 0.623529, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.372549, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.372549, 0.623529, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.372549, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.121569, 0.623529, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.623529, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.623529, 0.623529, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.372549, 1, 1, 0.87451, 0.372549, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1 ) +direction = Vector2( 0, -1 ) +spread = 15.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 4.0 +initial_velocity_random = 1.0 + +[node name="ArrowPosition" type="Position2D" parent="Graphics"] +unique_name_in_owner = true +position = Vector2( 5, -7 ) +__meta__ = { +"_gizmo_extents_": 2.0 +} + +[node name="DeathSplatterPosition" type="Position2D" parent="Graphics"] +unique_name_in_owner = true +position = Vector2( 0, -10 ) +__meta__ = { +"_gizmo_extents_": 2.0 +} + +[node name="DustParticles" type="CPUParticles2D" parent="Graphics"] +unique_name_in_owner = true +position = Vector2( 0, 2 ) z_index = 1 emitting = false amount = 5 @@ -696,7 +964,7 @@ one_shot = true explosiveness = 0.9 fract_delta = false local_coords = false -texture = ExtResource( 16 ) +texture = ExtResource( 18 ) emission_shape = 2 emission_rect_extents = Vector2( 5, 0 ) direction = Vector2( 0, -1 ) @@ -708,7 +976,623 @@ angle = 720.0 angle_random = 1.0 scale_amount = 0.25 scale_amount_random = 0.5 -scale_amount_curve = SubResource( 43 ) +scale_amount_curve = SubResource( 13 ) +color = Color( 0.956863, 0.92549, 0.831373, 1 ) -[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] -[connection signal="area_entered" from="SwordArea" to="." method="_on_SwordArea_area_entered"] +[node name="PushableDetector" type="RayCast2D" parent="Graphics"] +unique_name_in_owner = true +position = Vector2( 3, -4 ) +cast_to = Vector2( 1, 0 ) +collision_mask = 4 + +[node name="EdgeDetector" type="RayCast2D" parent="Graphics"] +position = Vector2( 1, -1 ) +enabled = true +cast_to = Vector2( 0, 5 ) +collision_mask = 5 + +[node name="CFox" type="Sprite" parent="Graphics"] +unique_name_in_owner = true +visible = false +material = SubResource( 24 ) +position = Vector2( 0, -10 ) +texture = ExtResource( 4 ) + +[node name="BodyShape" type="CollisionShape2D" parent="."] +unique_name_in_owner = true +position = Vector2( 0.5, -5 ) +shape = SubResource( 2 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["player_hitbox"]] +unique_name_in_owner = true +visible = false +collision_layer = 11 +collision_mask = 32 + +[node name="GroundedShape" type="CollisionShape2D" parent="Hitbox"] +unique_name_in_owner = true +position = Vector2( 0.5, -5 ) +shape = SubResource( 3 ) + +[node name="AirborneShape" type="CollisionShape2D" parent="Hitbox"] +unique_name_in_owner = true +position = Vector2( 0.5, -7.5 ) +shape = SubResource( 16 ) + +[node name="LadderDetector" type="RayCast2D" parent="."] +unique_name_in_owner = true +position = Vector2( 0.5, -0.5 ) +enabled = true +cast_to = Vector2( 0, -9.5 ) +collision_mask = 64 +collide_with_areas = true +collide_with_bodies = false + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 5 ) +anims/blink = SubResource( 18 ) +anims/climb = SubResource( 31 ) +anims/double_jump = SubResource( 12 ) +anims/drown = SubResource( 23 ) +anims/duck = SubResource( 20 ) +anims/edge = SubResource( 22 ) +anims/fall = SubResource( 15 ) +anims/fall_scared = SubResource( 14 ) +anims/idle = SubResource( 6 ) +anims/jump = SubResource( 8 ) +anims/ladder_jump = SubResource( 21 ) +anims/push = SubResource( 17 ) +anims/respawn = SubResource( 25 ) +anims/shoot_airborne = SubResource( 11 ) +anims/shoot_grounded = SubResource( 10 ) +anims/stim = SubResource( 19 ) +anims/walk = SubResource( 7 ) +anims/zap = SubResource( 33 ) + +[node name="StateChart" type="Node" parent="."] +script = ExtResource( 6 ) +auto_initialize = false + +[node name="Root" type="Node" parent="StateChart"] +script = ExtResource( 5 ) +__meta__ = { +"_editor_description_": "" +} + +[node name="Movement" type="Node" parent="StateChart/Root"] +process_priority = 10 +script = ExtResource( 9 ) +__meta__ = { +"_editor_description_": "higher process priority so it can do move_and_slide after everything else" +} +initial_state = NodePath("Grounded") + +[node name="On Drown" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 10 ) +to = NodePath("../Inactive") +event = "drown" + +[node name="On Zapped" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 10 ) +to = NodePath("../Inactive") +event = "zapped" + +[node name="On Died" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 10 ) +to = NodePath("../Appearing") +event = "died" + +[node name="On StartTeleport" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 10 ) +to = NodePath("../Teleporting") +event = "start_teleport" + +[node name="Grounded" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 9 ) +__meta__ = { +"_editor_description_": "is on the ground" +} +initial_state = NodePath("CanWalk") + +[node name="On AirborneBeta" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 10 ) +to = NodePath("../../Airborne/Falling/BetaFalling") +event = "airborne" +guard_expression = "beta_gameplay" + +[node name="On Airborne" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 10 ) +to = NodePath("../../Airborne/Falling/CoyoteFalling") +event = "airborne" + +[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "enter jump state when the jump button is pressed" +} +to = NodePath("../../Airborne/Jump/NormalJump") +event = "jump" + +[node name="On Duck" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 10 ) +to = NodePath("../Ducking") +event = "duck_pressed" + +[node name="On LadderTouched" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 10 ) +to = NodePath("../../Climbing") +event = "ladder_touched" + +[node name="CanWalk" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 9 ) +__meta__ = { +"_editor_description_": "can walk by moving left and right" +} +initial_state = NodePath("Still") + +[node name="On Shoot" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +script = ExtResource( 10 ) +to = NodePath("../../Shooting") +event = "shoot" +guard_expression = "can_shoot" + +[node name="On PushStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +script = ExtResource( 10 ) +to = NodePath("../../Pushing") +event = "push_start" + +[node name="Still" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +script = ExtResource( 11 ) + +[node name="On WalkStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Still"] +script = ExtResource( 10 ) +to = NodePath("../../Walking") +event = "walk_start" + +[node name="On Edge" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Still"] +script = ExtResource( 10 ) +to = NodePath("../../Edge") +event = "edge" + +[node name="On Timeout" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Still"] +script = ExtResource( 10 ) +to = NodePath("../../Blinking") +delay = 1.0 + +[node name="Walking" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +script = ExtResource( 11 ) + +[node name="On WalkStop" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Walking"] +script = ExtResource( 10 ) +to = NodePath("../../Still") +event = "walk_stop" + +[node name="Blinking" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +unique_name_in_owner = true +script = ExtResource( 11 ) + +[node name="On Timeout" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Blinking"] +script = ExtResource( 10 ) +to = NodePath("../../Stimming") +delay = 10.0 + +[node name="On WalkStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Blinking"] +script = ExtResource( 10 ) +to = NodePath("../../Walking") +event = "walk_start" + +[node name="Stimming" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +script = ExtResource( 11 ) + +[node name="On WalkStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Stimming"] +script = ExtResource( 10 ) +to = NodePath("../../Walking") +event = "walk_start" + +[node name="Edge" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +script = ExtResource( 11 ) + +[node name="On WalkStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Edge"] +script = ExtResource( 10 ) +to = NodePath("../../Walking") +event = "walk_start" + +[node name="On OffEdge" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Edge"] +script = ExtResource( 10 ) +to = NodePath("../../Still") +event = "off_edge" + +[node name="Ducking" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 11 ) + +[node name="On DuckReleased" type="Node" parent="StateChart/Root/Movement/Grounded/Ducking"] +script = ExtResource( 10 ) +to = NodePath("../../CanWalk/Still") +event = "duck_released" + +[node name="On Shoot" type="Node" parent="StateChart/Root/Movement/Grounded/Ducking"] +script = ExtResource( 10 ) +to = NodePath("../../Shooting") +event = "shoot" +guard_expression = "can_shoot" + +[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Grounded/Ducking"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "enter jump state when the jump button is pressed" +} +to = NodePath("../../../Airborne/Jump/NormalJump") +event = "jump" + +[node name="Shooting" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 11 ) +consumed_events = [ "jump", "duck_pressed" ] + +[node name="On ShootEnd" type="Node" parent="StateChart/Root/Movement/Grounded/Shooting"] +script = ExtResource( 10 ) +to = NodePath("../../CanWalk") +event = "shoot_end" + +[node name="Pushing" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 11 ) + +[node name="On PushStop" type="Node" parent="StateChart/Root/Movement/Grounded/Pushing"] +script = ExtResource( 10 ) +to = NodePath("../../CanWalk") +event = "push_stop" + +[node name="Airborne" type="Node" parent="StateChart/Root/Movement"] +process_priority = 5 +script = ExtResource( 9 ) +__meta__ = { +"_editor_description_": "SG is in the air and falling DOWN, better think fast!" +} +initial_state = NodePath("Falling") + +[node name="On Jump If Redfeather" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "enter double jump state when the jump button is pressed" +} +to = NodePath("../Jump/NormalJump") +event = "jump" +guard_expression = "red_feather" + +[node name="On Grounded" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 10 ) +to = NodePath("../../Grounded") +event = "grounded" + +[node name="On Shoot" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 10 ) +to = NodePath("../AirShooting") +event = "shoot" +guard_expression = "can_shoot" + +[node name="On LadderTouched" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 10 ) +to = NodePath("../../Climbing") +event = "ladder_touched" + +[node name="Jump" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 9 ) +initial_state = NodePath("NormalJump") + +[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "enter double jump state when the jump button is pressed" +} +to = NodePath("../../DoubleJump") +event = "jump" + +[node name="On JumpPeak" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] +script = ExtResource( 10 ) +to = NodePath("../../Falling/NormalFalling") +event = "jump_peak" + +[node name="NormalJump" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] +script = ExtResource( 11 ) + +[node name="On JumpReleased" type="Node" parent="StateChart/Root/Movement/Airborne/Jump/NormalJump"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "" +} +to = NodePath("../../../Falling/NormalFalling") +event = "jump_released" + +[node name="LadderJump" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] +script = ExtResource( 11 ) + +[node name="Falling" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 9 ) +initial_state = NodePath("NormalFalling") + +[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "enter double jump state when the jump button is pressed" +} +to = NodePath("../../DoubleJump") +event = "jump" + +[node name="CoyoteFalling" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] +script = ExtResource( 11 ) + +[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Airborne/Falling/CoyoteFalling"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "enter jump state when the jump button is pressed" +} +to = NodePath("../../../Jump/NormalJump") +event = "jump" + +[node name="On CoyoteTimeout" type="Node" parent="StateChart/Root/Movement/Airborne/Falling/CoyoteFalling"] +script = ExtResource( 10 ) +to = NodePath("../../NormalFalling") +delay = 0.067 + +[node name="NormalFalling" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] +script = ExtResource( 11 ) + +[node name="BetaFalling" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] +script = ExtResource( 11 ) + +[node name="ScaredFalling" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] +script = ExtResource( 11 ) + +[node name="DoubleJump" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 11 ) + +[node name="AirShooting" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 11 ) + +[node name="Climbing" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 11 ) +__meta__ = { +"_editor_description_": "stuck to ladder" +} + +[node name="On LadderPeak" type="Node" parent="StateChart/Root/Movement/Climbing"] +script = ExtResource( 10 ) +to = NodePath("../../Airborne/Jump/NormalJump") +event = "ladder_peak" + +[node name="On LadderJump" type="Node" parent="StateChart/Root/Movement/Climbing"] +script = ExtResource( 10 ) +to = NodePath("../../Airborne/Jump/NormalJump") +event = "ladder_jump" + +[node name="On LadderDetach" type="Node" parent="StateChart/Root/Movement/Climbing"] +script = ExtResource( 10 ) +to = NodePath("../../Airborne/Falling/NormalFalling") +event = "ladder_detach" + +[node name="Inactive" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 11 ) +__meta__ = { +"_editor_description_": "player can not move or do anything, immobile" +} + +[node name="On GetReal" type="Node" parent="StateChart/Root/Movement/Inactive"] +script = ExtResource( 10 ) +to = NodePath("../../Grounded") +event = "get_real" + +[node name="On Appear" type="Node" parent="StateChart/Root/Movement/Inactive"] +script = ExtResource( 10 ) +to = NodePath("../../Appearing") +event = "appear" + +[node name="On Respawn" type="Node" parent="StateChart/Root/Movement/Inactive"] +script = ExtResource( 10 ) +to = NodePath("../../Appearing") +event = "respawn" + +[node name="Teleporting" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 11 ) +__meta__ = { +"_editor_description_": "player can not move or do anything, immobile" +} + +[node name="On GetReal" type="Node" parent="StateChart/Root/Movement/Teleporting"] +script = ExtResource( 10 ) +to = NodePath("../../Grounded") +event = "get_real" + +[node name="Appearing" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 11 ) + +[node name="On Delay" type="Node" parent="StateChart/Root/Movement/Appearing"] +script = ExtResource( 10 ) +to = NodePath("../../Grounded") +delay = 0.4 + +[node name="Health" type="Node" parent="StateChart/Root"] +script = ExtResource( 9 ) +initial_state = NodePath("Vulnerable") + +[node name="Vulnerable" type="Node" parent="StateChart/Root/Health"] +script = ExtResource( 11 ) + +[node name="On Hurt" type="Node" parent="StateChart/Root/Health/Vulnerable"] +script = ExtResource( 10 ) +to = NodePath("../../Dead") +event = "hurt" + +[node name="On Drown" type="Node" parent="StateChart/Root/Health/Vulnerable"] +script = ExtResource( 10 ) +to = NodePath("../../Drowning") +event = "drown" + +[node name="On BecomeInvulnerable" type="Node" parent="StateChart/Root/Health/Vulnerable"] +script = ExtResource( 10 ) +to = NodePath("../../Invulnerable") +event = "become_invulnerable" + +[node name="On Zapped" type="Node" parent="StateChart/Root/Health/Vulnerable"] +script = ExtResource( 10 ) +to = NodePath("../../Zapping") +event = "zapped" + +[node name="Invulnerable" type="Node" parent="StateChart/Root/Health"] +script = ExtResource( 11 ) + +[node name="Respawn" type="Node" parent="StateChart/Root/Health"] +script = ExtResource( 11 ) + +[node name="If Iframes" type="Node" parent="StateChart/Root/Health/Respawn"] +script = ExtResource( 10 ) +to = NodePath("../../Vulnerable") +delay = 0.5 +guard_expression = "use_iframes" + +[node name="On Timeout" type="Node" parent="StateChart/Root/Health/Respawn"] +script = ExtResource( 10 ) +to = NodePath("../../Vulnerable") +guard_expression = "!use_iframes" + +[node name="Dead" type="Node" parent="StateChart/Root/Health"] +script = ExtResource( 11 ) + +[node name="On Respawn" type="Node" parent="StateChart/Root/Health/Dead"] +script = ExtResource( 10 ) +to = NodePath("../../Respawn") +event = "respawn" +guard_expression = "can_respawn" + +[node name="Drowning" type="Node" parent="StateChart/Root/Health"] +script = ExtResource( 9 ) +initial_state = NodePath("DrownStart") + +[node name="On Respawn" type="Node" parent="StateChart/Root/Health/Drowning"] +script = ExtResource( 10 ) +to = NodePath("../../Respawn") +event = "respawn" +guard_expression = "can_respawn" + +[node name="DrownStart" type="Node" parent="StateChart/Root/Health/Drowning"] +script = ExtResource( 11 ) + +[node name="On FloatUp" type="Node" parent="StateChart/Root/Health/Drowning/DrownStart"] +script = ExtResource( 10 ) +to = NodePath("../../FloatingUp") +event = "float_up" + +[node name="FloatingUp" type="Node" parent="StateChart/Root/Health/Drowning"] +script = ExtResource( 11 ) + +[node name="Zapping" type="Node" parent="StateChart/Root/Health"] +script = ExtResource( 11 ) + +[node name="On Respawn" type="Node" parent="StateChart/Root/Health/Zapping"] +script = ExtResource( 10 ) +to = NodePath("../../Respawn") +event = "respawn" +guard_expression = "can_respawn" + +[node name="StateDebugLayer" type="CanvasLayer" parent="."] +layer = 128 + +[node name="StateChartDebug" type="Tree" parent="StateDebugLayer"] +visible = false +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -147.0 +margin_bottom = 137.0 +theme = ExtResource( 7 ) +custom_styles/bg = SubResource( 4 ) +script = ExtResource( 8 ) + +[node name="OxygenTimer" type="Timer" parent="."] +wait_time = 20.0 + +[node name="JumpPeakTimer" type="Timer" parent="."] +wait_time = 0.2 + +[node name="LabelLayerHack" type="Node2D" parent="."] +z_index = 1000 + +[node name="LowOxygenLabel" type="Label" parent="LabelLayerHack"] +unique_name_in_owner = true +material = ExtResource( 25 ) +margin_left = -8.0 +margin_top = -32.0 +margin_right = 8.0 +margin_bottom = -18.0 +theme = ExtResource( 7 ) +align = 1 + +[node name="ShieldTimer" type="Timer" parent="."] +wait_time = 0.5 + +[node name="Shield" type="Polygon2D" parent="."] +visible = false +position = Vector2( 1, -1 ) +scale = Vector2( 1.06667, 0.727273 ) +color = Color( 0.0352941, 0.796078, 0.854902, 0.470588 ) +polygon = PoolVector2Array( 0, -29, -8, -14.3333, -1, 4, 7, -14 ) + +[node name="ShieldCooldown" type="Timer" parent="."] +wait_time = 2.0 +one_shot = true + +[connection signal="tree_exited" from="." to="." method="_on_Player_tree_exited"] +[connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement" to="." method="_process_movement"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded" to="." method="_on_Grounded_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded" to="." method="_process_grounded"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded/CanWalk" to="." method="_process_horizontal_movement_grounded"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded/CanWalk" to="." method="_process_can_walk"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Still" to="." method="_on_Still_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Walking" to="." method="_on_Walking_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Blinking" to="." method="_on_Blinking_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Stimming" to="." method="_on_Stimming_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Edge" to="." method="_on_Edge_state_entered"] +[connection signal="event_received" from="StateChart/Root/Movement/Grounded/Ducking" to="." method="_on_Ducking_event_received"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Ducking" to="." method="_on_Ducking_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Shooting" to="." method="_on_Shooting_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Pushing" to="." method="_on_Pushing_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded/Pushing" to="." method="_process_pushing"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne" to="." method="reset_fall_speed"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne" to="." method="_on_Airborne_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne" to="." method="_process_gravity"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Jump" to="." method="_process_horizontal_movement"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Jump" to="." method="_process_jump"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Jump/NormalJump" to="." method="_on_NormalJump_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Movement/Airborne/Jump/NormalJump" to="." method="_on_NormalJump_state_exited"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Jump/LadderJump" to="." method="_on_LadderJump_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/CoyoteFalling" to="." method="_on_CoyoteFalling_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Falling/CoyoteFalling" to="." method="_process_horizontal_movement"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/NormalFalling" to="." method="_on_NormalFalling_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Falling/NormalFalling" to="." method="_process_horizontal_movement"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/BetaFalling" to="." method="_on_NormalFalling_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/BetaFalling" to="." method="_on_BetaFalling_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/ScaredFalling" to="." method="_on_ScaredFalling_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/DoubleJump" to="." method="_on_DoubleJump_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/DoubleJump" to="." method="reset_fall_speed"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/DoubleJump" to="." method="_process_horizontal_movement"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/AirShooting" to="." method="_on_AirShooting_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/AirShooting" to="." method="_process_horizontal_movement"] +[connection signal="state_entered" from="StateChart/Root/Movement/Climbing" to="." method="_on_Climbing_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Movement/Climbing" to="." method="_on_Climbing_state_exited"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Climbing" to="." method="_process_climbing"] +[connection signal="state_entered" from="StateChart/Root/Movement/Inactive" to="." method="_on_Inactive_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Movement/Inactive" to="." method="_on_Inactive_state_exited"] +[connection signal="state_entered" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Inactive_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Teleporting_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Inactive_state_exited"] +[connection signal="state_entered" from="StateChart/Root/Movement/Appearing" to="." method="_on_Inactive_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Appearing" to="." method="_on_Appearing_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Movement/Appearing" to="." method="_on_Inactive_state_exited"] +[connection signal="state_entered" from="StateChart/Root/Health/Respawn" to="." method="_on_Respawn_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Health/Dead" to="." method="_on_Dead_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Health/Drowning" to="." method="_on_Drowning_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Health/Drowning" to="." method="_on_Drowning_state_exited"] +[connection signal="state_physics_processing" from="StateChart/Root/Health/Drowning/FloatingUp" to="." method="_process_floating_up"] +[connection signal="state_entered" from="StateChart/Root/Health/Zapping" to="." method="_on_Zapping_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Health/Zapping" to="." method="_on_Zapping_state_exited"] +[connection signal="timeout" from="OxygenTimer" to="." method="_on_OxygenTimer_timeout"] +[connection signal="timeout" from="ShieldTimer" to="." method="_on_ShieldTimer_timeout"] +[connection signal="timeout" from="ShieldCooldown" to="." method="_on_ShieldCooldown_timeout"] diff --git a/objects/player/player_death_particles.tscn b/objects/player/player_death_particles.tscn new file mode 100644 index 0000000..5528792 --- /dev/null +++ b/objects/player/player_death_particles.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://graphics/particles/blood.png" type="Texture" id=1] + +[sub_resource type="Curve" id=41] +_data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] + +[node name="DeathSplatter" type="CPUParticles2D"] +pause_mode = 2 +emitting = false +amount = 16 +lifetime = 0.3 +one_shot = true +explosiveness = 0.9 +local_coords = false +texture = ExtResource( 1 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 50 ) +initial_velocity = 60.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 41 ) diff --git a/objects/player/player_stain.gd b/objects/player/player_stain.gd new file mode 100644 index 0000000..f958696 --- /dev/null +++ b/objects/player/player_stain.gd @@ -0,0 +1,18 @@ +extends Light2D + + +export var lifetime: float = 5.0 + + +func _ready() -> void: + rotation = randf() * TAU + + +func _process(delta: float) -> void: + lifetime -= delta + if lifetime < 1.0: + global_position.y += 4.0 * delta + if lifetime < 0.5: + scale = Vector2(lifetime * 2.0, lifetime * 2.0) + if lifetime <= 0.0: + queue_free() diff --git a/objects/player/player_stain.tscn b/objects/player/player_stain.tscn new file mode 100644 index 0000000..9c48627 --- /dev/null +++ b/objects/player/player_stain.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=1] +[ext_resource path="res://objects/player/player_stain.gd" type="Script" id=2] + +[node name="PlayerStain" type="Light2D"] +texture = ExtResource( 1 ) +mode = 2 +range_item_cull_mask = 4 +script = ExtResource( 2 ) diff --git a/objects/respawn_point.gd b/objects/respawn_point.gd index b7b5792..63329a0 100644 --- a/objects/respawn_point.gd +++ b/objects/respawn_point.gd @@ -4,10 +4,10 @@ export var match_h = false export var match_v = true func _on_RespawnPoint_area_entered(area): - if area.is_in_group("player"): + if area.is_in_group("player_hitbox"): if Game.get_sector(global_position) != Game.get_sector(Game.respawn_point): var player = area.get_parent() Game.respawn_point = Vector2( player.global_position.x if match_h else global_position.x, - player.global_position.y if match_v else global_position.y - 10 + player.global_position.y if match_v else global_position.y ) diff --git a/objects/respawn_point.tscn b/objects/respawn_point.tscn index 411d84c..7c9be0d 100644 --- a/objects/respawn_point.tscn +++ b/objects/respawn_point.tscn @@ -3,9 +3,7 @@ [ext_resource path="res://objects/respawn_point.gd" type="Script" id=1] [node name="RespawnPoint" type="Area2D"] -collision_layer = 0 collision_mask = 2 -monitorable = false script = ExtResource( 1 ) [connection signal="area_entered" from="." to="." method="_on_RespawnPoint_area_entered"] diff --git a/project.godot b/project.godot index 45820f4..f9aa96b 100644 --- a/project.godot +++ b/project.godot @@ -9,36 +9,127 @@ config_version=4 _global_script_classes=[ { +"base": "State", +"class": "AtomicState", +"language": "GDScript", +"path": "res://addons/godot_state_charts/atomic_state.gd" +}, { +"base": "Node2D", +"class": "BallSnake", +"language": "GDScript", +"path": "res://scripts/ball_snake.gd" +}, { +"base": "State", +"class": "CompoundState", +"language": "GDScript", +"path": "res://addons/godot_state_charts/compound_state.gd" +}, { "base": "Resource", "class": "LevelEntry", "language": "GDScript", "path": "res://scripts/level_entry.gd" +}, { +"base": "Node", +"class": "MainMenu", +"language": "GDScript", +"path": "res://menus/main_menu.gd" +}, { +"base": "ImageTexture", +"class": "PaletteTexture", +"language": "GDScript", +"path": "res://scripts/palette_texture.gd" +}, { +"base": "State", +"class": "ParallelState", +"language": "GDScript", +"path": "res://addons/godot_state_charts/parallel_state.gd" +}, { +"base": "HBoxContainer", +"class": "RadioButtons", +"language": "GDScript", +"path": "res://objects/hud/radio_buttons.gd" +}, { +"base": "Node", +"class": "State", +"language": "GDScript", +"path": "res://addons/godot_state_charts/state.gd" +}, { +"base": "Node", +"class": "StateChart", +"language": "GDScript", +"path": "res://addons/godot_state_charts/state_chart.gd" +}, { +"base": "Tree", +"class": "StateChartDebug", +"language": "GDScript", +"path": "res://addons/godot_state_charts/state_chart_debug.gd" +}, { +"base": "Node", +"class": "Transition", +"language": "GDScript", +"path": "res://addons/godot_state_charts/transition.gd" } ] _global_script_class_icons={ -"LevelEntry": "" +"AtomicState": "res://addons/godot_state_charts/atomic_state.svg", +"BallSnake": "", +"CompoundState": "res://addons/godot_state_charts/compound_state.svg", +"LevelEntry": "", +"MainMenu": "", +"PaletteTexture": "", +"ParallelState": "res://addons/godot_state_charts/parallel_state.svg", +"RadioButtons": "", +"State": "res://addons/godot_state_charts/state.svg", +"StateChart": "res://addons/godot_state_charts/state_chart.svg", +"StateChartDebug": "", +"Transition": "res://addons/godot_state_charts/transition.svg" } [application] -config/name="Hero Mark 2" -run/main_scene="res://Main.tscn" +config/name="Revolution 2083" +run/main_scene="res://menus/splash_screen.tscn" +config/use_custom_user_dir=true +config/custom_user_dir_name="heromark2" +boot_splash/show_image=false config/icon="res://icon.png" +config/windows_native_icon="res://icon.ico" [autoload] -Game="*res://game.tscn" -Debug="*res://objects/debug.tscn" -LevelData="*res://level_data.tscn" -Save="*res://scripts/save.gd" +Border="*res://autoloads/border.tscn" +Audio="*res://autoloads/audio.tscn" +Controls="*res://autoloads/controls.gd" +Options="*res://autoloads/options.gd" +Save="*res://autoloads/save.gd" +Game="*res://autoloads/game.gd" +LevelData="*res://autoloads/level_data.tscn" +Debug="*res://autoloads/debug.tscn" +TouchControls="*res://autoloads/touch_controls.tscn" +SceneManager="*res://autoloads/scene_manager.tscn" +Console="*res://autoloads/console.tscn" +Fade="*res://autoloads/fade.tscn" +StainLayer="*res://autoloads/stain_layer.tscn" +ScoreBoard="*res://autoloads/scoreboard.gd" +SpeedrunTimer="*res://autoloads/speedrun_timer.tscn" + +[debug] + +gdscript/warnings/unused_argument=false +shapes/collision/shape_color=Color( 0.564706, 0, 0.701961, 0.188235 ) +shapes/collision/contact_color=Color( 0.101961, 1, 0.176471, 0.8 ) +shapes/collision/draw_2d_outlines=false [display] window/size/width=256 window/size/height=192 +window/size/test_width=512 +window/size/test_height=384 +window/handheld/orientation="sensor_landscape" [editor_plugins] -enabled=PoolStringArray( ) +enabled=PoolStringArray( "res://addons/godot_state_charts/plugin.cfg" ) [global] @@ -80,11 +171,43 @@ ogg_vorbis={ ui_accept={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777222,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":88,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":90,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +ui_select={ +"deadzone": 0.5, +"events": [ ] +} +ui_cancel={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":88,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +ui_focus_next={ +"deadzone": 0.5, +"events": [ ] +} +ui_focus_prev={ +"deadzone": 0.5, +"events": [ ] +} +ui_left={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777231,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +ui_right={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777233,"unicode":0,"echo":false,"script":null) ] } ui_up={ @@ -92,6 +215,7 @@ ui_up={ "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":5,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777232,"unicode":0,"echo":false,"script":null) ] } ui_down={ @@ -100,12 +224,29 @@ ui_down={ , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":4,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":7,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777234,"unicode":0,"echo":false,"script":null) ] } +ui_page_up={ +"deadzone": 0.5, +"events": [ ] +} +ui_page_down={ +"deadzone": 0.5, +"events": [ ] +} +ui_home={ +"deadzone": 0.5, +"events": [ ] +} +ui_end={ +"deadzone": 0.5, +"events": [ ] +} jump={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":88,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":90,"unicode":0,"echo":false,"script":null) ] } debug_restart={ @@ -116,11 +257,7 @@ debug_restart={ debug_1={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":49,"physical_scancode":0,"unicode":0,"echo":false,"script":null) - ] -} -sword={ -"deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":67,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":10,"pressure":0.0,"pressed":false,"script":null) ] } crt={ @@ -135,13 +272,14 @@ debug_move_player={ } shoot={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":90,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":88,"unicode":0,"echo":false,"script":null) ] } fullscreen={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":70,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":true,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } debug_2={ @@ -162,8 +300,76 @@ debug_testroom={ pause={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":80,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) ] } +restart={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":82,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":9,"pressure":0.0,"pressed":false,"script":null) + ] +} +start={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":90,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":88,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":67,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) + ] +} +move_left={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777231,"unicode":0,"echo":false,"script":null) + ] +} +move_right={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777233,"unicode":0,"echo":false,"script":null) + ] +} +move_up={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777232,"unicode":0,"echo":false,"script":null) + ] +} +move_down={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777234,"unicode":0,"echo":false,"script":null) + ] +} +ui_start={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) + ] +} +shield={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":67,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":5,"pressure":0.0,"pressed":false,"script":null) + ] +} +text_enter={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} + +[input_devices] + +pointing/emulate_touch_from_mouse=true [layer_names] @@ -172,6 +378,9 @@ pause={ 2d_physics/layer_3="dynamic objects" 2d_physics/layer_4="vision" 2d_physics/layer_5="particles" +2d_physics/layer_6="death" +2d_physics/layer_7="ladder" +2d_physics/layer_8="player" [physics] @@ -181,4 +390,6 @@ common/enable_pause_aware_picking=true quality/driver/driver_name="GLES2" 2d/snapping/use_gpu_pixel_snap=true +vram_compression/import_etc=true +limits/time/time_rollover_secs=240.0 environment/default_environment="res://default_env.tres" diff --git a/scripts/ball_snake.gd b/scripts/ball_snake.gd new file mode 100644 index 0000000..caba971 --- /dev/null +++ b/scripts/ball_snake.gd @@ -0,0 +1,29 @@ +tool +class_name BallSnake +extends Node2D + + +export var texture: Texture +export var segments: int = 1 +export var target: NodePath +export var end_pieces: bool = true + + +func _process(delta: float) -> void: + update() + + +func _draw() -> void: + var node := get_node(target) as Node2D + if node: + if end_pieces: + draw_texture(texture, texture.get_size() * -0.5) + var end_pos := to_local(node.global_position) + for i in segments: + var weight := 1.0 / float(segments + 1) * float(i + 1) + draw_texture( + texture, + lerp(Vector2.ZERO, end_pos, weight) + texture.get_size() * -0.5 + ) + if end_pieces: + draw_texture(texture, end_pos + texture.get_size() * -0.5) diff --git a/scripts/crt.gdshader b/scripts/crt.gdshader deleted file mode 100644 index 18fc6d8..0000000 --- a/scripts/crt.gdshader +++ /dev/null @@ -1,43 +0,0 @@ -shader_type canvas_item; - -const float PI = 3.1415926535; - -uniform bool enabled = true; -uniform vec2 resolution; -uniform vec2 curvature; -uniform vec2 scanline_opacity; -uniform float brightness; - -vec2 curve_uv(vec2 uv) { - uv = uv * 2.0 - 1.0; - vec2 offset = abs(uv.yx) / vec2(curvature.x, curvature.y); - uv = uv + uv * offset * offset; - uv = uv * 0.5 + 0.5; - return uv; -} - -vec3 scanline_intensity(float uv, float res, float opacity) { - float intensity = sin((uv * res - 0.25) * PI * 2.0); - intensity = ((0.5 * intensity) + 0.5) * 0.9 + 0.1; - return vec3(pow(intensity, opacity)); -} - -void fragment() { - if (enabled) { - vec2 curved_uv = curve_uv(UV); - vec3 base_color = texture(TEXTURE, curved_uv).rgb; - - base_color += vec3(1.0/256.0); - base_color *= scanline_intensity(curved_uv.x, resolution.x, scanline_opacity.y); - base_color *= scanline_intensity(curved_uv.y, resolution.y, scanline_opacity.x); - base_color *= vec3(brightness); - - if (curved_uv.x < 0.0 || curved_uv.y < 0.0 || curved_uv.x > 1.0 || curved_uv.y > 1.0) { - COLOR = vec4(0.0, 0.0, 0.0, 1.0); - } else { - COLOR = vec4(base_color, 1.0); - } - } else { - COLOR = texture(TEXTURE, UV); - } -} \ No newline at end of file diff --git a/scripts/debug.gd b/scripts/debug.gd deleted file mode 100644 index cd8ce4f..0000000 --- a/scripts/debug.gd +++ /dev/null @@ -1,122 +0,0 @@ -extends CanvasLayer - -#Console by hazel -#Const -const ENTRY_SEQUENCE = ["4", "1", "5"] -#Export -export var max_lines: int = 10 -export var opacity: float = 0.5 -#Onready -onready var console = $Console -onready var code_label = get_parent().get_node("Main/Control/ViewportContainer/Viewport/CheatLayer/CheatLabel") -##Runtime -var lines: int = 0 -var time: float = 0.0 -var n: int = 0 -var debug = false -var allow_sword = false - -# cheat code entry -var entry_index = 0 -var entry = false -var code = "" - - -func _ready(): - #Auto do debug when playtesting - if not OS.is_debug_build(): - console.visible = false - debug = false - else: - console.visible = false - debug = true - $Console/Panel.modulate.a = opacity - console.modulate.a = opacity - -func _physics_process(delta): - #DEBUG - if debug == true && !entry && !entry_index > 0: - #Show console - if Input.is_action_just_pressed("debug_show"): - console.visible = !console.visible - #Restart scene - if Input.is_action_just_pressed("debug_restart"): - Game.call_deferred("restart_level") - #Move player to mouse - if Input.is_action_pressed("debug_move_player"): - Game.get_map().get_node("Player").position = get_viewport().get_mouse_position() - Debug.print(get_viewport().get_mouse_position()) - #Test room - if Input.is_action_just_pressed("debug_testroom"): - Game.change_map(load("res://maps/test_room.tscn")) - #Debug 1 - if Input.is_action_just_pressed("debug_1"): - Game.change_map(load("res://maps/level_select.tscn")) - #Debug 2 - if Input.is_action_just_pressed("debug_2"): - Game.freeze_frame(1.0) - -func print(text): - lines += 1 - if lines > 1: - console.text += "\n" - if lines > 10: - var n = console.text.find("\n") - var t = console.text - t.erase(0, n+1) - lines -= 1 - console.text = t + str(text) - else: - console.text += str(text) - -func _on_visible_toggled(button_pressed): - if button_pressed: - console.visible = true - else: - console.visible = false - -func _input(event): - if event is InputEventKey && event.is_pressed(): - var character = OS.get_scancode_string(event.scancode) - if character.length() > 1: - character = "" - - if entry: - if event.scancode == KEY_ENTER: - _enter_code() - entry = false - code = "" - elif event.scancode == KEY_BACKSPACE: - code.erase(code.length() - 1, 1) - else: - code += character - code_label.text = code - else: - if character == ENTRY_SEQUENCE[entry_index]: - entry_index += 1 - if entry_index >= ENTRY_SEQUENCE.size(): - entry = true - entry_index = 0 - _on_entry() - -func _on_entry(): - Game.play_sound(Game.a_star, Game.ac_cheat) - -func _enter_code(): - match code: - "30385": - for gold in get_tree().get_nodes_in_group("gold"): - var goldsprite = gold.get_node("AnimatedSprite") - goldsprite.frames = preload("res://graphics/collectibles/30385_frames.tres") - goldsprite.position.y -= 2 - #goldsprite.material.set_shader_param("palette",load("res://graphics/collectibles/pal_star_green.png")) - "1989": - for enemy in get_tree().get_nodes_in_group("enemy"): - enemy.die() - "DGSTEEZY": - debug = true - "6DOUBLOONS": - Debug.print(get_tree().get_nodes_in_group("gold").size()) - "EVILSBANE": - allow_sword = true - Input.action_press("sword") diff --git a/scripts/fix_parallax_background.gd b/scripts/fix_parallax_background.gd new file mode 100644 index 0000000..401ddfb --- /dev/null +++ b/scripts/fix_parallax_background.gd @@ -0,0 +1,20 @@ +extends ParallaxBackground + +func revert_offset(layer: ParallaxLayer) -> void: + # Cancel out layer's offset. The layer's position already has + # its motion_scale applied. + var ofs := scroll_offset - layer.position + if not scroll_ignore_camera_zoom: + # When attention is given to the camera's zoom, we need to account for it. + # We can use viewport's canvas transform scale to which the camera has + # already applied its zoom. + var canvas_scale = get_viewport().canvas_transform.get_scale() + # This is taken from godot source: parallax_background.cpp + # I don't know why it works. + ofs /= canvas_scale.dot(Vector2(0.5, 0.5)) + layer.motion_offset = ofs + +func _ready() -> void: + for layer in get_children(): + if layer is ParallaxLayer: + revert_offset(layer) diff --git a/scripts/has_splash.gd b/scripts/has_splash.gd new file mode 100644 index 0000000..11bb980 --- /dev/null +++ b/scripts/has_splash.gd @@ -0,0 +1,6 @@ +extends Node + +export var splash_color: Color = Color.white + +func _init() -> void: + add_to_group("has_splash") diff --git a/scripts/launch_rigid.gd b/scripts/launch_rigid.gd new file mode 100644 index 0000000..b46acef --- /dev/null +++ b/scripts/launch_rigid.gd @@ -0,0 +1,11 @@ +extends RigidBody2D + +#MINUMUM AND MAXIMUM IMPULSE +export var impulse_min = 100 +export var impulse_max = 300 + +func _ready(): +#SHOOT OFF AT A RANDOM DIRECTION + var impulse_strength = rand_range(impulse_min, impulse_max) + var angle = rand_range(-360,360) + apply_central_impulse(Vector2(cos(angle), sin(angle)) * impulse_strength) diff --git a/scripts/level_entry.gd b/scripts/level_entry.gd index 3b82c14..db1b37c 100644 --- a/scripts/level_entry.gd +++ b/scripts/level_entry.gd @@ -2,15 +2,38 @@ tool class_name LevelEntry extends Resource -export var title = "" setget set_title -export var shard_titles = [ +export var title: String = "" setget set_title +export var shard_titles: Array = [ "", "", "", "", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus"] -export var save_id = "" -export (PackedScene) var scene +export var save_id: String = "" +export var shards_required_sweet: int = 0 +export var shards_required_salty: int = 0 +export var shards_required_spicy: int = 0 +export var shards_required_pungent: int = 0 +export var boss_required: String = "" +export var boss: bool = false +export var has_scoreboard: bool = false +export var scene: PackedScene + +var shards_required: int = 0 setget , _get_shards_required + +func _get_shards_required() -> int: + if Engine.editor_hint: + return shards_required + match Game.difficulty: + Game.Difficulty.SWEET: + return shards_required_sweet + Game.Difficulty.SALTY: + return shards_required_salty + Game.Difficulty.SPICY: + return shards_required_spicy + Game.Difficulty.PUNGENT: + return shards_required_pungent + return shards_required func set_title(value): title = value diff --git a/scripts/palette_texture.gd b/scripts/palette_texture.gd new file mode 100644 index 0000000..e9348b8 --- /dev/null +++ b/scripts/palette_texture.gd @@ -0,0 +1,50 @@ +tool +class_name PaletteTexture +extends ImageTexture + + +export (Array, Color) var colors := [] setget _set_colors +export var convert_from: Texture = null setget _convert_from + + +var _data := PoolByteArray() + + +func _init() -> void: + colors.resize(16) + colors.fill(Color.white) + _data.resize(16 * 4) + _data.fill(255) + _update_image() + + +func _set_colors(new_array: Array) -> void: + if new_array.size() == 16: + colors = new_array + _update_image() + + +func _update_image() -> void: + for i in colors.size(): + var c: Color = colors[i] + var j: int = i * 4 + _data[j] = c.r8 + _data[j + 1] = c.g8 + _data[j + 2] = c.b8 + _data[j + 3] = c.a8 + + var image := Image.new() + image.create_from_data(4, 4, false, Image.FORMAT_RGBA8, _data) + create_from_image(image, 0) + + +func _convert_from(texture: Texture) -> void: + if texture != null and texture.get_size() == Vector2(4.0, 4.0): + var image := texture.get_data() + image.lock() + for x in 4: + for y in 4: + colors[x + (y * 4)] = image.get_pixel(x, y) + print(colors[x + (y * 4)]) + image.unlock() + _update_image() diff --git a/scripts/random_spawner.gd b/scripts/random_spawner.gd new file mode 100644 index 0000000..01288dc --- /dev/null +++ b/scripts/random_spawner.gd @@ -0,0 +1,25 @@ +tool +extends Node2D + +export (PackedScene) var scene +export (Rect2) var extents setget _set_extents +export var delay = 1.0 + +func _ready(): + if !Engine.editor_hint: + get_tree().create_timer(delay, false).connect("timeout", self, "spawn") + +func spawn(): + var node = scene.instance() + node.position.x = rand_range(extents.position.x, extents.end.x) + node.position.y = rand_range(extents.position.y, extents.end.y) + add_child(node) + get_tree().create_timer(delay, false).connect("timeout", self, "spawn") + +func _draw(): + if Engine.editor_hint: + draw_rect(extents, Color.thistle, false, 1.0) + +func _set_extents(value): + extents = value + update() diff --git a/scripts/randomize_particle_start.gd b/scripts/randomize_particle_start.gd new file mode 100644 index 0000000..f9a8552 --- /dev/null +++ b/scripts/randomize_particle_start.gd @@ -0,0 +1,4 @@ +extends CPUParticles2D + +func _ready() -> void: + preprocess = randf() * lifetime diff --git a/scripts/recolor_border.shader b/scripts/recolor_border.shader deleted file mode 100644 index c7480e3..0000000 --- a/scripts/recolor_border.shader +++ /dev/null @@ -1,32 +0,0 @@ -shader_type canvas_item; - -uniform sampler2D palette : hint_albedo; -uniform vec4 border_color : hint_color = vec4(0.0, 0.0, 0.0, 1.0); -uniform bool border_corners = false; - -bool is_border(sampler2D tex, vec2 uv, vec2 pixel_size) { - float check = texture(tex, uv + vec2(pixel_size.x, 0.0)).a; - check += texture(tex, uv + vec2(-pixel_size.x, 0.0)).a; - check += texture(tex, uv + vec2(0.0, pixel_size.y)).a; - check += texture(tex, uv + vec2(0.0, -pixel_size.y)).a; - - if (border_corners) { - check += texture(tex, uv + pixel_size).a; - check += texture(tex, uv - pixel_size).a; - check += texture(tex, uv + vec2(pixel_size.x, -pixel_size.y)).a; - check += texture(tex, uv + vec2(-pixel_size.x, pixel_size.y)).a; - } - - return check > 0.0; -} - -void fragment() { - vec4 color = texture(TEXTURE, UV); - - if (color.a == 0.0 && is_border(TEXTURE, UV, TEXTURE_PIXEL_SIZE)) { - COLOR = border_color; - } else { - COLOR = texture(palette, color.rg ); - COLOR.a = color.a; - } -} diff --git a/scripts/save.gd b/scripts/save.gd deleted file mode 100644 index cb04878..0000000 --- a/scripts/save.gd +++ /dev/null @@ -1,35 +0,0 @@ -extends Node - -var file - -func load_file(file_number): - var new_file = ConfigFile.new() - new_file.load("user://file%d.pr" % file_number) - file = new_file - -func get_level_data(save_id): - var shards = [] - shards.resize(8) - for i in 8: - shards[i] = file.get_value(save_id, "shard_%d" % i, false) - return { - # any% score and time - score_any = file.get_value(save_id, "score_any", 0), - time_any = file.get_value(save_id, "time_any", INF), - # 100% score and time - score_100 = file.get_value(save_id, "score_100", 0), - time_100 = file.get_value(save_id, "time_100", INF), - shards = shards - } - -func set_shard_collected(save_id, index, collected = true): - file.set_value(save_id, "shard_%d" % index, collected) - -func set_score(save_id, score, is_100 = false): - file.set_value(save_id, "score_100" if is_100 else "score_any", int(score)) - -func set_time(save_id, time, is_100 = false): - file.set_value(save_id, "time_100" if is_100 else "time_any", float(time)) - -func save_file(file_number): - file.save("user://file%d.pr" % file_number) diff --git a/scripts/scaling.gd b/scripts/scaling.gd deleted file mode 100644 index b222174..0000000 --- a/scripts/scaling.gd +++ /dev/null @@ -1,44 +0,0 @@ -extends Control - -var multiple = 1 -onready var viewport = $ViewportContainer -onready var border = $TextureRect -onready var cheat_label = $ViewportContainer/Viewport/ -# SCALE MODE: INTEGER, FIT, FILL -export var scale_mode = 0 -# INTEGER SCALE SETTINGS -export var overscale = 0 -onready var root = get_tree().root -# RESOLUTION -onready var res = Game.resolution -onready var half_res = Vector2(res.x/2,res.y/2) - -func _ready(): - #SCREEN RESIZE SIGNAL - get_tree().connect("screen_resized", self, "_on_screen_resized") - root.set_attach_to_screen_rect(root.get_visible_rect()) - _on_screen_resized() - -func _on_screen_resized(): -# VARS - var window_size = OS.get_window_size() -# INTEGER SCALE - if scale_mode == 0: - # CENTER THE VIEWPORT - viewport.rect_position.x = (window_size.x / 2) - half_res.x - viewport.rect_position.y = (window_size.y / 2) - half_res.y - # DETERMINE WHAT THE HIGHEST INTEGER MULTIPLE IS - multiple = window_size / res - multiple = Vector2(floor(multiple.x),floor(multiple.y)) - # SET THE HIGHEST SCALE AXIS TO THE LOWEST TO STAY SQUARE - if multiple.x < multiple.y: multiple.y = multiple.x - if multiple.x > multiple.y: multiple.x = multiple.y - # SCALE THE VIEWPORT (IF OVERSCALE IS ON, SCALE IT BY 1 EXTRA) - viewport.rect_scale = multiple + Vector2(overscale,overscale) - #viewport.rect_scale = Vector2(2,2) -# SCALE TO FIT - if scale_mode == 1: - get_tree().set_screen_stretch(SceneTree.STRETCH_MODE_VIEWPORT,SceneTree.STRETCH_ASPECT_KEEP,res,1) -# BORDER - border.rect_size = window_size - diff --git a/scripts/sg_palette.gd b/scripts/sg_palette.gd new file mode 100644 index 0000000..f413bc3 --- /dev/null +++ b/scripts/sg_palette.gd @@ -0,0 +1,5 @@ +extends Node2D + +func _ready(): + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + material.set_shader_param("palette", palette) diff --git a/scripts/show_button.gd b/scripts/show_button.gd new file mode 100644 index 0000000..8a67a01 --- /dev/null +++ b/scripts/show_button.gd @@ -0,0 +1,22 @@ +extends Control + + +export var action: String + + +onready var keyboard_button: Label = $KeyboardButton +onready var gamepad_button: TextureRect = $GamepadButton + + +func _process(delta: float) -> void: + if SceneManager.last_input_gamepad: + keyboard_button.visible = false + gamepad_button.visible = true + var button = Controls.get_button(action) + if button >= 0: + gamepad_button.texture.region.position.x = float(button % 8) * 12.0 + gamepad_button.texture.region.position.y = float(button / 8) * 10.0 + else: + keyboard_button.visible = true + gamepad_button.visible = false + keyboard_button.text = OS.get_scancode_string(Controls.get_key(action)) diff --git a/scripts/snap_sprite.gd b/scripts/snap_sprite.gd new file mode 100644 index 0000000..e238cde --- /dev/null +++ b/scripts/snap_sprite.gd @@ -0,0 +1,7 @@ +extends Node2D + +onready var base_position = position.round() + +func _process(delta): + #Round sprite position + global_position = get_parent().global_position.round() + base_position diff --git a/scripts/sprite_ext.gd b/scripts/sprite_ext.gd new file mode 100644 index 0000000..678f04f --- /dev/null +++ b/scripts/sprite_ext.gd @@ -0,0 +1,43 @@ +extends Sprite + + +## emitted when the stop frame is reached +signal stopped() + + +## speed at which to animate +export var fps: float = 0.0 +## frame to stop on when reached +export var stop_at_frame: int = -1 +## whether to animate back and forth instead of loop +export var ping_pong: bool = false +## whether to maintain fixed global rotation +export var rotation_lock: float = NAN + + +## whether the animation is paused +var stopped: bool = false + + +var _time: float = 0.0 + + +func _process(delta): + # rotation lock + if not is_nan(rotation_lock): + set_deferred("global_rotation_degrees", rotation_lock) +# global_rotation_degrees = rotation_lock + # do not animate if paused + if stopped: + return + # accumulate time and animate + _time += abs(fps) * delta + if _time >= 1.0: + _time -= 1.0 + # posmod to loop around + frame = posmod(frame + int(sign(fps)), hframes * vframes) + if frame == stop_at_frame: + stopped = true + emit_signal("stopped") + if ping_pong and frame == 0: + fps = -fps diff --git a/scripts/theme.tres b/scripts/theme.tres deleted file mode 100644 index e60d6f1..0000000 --- a/scripts/theme.tres +++ /dev/null @@ -1,6 +0,0 @@ -[gd_resource type="Theme" load_steps=2 format=2] - -[ext_resource path="res://fonts/2ndpuberty..fnt" type="BitmapFont" id=1] - -[resource] -default_font = ExtResource( 1 ) diff --git a/scripts/1px_border.gdshader b/shaders/1px_border.gdshader similarity index 100% rename from scripts/1px_border.gdshader rename to shaders/1px_border.gdshader diff --git a/shaders/beam_cycle.gdshader b/shaders/beam_cycle.gdshader new file mode 100644 index 0000000..0e09279 --- /dev/null +++ b/shaders/beam_cycle.gdshader @@ -0,0 +1,10 @@ +shader_type canvas_item; +render_mode blend_add; + +uniform float cycle_speed = 1.0; +uniform sampler2D gradient; + +void fragment() { + COLOR = texture(TEXTURE, UV); + COLOR *= texture(gradient, vec2(fract(TIME) * floor(cycle_speed), 0.0)); +} \ No newline at end of file diff --git a/shaders/beam_of_sin.gdshader b/shaders/beam_of_sin.gdshader new file mode 100644 index 0000000..cca26a4 --- /dev/null +++ b/shaders/beam_of_sin.gdshader @@ -0,0 +1,19 @@ +shader_type canvas_item; + +const float TAU = 6.28319; + +uniform float speed = 1.0; +uniform float cycle_offset = 0.0; +uniform float wave_length = 1.0; +uniform float thickness = 0.05; + +float plot(vec2 st, float pct) { + return step( pct - thickness, st.x) - + step( pct + thickness, st.x); +} + +void fragment() { + float sin_time = fract(TIME * floor(speed)) * TAU; + float x = sin(UV.y * wave_length + sin_time + cycle_offset)*0.5+0.5; + COLOR = COLOR * vec4(1.0, 1.0, 1.0, plot(UV * vec2(1.2, 1.0) + vec2(-0.1, 0.0), x)); +} \ No newline at end of file diff --git a/shaders/can_stain.tres b/shaders/can_stain.tres new file mode 100644 index 0000000..84a2d44 --- /dev/null +++ b/shaders/can_stain.tres @@ -0,0 +1,15 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=2] + +[sub_resource type="Shader" id=2] +code = "shader_type canvas_item; + +void fragment() { + COLOR = texture(TEXTURE, UV); + // fucked up lighting change to make blood work perfectly + if (AT_LIGHT_PASS) { + COLOR = vec4(1.0, 1.0, 1.0, COLOR.a); + } +}" + +[resource] +shader = SubResource( 2 ) diff --git a/shaders/color_noise.gdshader b/shaders/color_noise.gdshader new file mode 100644 index 0000000..6a2cf4a --- /dev/null +++ b/shaders/color_noise.gdshader @@ -0,0 +1,19 @@ +shader_type canvas_item; + +uniform bool animate_noise = false; +uniform float noise_intensity = 1.0; +uniform float fps = 60.0; + +float random (vec2 uv) { + return fract(sin(dot(uv.xy, + vec2(12.9898,78.233))) * 43758.5453123); +} + +void fragment() { + float time = floor(fract(TIME) * fps); + vec2 noise_uv = SCREEN_UV + time * float(animate_noise); + float noise = random(noise_uv); + noise = mix(1.0 - noise_intensity, 1.0, noise); + + COLOR = vec4(COLOR.rgb * noise, COLOR.a); +} \ No newline at end of file diff --git a/shaders/elecricity_no_blood.tres b/shaders/elecricity_no_blood.tres new file mode 100644 index 0000000..9fa360f --- /dev/null +++ b/shaders/elecricity_no_blood.tres @@ -0,0 +1,134 @@ +[gd_resource type="Shader" format=2] + +[resource] +code = "shader_type canvas_item; + +const float TAU = 6.28319; + +uniform float arc_speed = 4.0; +uniform float arc_fps = 10.0; +uniform float arc_scale = 8.0; +uniform float arc_threshold = 0.15; +uniform vec4 arc_color : hint_color = vec4(1.0, 0.93, 0.0, 1.0); +uniform float gamma = 2.0; +uniform float flash_rate = 3.0; +uniform float flash_intensity = 0.2; +uniform vec4 background_color : hint_color = vec4(0.0, 0.0, 0.0, 0.0); + +// Description : Array and textureless GLSL 2D/3D/4D simplex +// noise functions. +// Author : Ian McEwan, Ashima Arts. +// Maintainer : stegu +// Lastmod : 20110822 (ijm) +// License : Copyright (C) 2011 Ashima Arts. All rights reserved. +// Distributed under the MIT License. See LICENSE file. +// https://github.com/ashima/webgl-noise +// https://github.com/stegu/webgl-noise +// + +vec3 mod289_3(vec3 x) { + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 mod289_4(vec4 x) { + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 permute(vec4 x) { + return mod289_4(((x * 34.0) + 1.0) * x); +} + +vec4 taylorInvSqrt(vec4 r) { + return 2.79284291400159 - 0.85373472095314 * r; +} + +float snoise(vec3 v) { + vec2 C = vec2(1.0/6.0, 1.0/3.0) ; + vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + + // First corner + vec3 i = floor(v + dot(v, vec3(C.y)) ); + vec3 x0 = v - i + dot(i, vec3(C.x)) ; + + // Other corners + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min( g.xyz, l.zxy ); + vec3 i2 = max( g.xyz, l.zxy ); + + // x0 = x0 - 0.0 + 0.0 * C.xxx; + // x1 = x0 - i1 + 1.0 * C.xxx; + // x2 = x0 - i2 + 2.0 * C.xxx; + // x3 = x0 - 1.0 + 3.0 * C.xxx; + vec3 x1 = x0 - i1 + vec3(C.x); + vec3 x2 = x0 - i2 + vec3(C.y); // 2.0*C.x = 1/3 = C.y + vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y + + // Permutations + i = mod289_3(i); + vec4 p = permute( permute( permute( + i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + + i.x + vec4(0.0, i1.x, i2.x, 1.0 )); + + // Gradients: 7x7 points over a square, mapped onto an octahedron. + // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294) + float n_ = 0.142857142857; // 1.0/7.0 + vec3 ns = n_ * D.wyz - D.xzx; + + vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7) + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N) + + vec4 x = x_ *ns.x + vec4(ns.y); + vec4 y = y_ *ns.x + vec4(ns.y); + vec4 h = 1.0 - abs(x) - abs(y); + + vec4 b0 = vec4( x.xy, y.xy ); + vec4 b1 = vec4( x.zw, y.zw ); + + //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0; + //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0; + vec4 s0 = floor(b0)*2.0 + 1.0; + vec4 s1 = floor(b1)*2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ; + vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ; + + vec3 p0 = vec3(a0.xy,h.x); + vec3 p1 = vec3(a0.zw,h.y); + vec3 p2 = vec3(a1.xy,h.z); + vec3 p3 = vec3(a1.zw,h.w); + + //Normalise gradients + vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + // Mix final noise value + vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), vec4(0.0)); + m = m * m; + return 22.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3) ) ); +} + + +void fragment() { + vec4 tex_color = texture(TEXTURE, UV); + tex_color *= COLOR; + tex_color.rgb = pow(tex_color.rgb, vec3(1.0 / (gamma + sin(fract(TIME * floor(flash_rate)) * TAU) * flash_intensity))); + tex_color.rgb = mix(tex_color.rgb, background_color.rgb, background_color.a); +// tex_color.rgb = pow(tex_color.rgb, vec3(0.5 + sin(TIME * 20.0) * 0.1)); +// tex_color.rgb = pow(tex_color.rgb, vec3(1.0 / 2.0)); +// tex_color.rgb += (round(sin(TIME * 20.0) * 4.0)) * 0.25 * 0.05; + float n = snoise(vec3(SCREEN_UV / SCREEN_PIXEL_SIZE / arc_scale, (floor(TIME) + (floor(fract(TIME) * arc_fps)) / arc_fps) * arc_speed)); +// float n = snoise(vec3(SCREEN_UV / SCREEN_PIXEL_SIZE / arc_scale, floor(fract(TIME) * arc_fps) * arc_speed / arc_fps)); + n = step(abs(n), arc_threshold); + COLOR = vec4(mix(tex_color.rgb, arc_color.rgb, n * arc_color.a), tex_color.a); +// float worley = worley(SCREEN_UV, 128.0, 96.0); +// vec4 tex_color = texture(TEXTURE, UV); +// COLOR = vec4(mix(vec3(1.0, 1.0, 0.2), tex_color.rgb, step(worley, 0.5)), tex_color.a); +}" diff --git a/shaders/electricity.gdshader b/shaders/electricity.gdshader new file mode 100644 index 0000000..625d032 --- /dev/null +++ b/shaders/electricity.gdshader @@ -0,0 +1,134 @@ +shader_type canvas_item; + +const float TAU = 6.28319; + +uniform float arc_speed = 4.0; +uniform float arc_fps = 10.0; +uniform float arc_scale = 8.0; +uniform float arc_threshold = 0.15; +uniform vec4 arc_color : hint_color = vec4(1.0, 0.93, 0.0, 1.0); +uniform float gamma = 2.0; +uniform float flash_rate = 3.0; +uniform float flash_intensity = 0.2; +uniform vec4 background_color : hint_color = vec4(0.0, 0.0, 0.0, 0.0); + +// Description : Array and textureless GLSL 2D/3D/4D simplex +// noise functions. +// Author : Ian McEwan, Ashima Arts. +// Maintainer : stegu +// Lastmod : 20110822 (ijm) +// License : Copyright (C) 2011 Ashima Arts. All rights reserved. +// Distributed under the MIT License. See LICENSE file. +// https://github.com/ashima/webgl-noise +// https://github.com/stegu/webgl-noise +// + +vec3 mod289_3(vec3 x) { + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 mod289_4(vec4 x) { + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 permute(vec4 x) { + return mod289_4(((x * 34.0) + 1.0) * x); +} + +vec4 taylorInvSqrt(vec4 r) { + return 2.79284291400159 - 0.85373472095314 * r; +} + +float snoise(vec3 v) { + vec2 C = vec2(1.0/6.0, 1.0/3.0) ; + vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + + // First corner + vec3 i = floor(v + dot(v, vec3(C.y)) ); + vec3 x0 = v - i + dot(i, vec3(C.x)) ; + + // Other corners + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min( g.xyz, l.zxy ); + vec3 i2 = max( g.xyz, l.zxy ); + + // x0 = x0 - 0.0 + 0.0 * C.xxx; + // x1 = x0 - i1 + 1.0 * C.xxx; + // x2 = x0 - i2 + 2.0 * C.xxx; + // x3 = x0 - 1.0 + 3.0 * C.xxx; + vec3 x1 = x0 - i1 + vec3(C.x); + vec3 x2 = x0 - i2 + vec3(C.y); // 2.0*C.x = 1/3 = C.y + vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y + + // Permutations + i = mod289_3(i); + vec4 p = permute( permute( permute( + i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + + i.x + vec4(0.0, i1.x, i2.x, 1.0 )); + + // Gradients: 7x7 points over a square, mapped onto an octahedron. + // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294) + float n_ = 0.142857142857; // 1.0/7.0 + vec3 ns = n_ * D.wyz - D.xzx; + + vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7) + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N) + + vec4 x = x_ *ns.x + vec4(ns.y); + vec4 y = y_ *ns.x + vec4(ns.y); + vec4 h = 1.0 - abs(x) - abs(y); + + vec4 b0 = vec4( x.xy, y.xy ); + vec4 b1 = vec4( x.zw, y.zw ); + + //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0; + //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0; + vec4 s0 = floor(b0)*2.0 + 1.0; + vec4 s1 = floor(b1)*2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ; + vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ; + + vec3 p0 = vec3(a0.xy,h.x); + vec3 p1 = vec3(a0.zw,h.y); + vec3 p2 = vec3(a1.xy,h.z); + vec3 p3 = vec3(a1.zw,h.w); + + //Normalise gradients + vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + // Mix final noise value + vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), vec4(0.0)); + m = m * m; + return 22.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3) ) ); +} + + +void fragment() { + if (AT_LIGHT_PASS) { + COLOR = vec4(1.0, 1.0, 1.0, COLOR.a); + } else { + vec4 tex_color = texture(TEXTURE, UV); + tex_color.rgb = pow(tex_color.rgb, vec3(1.0 / (gamma + sin(fract(TIME * floor(flash_rate)) * TAU) * flash_intensity))); + tex_color.rgb = mix(tex_color.rgb, background_color.rgb, background_color.a); + // tex_color.rgb = pow(tex_color.rgb, vec3(0.5 + sin(TIME * 20.0) * 0.1)); + // tex_color.rgb = pow(tex_color.rgb, vec3(1.0 / 2.0)); + // tex_color.rgb += (round(sin(TIME * 20.0) * 4.0)) * 0.25 * 0.05; + float n = snoise(vec3(SCREEN_UV / SCREEN_PIXEL_SIZE / arc_scale, (floor(TIME) + (floor(fract(TIME) * arc_fps)) / arc_fps) * arc_speed)); +// float n = snoise(vec3(SCREEN_UV / SCREEN_PIXEL_SIZE / arc_scale, floor(fract(TIME) * arc_fps) * arc_speed / arc_fps)); + n = step(abs(n), arc_threshold); + COLOR = vec4(mix(tex_color.rgb, arc_color.rgb, n * arc_color.a), tex_color.a); + // float worley = worley(SCREEN_UV, 128.0, 96.0); + // vec4 tex_color = texture(TEXTURE, UV); + // COLOR = vec4(mix(vec3(1.0, 1.0, 0.2), tex_color.rgb, step(worley, 0.5)), tex_color.a); + } +} \ No newline at end of file diff --git a/shaders/fade.gdshader b/shaders/fade.gdshader new file mode 100644 index 0000000..b161fab --- /dev/null +++ b/shaders/fade.gdshader @@ -0,0 +1,44 @@ +shader_type canvas_item; + +/* +MIT License + +Copyright (c) 2019 Tomek + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +uniform vec4 color : hint_color; +uniform bool smooth_mode = false; +uniform bool reverse = false; +uniform float opacity : hint_range(0, 1); + +void fragment() { + float alpha = texture(TEXTURE, UV).r; + if (reverse) { + alpha = clamp(1.0 - alpha, 0.0, 1.0); + } + + if (smooth_mode) { + alpha = mix(0.0, 1.0, clamp(alpha - 1.0 + opacity * 2.0, 0.0, 1.0)); + } else { + alpha = clamp(ceil(alpha + opacity * 1.00001 - 1.0), 0.0, 1.0); + } + COLOR = vec4(color.rgb, alpha); +} diff --git a/shaders/fire.gdshader b/shaders/fire.gdshader new file mode 100644 index 0000000..35c2f5f --- /dev/null +++ b/shaders/fire.gdshader @@ -0,0 +1,5 @@ +shader_type canvas_item; + +void fragment() { + COLOR = texture(TEXTURE, vec2(UV.x + sin(TIME / 2.5 + UV.y*6.0)/30.0,UV.y)); +} \ No newline at end of file diff --git a/shaders/lcd.gdshader b/shaders/lcd.gdshader new file mode 100644 index 0000000..078e9d2 --- /dev/null +++ b/shaders/lcd.gdshader @@ -0,0 +1,43 @@ +shader_type canvas_item; + +const float PI = 3.1415926535; + +uniform bool enabled = true; +uniform vec2 resolution; +uniform vec2 curvature; +uniform vec2 scanline_opacity; +uniform float brightness; + +vec2 curve_uv(vec2 uv) { + uv = uv * 2.0 - 1.0; + vec2 offset = abs(uv.yx) / vec2(curvature.x, curvature.y); + uv = uv + uv * offset * offset; + uv = uv * 0.5 + 0.5; + return uv; +} + +vec3 scanline_intensity(float uv, float res, float opacity) { + float intensity = sin((uv * res - 0.25) * PI * 2.0); + intensity = ((0.5 * intensity) + 0.5) * 0.9 + 0.1; + return vec3(pow(intensity, opacity)); +} + +void fragment() { + if (enabled) { + vec2 curved_uv = UV; + vec3 base_color = texture(TEXTURE, curved_uv).rgb; + + base_color += vec3(1.0/256.0); + base_color *= scanline_intensity(curved_uv.x, resolution.x, scanline_opacity.y); + base_color *= scanline_intensity(curved_uv.y, resolution.y, scanline_opacity.x); + base_color *= vec3(brightness); + + if (curved_uv.x < 0.0 || curved_uv.y < 0.0 || curved_uv.x > 1.0 || curved_uv.y > 1.0) { + COLOR = vec4(0.0, 0.0, 0.0, 0.0); + } else { + COLOR = vec4(base_color, 1.0); + } + } else { + COLOR = texture(TEXTURE, UV); + } +} \ No newline at end of file diff --git a/shaders/noise_slow.gdshader b/shaders/noise_slow.gdshader new file mode 100644 index 0000000..34df731 --- /dev/null +++ b/shaders/noise_slow.gdshader @@ -0,0 +1,17 @@ +shader_type canvas_item; + +uniform bool animate_noise = false; +uniform float noise_intensity = 1.0; + +float random (vec2 uv) { + return fract(sin(dot(uv.xy, + vec2(12.9898,78.233))) * 43758.5453123); +} + +void fragment() { + vec2 noise_uv = SCREEN_UV + fract(TIME) * float(animate_noise) / 10.0; + float noise = random(noise_uv); + noise = mix(1.0 - noise_intensity, 1.0, noise); + + COLOR = vec4(COLOR.rgb * noise, COLOR.a); +} \ No newline at end of file diff --git a/scripts/recolor.tres b/shaders/recolor.tres similarity index 100% rename from scripts/recolor.tres rename to shaders/recolor.tres diff --git a/shaders/recolor_border.shader b/shaders/recolor_border.shader new file mode 100644 index 0000000..ffde7bb --- /dev/null +++ b/shaders/recolor_border.shader @@ -0,0 +1,35 @@ +shader_type canvas_item; + +uniform sampler2D palette : hint_albedo; +uniform vec4 border_color : hint_color = vec4(0.0, 0.0, 0.0, 1.0); +uniform bool border_corners = false; + +bool is_border(sampler2D tex, vec2 uv, vec2 pixel_size) { + float check = texture(tex, uv + vec2(pixel_size.x, 0.0)).a; + check += texture(tex, uv + vec2(-pixel_size.x, 0.0)).a; + check += texture(tex, uv + vec2(0.0, pixel_size.y)).a; + check += texture(tex, uv + vec2(0.0, -pixel_size.y)).a; + + if (border_corners) { + check += texture(tex, uv + pixel_size).a; + check += texture(tex, uv - pixel_size).a; + check += texture(tex, uv + vec2(pixel_size.x, -pixel_size.y)).a; + check += texture(tex, uv + vec2(-pixel_size.x, pixel_size.y)).a; + } + + return check > 0.0; +} + +void fragment() { + vec4 color = texture(TEXTURE, UV); + + // fucked up lighting change to make blood work perfectly + if (AT_LIGHT_PASS) { + COLOR = vec4(1.0, 1.0, 1.0, color.a); + } else if (color.a == 0.0 && is_border(TEXTURE, UV, TEXTURE_PIXEL_SIZE)) { + COLOR = border_color; + } else { + COLOR = texture(palette, color.rg ); + COLOR.a = color.a; + } +} diff --git a/shaders/scale3x.gdshader b/shaders/scale3x.gdshader new file mode 100644 index 0000000..d429071 --- /dev/null +++ b/shaders/scale3x.gdshader @@ -0,0 +1,110 @@ +shader_type canvas_item; + +const vec4 background = vec4(1., 1., 1., 0.); + +uniform float pixel_scale: hint_range(0.0, 1.0) = 1.0; + +float dist(vec4 c1, vec4 c2) { + return (c1 == c2) ? 0.0 : abs(c1.r - c2.r) + abs(c1.g - c2.g) + abs(c1.b - c2.b); +} + +bool similar(vec4 c1, vec4 c2, vec4 input) { + return (c1 == c2 || (dist(c1, c2) <= dist(input, c2) && dist(c1, c2) <= dist(input, c1))); +} + +bool different(vec4 c1, vec4 c2, vec4 input) { + return !similar(c1, c2, input); +} + +// rotsprite 3x enlargement algorithm: +// suppose we are looking at input pixel cE which is surrounded by 8 other +// pixels: +// cA cB cC +// cD cE cF +// cG cH cI +// and for that 1 input pixel cE we want to output 4 pixels oA, oB, oC, and oD: +// E0 E1 E2 +// E3 E4 E5 +// E6 E7 E8 +vec4 scale3x(sampler2D tex, vec2 uv, vec2 pixel_size) { + vec4 cE = texture(tex, uv); + cE = cE.a == 0.0 ? background : cE; + + vec4 cD = texture(tex, uv + pixel_size * vec2(-1., .0)); + cD = cD.a == 0.0 ? background : cD; + vec4 cF = texture(tex, uv + pixel_size * vec2(1., .0)); + cF = cF.a == 0.0 ? background : cF; + vec4 cH = texture(tex, uv + pixel_size * vec2(.0, 1.)); + cH = cH.a == 0.0 ? background : cH; + vec4 cB = texture(tex, uv + pixel_size * vec2(.0, -1.)); + cB = cB.a == 0.0 ? background : cB; + vec4 cA = texture(tex, uv + pixel_size * vec2(-1., -1.)); + cA = cA.a == 0.0 ? background : cA; + vec4 cI = texture(tex, uv + pixel_size * vec2(1., 1.)); + cI = cI.a == 0.0 ? background : cI; + vec4 cG = texture(tex, uv + pixel_size * vec2(-1., 1.)); + cG = cG.a == 0.0 ? background : cG; + vec4 cC = texture(tex, uv + pixel_size * vec2(1., -1.)); + cC = cC.a == 0.0 ? background : cC; + + if (different(cD,cF, cE) + && different(cH,cB, cE) + && ((similar(cE, cD, cE) || similar(cE, cH, cE) || similar(cE, cF, cE) || similar(cE, cB, cE) || + ((different(cA, cI, cE) || similar(cE, cG, cE) || similar(cE, cC, cE)) && + (different(cG, cC, cE) || similar(cE, cA, cE) || similar(cE, cI, cE)))))) + { + vec2 unit = uv - (floor(uv / pixel_size) * pixel_size); + vec2 pixel_3_size = pixel_size / 3.0; + + // E0 + if (unit.x < pixel_3_size.x && unit.y < pixel_3_size.y) { + return similar(cB, cD, cE) ? cB : cE; + } + + + // E1 + if (unit.x < pixel_3_size.x * 2.0 && unit.y < pixel_3_size.y) { + return (similar(cB, cD, cE) && different(cE, cC, cE)) + || (similar(cB, cF, cE) && different(cE, cA, cE)) ? cB : cE; + } + + // E2 + if (unit.y < pixel_3_size.y) { + return similar(cB, cF, cE) ? cB : cE; + } + + // E3 + if (unit.x < pixel_3_size.x && unit.y < pixel_3_size.y * 2.0) { + return (similar(cB, cD, cE) && different(cE, cG, cE) + || (similar(cH, cD, cE) && different(cE, cA, cE))) ? cD : cE; + } + + // E5 + if (unit.x >= pixel_3_size.x * 2.0 && unit.x < pixel_3_size.x * 3.0 && unit.y < pixel_3_size.y * 2.0) { + return (similar(cB, cF, cE) && different(cE, cI, cE)) + || (similar(cH, cF, cE) && different(cE, cC, cE)) ? cF : cE; + } + + // E6 + if (unit.x < pixel_3_size.x && unit.y >= pixel_3_size.y * 2.0) { + return similar(cH, cD, cE) ? cH : cE; + } + + // E7 + if (unit.x < pixel_3_size.x * 2.0 && unit.y >= pixel_3_size.y * 2.0) { + return (similar(cH, cD, cE) && different(cE, cI, cE)) + || (similar(cH, cF, cE) && different(cE, cG, cE)) ? cH : cE; + } + + // E8 + if (unit.y >= pixel_3_size.y * 2.0) { + return similar(cH, cF, cE) ? cH : cE; + } + } + + return cE; +} + +void fragment() { + COLOR = scale3x(TEXTURE, UV, TEXTURE_PIXEL_SIZE * pixel_scale); +} \ No newline at end of file diff --git a/shaders/ska_plane.gdshader b/shaders/ska_plane.gdshader new file mode 100644 index 0000000..668e1f2 --- /dev/null +++ b/shaders/ska_plane.gdshader @@ -0,0 +1,31 @@ +shader_type canvas_item; +render_mode skip_vertex_transform; + +uniform vec4 color_1 : hint_color = vec4(1.0, 1.0, 1.0, 1.0); +uniform vec4 color_2 : hint_color = vec4(0.0, 0.0, 0.0, 1.0); +uniform vec2 checker_size = vec2(8.0, 8.0); +uniform vec2 pan_speed = vec2(0.0, 0.0); +uniform vec2 cycle_speed = vec2(0.0, 0.0); +uniform vec2 cycle_alternation = vec2(0.0, 0.0); +uniform mat2 uv_transform = mat2(1.0); + +float checker(vec2 uv) { + vec2 div_uv = floor((uv) / checker_size); + float fmodResult = mod(div_uv.x + div_uv.y, 2.0); + return max(sign(fmodResult), 0.0); +} + +void vertex() { + UV = VERTEX; + VERTEX = (WORLD_MATRIX * (EXTRA_MATRIX * vec4(VERTEX, 0.0, 1.0))).xy; +} + +void fragment() { + vec2 uv = uv_transform * (UV - pan_speed * TIME); + vec2 alternation = mix(vec2(1.0), vec2( + (checker(vec2(uv.y, 0.0)) - 0.5) * 2.0, + (checker(vec2(0.0, uv.x)) - 0.5) * 2.0 + ), cycle_alternation); + uv = uv - cycle_speed * alternation * TIME; + COLOR = mix(color_1, color_2, checker(uv)); +} \ No newline at end of file diff --git a/shaders/water_ripple.gdshader b/shaders/water_ripple.gdshader new file mode 100644 index 0000000..64fef40 --- /dev/null +++ b/shaders/water_ripple.gdshader @@ -0,0 +1,12 @@ +shader_type canvas_item; + +uniform float offset = 1.5; +uniform float speed = 0.5; +uniform float waves = 2.0; +uniform float color_amount = 0.2; + +void fragment() { + vec2 uv = SCREEN_UV; + uv.x += floor(sin(TIME * speed - SCREEN_UV.y * waves) * offset) * SCREEN_PIXEL_SIZE.x; + COLOR = mix(texture(SCREEN_TEXTURE, uv), COLOR, color_amount); +} \ No newline at end of file diff --git a/shaders/wibble_border.gdshader b/shaders/wibble_border.gdshader new file mode 100644 index 0000000..1a16ca6 --- /dev/null +++ b/shaders/wibble_border.gdshader @@ -0,0 +1,37 @@ +shader_type canvas_item; + +uniform vec2 speed = vec2(0.0, 0.0); +uniform vec2 ammount = vec2(0.0, 0.0); +uniform vec2 offset = vec2(0.0, 0.0); +uniform vec2 delay = vec2(0.0, 0.0); + +uniform vec4 border_color : hint_color = vec4(0.0, 0.0, 0.0, 1.0); +uniform bool border_corners = false; + +bool is_border(sampler2D tex, vec2 uv, vec2 pixel_size) { + float check = texture(tex, uv + vec2(pixel_size.x, 0.0)).a; + check += texture(tex, uv + vec2(-pixel_size.x, 0.0)).a; + check += texture(tex, uv + vec2(0.0, pixel_size.y)).a; + check += texture(tex, uv + vec2(0.0, -pixel_size.y)).a; + + if (border_corners) { + check += texture(tex, uv + pixel_size).a; + check += texture(tex, uv - pixel_size).a; + check += texture(tex, uv + vec2(pixel_size.x, -pixel_size.y)).a; + check += texture(tex, uv + vec2(-pixel_size.x, pixel_size.y)).a; + } + + return check > 0.0; +} + +void vertex() { + VERTEX += sin(speed * (delay + TIME)) * ammount + offset; +} + +void fragment() { + COLOR = texture(TEXTURE, UV); + + if (COLOR.a == 0.0 && is_border(TEXTURE, UV, TEXTURE_PIXEL_SIZE)) { + COLOR = border_color; + } +} \ No newline at end of file diff --git a/shaders/wibble_wobble.gdshader b/shaders/wibble_wobble.gdshader new file mode 100644 index 0000000..6bd39f5 --- /dev/null +++ b/shaders/wibble_wobble.gdshader @@ -0,0 +1,10 @@ +shader_type canvas_item; + +uniform vec2 speed = vec2(0.0, 0.0); +uniform vec2 ammount = vec2(0.0, 0.0); +uniform vec2 offset = vec2(0.0, 0.0); +uniform vec2 delay = vec2(0.0, 0.0); + +void vertex() { + VERTEX += sin(speed * (delay + TIME)) * ammount + offset; +} \ No newline at end of file diff --git a/tilesets/t_abstract.tres b/tilesets/t_abstract.tres new file mode 100644 index 0000000..fa4bac4 --- /dev/null +++ b/tilesets/t_abstract.tres @@ -0,0 +1,174 @@ +[gd_resource type="TileSet" load_steps=18 format=2] + +[ext_resource path="res://graphics/tiles/abstract.png" type="Texture" id=1] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[resource] +0/name = "griddy" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 32, 32 ) +0/tile_mode = 1 +0/autotile/bitmask_mode = 1 +0/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +0/autotile/icon_coordinate = Vector2( 0, 3 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/autotile/fallback_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 1 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 diff --git a/tilesets/t_abyss.tres b/tilesets/t_abyss.tres new file mode 100644 index 0000000..76adf2b --- /dev/null +++ b/tilesets/t_abyss.tres @@ -0,0 +1,323 @@ +[gd_resource type="TileSet" load_steps=24 format=2] + +[ext_resource path="res://graphics/tiles/abyss.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/seaweed.tres" type="Texture" id=2] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 8, 4, 0, 4, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=18] +points = PoolVector2Array( 8, 4, 0, 4, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=19] +points = PoolVector2Array( 8, 4, 0, 4, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=20] +points = PoolVector2Array( 8, 4, 0, 4, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=21] +points = PoolVector2Array( 8, 2, 0, 2, 0, 2, 8, 2 ) + +[resource] +0/name = "shale" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 32, 0, 32, 32 ) +0/tile_mode = 1 +0/autotile/bitmask_mode = 1 +0/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +0/autotile/icon_coordinate = Vector2( 0, 3 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/autotile/fallback_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 1 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 +1/name = "limestone" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 0, 24, 32, 8 ) +1/tile_mode = 1 +1/autotile/bitmask_mode = 1 +1/autotile/bitmask_flags = [ Vector2( 0, 0 ), 29818896, Vector2( 1, 0 ), 29818928, Vector2( 2, 0 ), 29818936, Vector2( 3, 0 ), 29818904 ] +1/autotile/icon_coordinate = Vector2( 0, 0 ) +1/autotile/tile_size = Vector2( 8, 8 ) +1/autotile/spacing = 0 +1/autotile/occluder_map = [ ] +1/autotile/navpoly_map = [ ] +1/autotile/priority_map = [ ] +1/autotile/z_index_map = [ ] +1/autotile/fallback_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape = SubResource( 17 ) +1/shape_one_way = false +1/shape_one_way_margin = 1.0 +1/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +1/z_index = 0 +2/name = "misc" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 0, 0, 32, 8 ) +2/tile_mode = 2 +2/autotile/icon_coordinate = Vector2( 0, 0 ) +2/autotile/tile_size = Vector2( 8, 8 ) +2/autotile/spacing = 0 +2/autotile/occluder_map = [ ] +2/autotile/navpoly_map = [ ] +2/autotile/priority_map = [ ] +2/autotile/z_index_map = [ ] +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape_one_way = false +2/shape_one_way_margin = 0.0 +2/shapes = [ ] +2/z_index = 0 +3/name = "one way" +3/texture = ExtResource( 1 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 0, 8, 8, 8 ) +3/tile_mode = 2 +3/autotile/icon_coordinate = Vector2( 0, 0 ) +3/autotile/tile_size = Vector2( 8, 8 ) +3/autotile/spacing = 0 +3/autotile/occluder_map = [ ] +3/autotile/navpoly_map = [ ] +3/autotile/priority_map = [ ] +3/autotile/z_index_map = [ ] +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape = SubResource( 21 ) +3/shape_one_way = true +3/shape_one_way_margin = 1.0 +3/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 21 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +3/z_index = 0 +4/name = "cracks" +4/texture = ExtResource( 1 ) +4/tex_offset = Vector2( 0, 0 ) +4/modulate = Color( 1, 1, 1, 1 ) +4/region = Rect2( 8, 8, 8, 8 ) +4/tile_mode = 2 +4/autotile/icon_coordinate = Vector2( 0, 0 ) +4/autotile/tile_size = Vector2( 8, 8 ) +4/autotile/spacing = 0 +4/autotile/occluder_map = [ ] +4/autotile/navpoly_map = [ ] +4/autotile/priority_map = [ ] +4/autotile/z_index_map = [ ] +4/occluder_offset = Vector2( 0, 0 ) +4/navigation_offset = Vector2( 0, 0 ) +4/shape_offset = Vector2( 0, 0 ) +4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +4/shape_one_way = false +4/shape_one_way_margin = 0.0 +4/shapes = [ ] +4/z_index = 0 +5/name = "seaweed.tres 5" +5/texture = ExtResource( 2 ) +5/tex_offset = Vector2( 0, 0 ) +5/modulate = Color( 1, 1, 1, 1 ) +5/region = Rect2( 0, 0, 8, 8 ) +5/tile_mode = 0 +5/occluder_offset = Vector2( 0, 0 ) +5/navigation_offset = Vector2( 0, 0 ) +5/shape_offset = Vector2( 0, 0 ) +5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +5/shape_one_way = false +5/shape_one_way_margin = 0.0 +5/shapes = [ ] +5/z_index = 0 diff --git a/tilesets/t_canopy.tres b/tilesets/t_canopy.tres index a9f61a9..95814e5 100644 --- a/tilesets/t_canopy.tres +++ b/tilesets/t_canopy.tres @@ -1,6 +1,7 @@ -[gd_resource type="TileSet" load_steps=9 format=2] +[gd_resource type="TileSet" load_steps=31 format=2] [ext_resource path="res://graphics/tiles/canopy.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/mushroom_red.tres" type="Texture" id=2] [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) @@ -23,12 +24,75 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) [sub_resource type="ConvexPolygonShape2D" id=7] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=18] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=19] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=20] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=21] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=22] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=23] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=24] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=25] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=26] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=27] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=28] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + [resource] 0/name = "canopy.png 0" 0/texture = ExtResource( 1 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 1, 1, 1, 1 ) -0/region = Rect2( 0, 0, 32, 40 ) +0/region = Rect2( 0, 0, 32, 24 ) 0/tile_mode = 2 0/autotile/icon_coordinate = Vector2( 0, 0 ) 0/autotile/tile_size = Vector2( 8, 8 ) @@ -88,3 +152,193 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] 0/z_index = 0 +1/name = "mushroom_red.tres 1" +1/texture = ExtResource( 2 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 0, 0, 8, 8 ) +1/tile_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape_one_way = false +1/shape_one_way_margin = 0.0 +1/shapes = [ ] +1/z_index = 0 +2/name = "logs" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 32, 0, 32, 32 ) +2/tile_mode = 1 +2/autotile/bitmask_mode = 1 +2/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 176, Vector2( 1, 1 ), 406, Vector2( 1, 2 ), 50, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 376, Vector2( 2, 2 ), 61, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 152, Vector2( 3, 1 ), 211, Vector2( 3, 2 ), 26, Vector2( 3, 3 ), 24 ] +2/autotile/icon_coordinate = Vector2( 0, 3 ) +2/autotile/tile_size = Vector2( 8, 8 ) +2/autotile/spacing = 0 +2/autotile/occluder_map = [ ] +2/autotile/navpoly_map = [ ] +2/autotile/priority_map = [ ] +2/autotile/z_index_map = [ ] +2/autotile/fallback_mode = 0 +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape = SubResource( 8 ) +2/shape_one_way = false +2/shape_one_way_margin = 1.0 +2/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 21 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 22 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +2/z_index = 0 +3/name = "ground" +3/texture = ExtResource( 1 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 0, 24, 24, 16 ) +3/tile_mode = 1 +3/autotile/bitmask_mode = 1 +3/autotile/bitmask_flags = [ Vector2( 0, 0 ), 21299376, Vector2( 0, 1 ), 21299250, Vector2( 1, 0 ), 21299384, Vector2( 1, 1 ), 21299258, Vector2( 2, 0 ), 21299352, Vector2( 2, 1 ), 21299226 ] +3/autotile/icon_coordinate = Vector2( 1, 0 ) +3/autotile/tile_size = Vector2( 8, 8 ) +3/autotile/spacing = 0 +3/autotile/occluder_map = [ ] +3/autotile/navpoly_map = [ ] +3/autotile/priority_map = [ ] +3/autotile/z_index_map = [ ] +3/autotile/fallback_mode = 0 +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape = SubResource( 23 ) +3/shape_one_way = false +3/shape_one_way_margin = 1.0 +3/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 23 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 24 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 25 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 26 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 27 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 28 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +3/z_index = 0 diff --git a/tilesets/t_cave.tres b/tilesets/t_cave.tres index c279195..978247f 100644 --- a/tilesets/t_cave.tres +++ b/tilesets/t_cave.tres @@ -1,6 +1,7 @@ -[gd_resource type="TileSet" load_steps=6 format=2] +[gd_resource type="TileSet" load_steps=30 format=2] [ext_resource path="res://graphics/tiles/cave.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/mushroom_brown.tres" type="Texture" id=2] [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) @@ -14,6 +15,75 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) [sub_resource type="ConvexPolygonShape2D" id=4] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) +[sub_resource type="ConvexPolygonShape2D" id=27] +points = PoolVector2Array( 8, 0, 0, 0, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=18] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=19] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=20] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=21] +points = PoolVector2Array( 0, -16, 8, -16, 8, -16, 0, -16 ) + +[sub_resource type="ConvexPolygonShape2D" id=22] +points = PoolVector2Array( 0, -16, 8, -16, 8, -16, 0, -16 ) + +[sub_resource type="ConvexPolygonShape2D" id=23] +points = PoolVector2Array( 8, 6, 0, 6, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=24] +points = PoolVector2Array( 8, 6, 0, 6, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=25] +points = PoolVector2Array( 8, 6, 0, 6, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=26] +points = PoolVector2Array( 8, 6, 0, 6, 0, 0, 8, 0 ) + [resource] 0/name = "cave.png 0" 0/texture = ExtResource( 1 ) @@ -59,5 +129,207 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) "one_way_margin": 1.0, "shape": SubResource( 4 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 27 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] 0/z_index = 0 +1/name = "rock-full" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 32, 0, 32, 32 ) +1/tile_mode = 1 +1/autotile/bitmask_mode = 1 +1/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +1/autotile/icon_coordinate = Vector2( 0, 3 ) +1/autotile/tile_size = Vector2( 8, 8 ) +1/autotile/spacing = 0 +1/autotile/occluder_map = [ ] +1/autotile/navpoly_map = [ ] +1/autotile/priority_map = [ ] +1/autotile/z_index_map = [ ] +1/autotile/fallback_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape = SubResource( 5 ) +1/shape_one_way = false +1/shape_one_way_margin = 1.0 +1/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +1/z_index = 0 +2/name = "rock-thin" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 32, 32, 32, 8 ) +2/tile_mode = 1 +2/autotile/bitmask_mode = 1 +2/autotile/bitmask_flags = [ Vector2( 0, 0 ), 29818896, Vector2( 1, 0 ), 29818928, Vector2( 2, 0 ), 29818936, Vector2( 3, 0 ), 29818904 ] +2/autotile/icon_coordinate = Vector2( 0, 0 ) +2/autotile/tile_size = Vector2( 8, 8 ) +2/autotile/spacing = 0 +2/autotile/occluder_map = [ ] +2/autotile/navpoly_map = [ ] +2/autotile/priority_map = [ ] +2/autotile/z_index_map = [ ] +2/autotile/fallback_mode = 0 +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape = SubResource( 21 ) +2/shape_one_way = false +2/shape_one_way_margin = 1.0 +2/shapes = [ { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 21 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 22 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 23 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 24 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 25 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 26 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +2/z_index = 0 +3/name = "mushroom_brown.tres 3" +3/texture = ExtResource( 2 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 0, 0, 8, 8 ) +3/tile_mode = 0 +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape_one_way = false +3/shape_one_way_margin = 0.0 +3/shapes = [ ] +3/z_index = 0 diff --git a/tilesets/t_death.tres b/tilesets/t_death.tres index acb188b..eaab6df 100644 --- a/tilesets/t_death.tres +++ b/tilesets/t_death.tres @@ -1,8 +1,32 @@ -[gd_resource type="TileSet" load_steps=4 format=2] +[gd_resource type="TileSet" load_steps=16 format=2] [ext_resource path="res://graphics/tiles/water.tres" type="Texture" id=1] [ext_resource path="res://graphics/tiles/spike.png" type="Texture" id=2] [ext_resource path="res://graphics/tiles/water_bottom.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/oil_bottom.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/oil.tres" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/blood_bottom.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/blood.tres" type="Texture" id=7] +[ext_resource path="res://graphics/tiles/water_light.tres" type="Texture" id=8] +[ext_resource path="res://graphics/tiles/water_light_bottom.png" type="Texture" id=9] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 6, 8, 2, 8, 2, 2, 6, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 2, 2, 6, 2, 6, 6, 2, 6 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) [resource] 0/name = "water.tres 0" @@ -36,24 +60,17 @@ 1/navigation_offset = Vector2( 0, 0 ) 1/shape_offset = Vector2( 0, 0 ) 1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape = SubResource( 1 ) 1/shape_one_way = false -1/shape_one_way_margin = 0.0 -1/shapes = [ ] +1/shape_one_way_margin = 1.0 +1/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] 1/z_index = 0 -2/name = "spike.png 2" -2/texture = ExtResource( 2 ) -2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 1, 1, 1, 1 ) -2/region = Rect2( 8, 0, 8, 8 ) -2/tile_mode = 0 -2/occluder_offset = Vector2( 0, 0 ) -2/navigation_offset = Vector2( 0, 0 ) -2/shape_offset = Vector2( 0, 0 ) -2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -2/shape_one_way = false -2/shape_one_way_margin = 0.0 -2/shapes = [ ] -2/z_index = 0 3/name = "water_bottom.png 3" 3/texture = ExtResource( 3 ) 3/tex_offset = Vector2( 0, 0 ) @@ -64,7 +81,182 @@ 3/navigation_offset = Vector2( 0, 0 ) 3/shape_offset = Vector2( 0, 0 ) 3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape = SubResource( 2 ) 3/shape_one_way = false -3/shape_one_way_margin = 0.0 -3/shapes = [ ] +3/shape_one_way_margin = 1.0 +3/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] 3/z_index = 10 +6/name = "oil_bottom.png 6" +6/texture = ExtResource( 4 ) +6/tex_offset = Vector2( 0, 0 ) +6/modulate = Color( 1, 1, 1, 1 ) +6/region = Rect2( 0, 0, 8, 8 ) +6/tile_mode = 2 +6/autotile/icon_coordinate = Vector2( 0, 0 ) +6/autotile/tile_size = Vector2( 8, 8 ) +6/autotile/spacing = 0 +6/autotile/occluder_map = [ ] +6/autotile/navpoly_map = [ ] +6/autotile/priority_map = [ ] +6/autotile/z_index_map = [ ] +6/occluder_offset = Vector2( 0, 0 ) +6/navigation_offset = Vector2( 0, 0 ) +6/shape_offset = Vector2( 0, 0 ) +6/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +6/shape = SubResource( 5 ) +6/shape_one_way = false +6/shape_one_way_margin = 1.0 +6/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +6/z_index = 10 +7/name = "oil.tres 7" +7/texture = ExtResource( 5 ) +7/tex_offset = Vector2( 0, 0 ) +7/modulate = Color( 1, 1, 1, 1 ) +7/region = Rect2( 0, 0, 8, 8 ) +7/tile_mode = 2 +7/autotile/icon_coordinate = Vector2( 0, 0 ) +7/autotile/tile_size = Vector2( 8, 8 ) +7/autotile/spacing = 0 +7/autotile/occluder_map = [ ] +7/autotile/navpoly_map = [ ] +7/autotile/priority_map = [ ] +7/autotile/z_index_map = [ ] +7/occluder_offset = Vector2( 0, 0 ) +7/navigation_offset = Vector2( 0, 0 ) +7/shape_offset = Vector2( 0, 0 ) +7/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +7/shape_one_way = false +7/shape_one_way_margin = 0.0 +7/shapes = [ ] +7/z_index = 10 +8/name = "blood.tres 8" +8/texture = ExtResource( 7 ) +8/tex_offset = Vector2( 0, 0 ) +8/modulate = Color( 1, 1, 1, 1 ) +8/region = Rect2( 0, 0, 8, 8 ) +8/tile_mode = 2 +8/autotile/icon_coordinate = Vector2( 0, 0 ) +8/autotile/tile_size = Vector2( 8, 8 ) +8/autotile/spacing = 0 +8/autotile/occluder_map = [ ] +8/autotile/navpoly_map = [ ] +8/autotile/priority_map = [ ] +8/autotile/z_index_map = [ ] +8/occluder_offset = Vector2( 0, 0 ) +8/navigation_offset = Vector2( 0, 0 ) +8/shape_offset = Vector2( 0, 0 ) +8/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +8/shape_one_way = false +8/shape_one_way_margin = 0.0 +8/shapes = [ ] +8/z_index = 10 +9/name = "blood_bottom.png 9" +9/texture = ExtResource( 6 ) +9/tex_offset = Vector2( 0, 0 ) +9/modulate = Color( 1, 1, 1, 1 ) +9/region = Rect2( 0, 0, 8, 8 ) +9/tile_mode = 2 +9/autotile/icon_coordinate = Vector2( 0, 0 ) +9/autotile/tile_size = Vector2( 8, 8 ) +9/autotile/spacing = 0 +9/autotile/occluder_map = [ ] +9/autotile/navpoly_map = [ ] +9/autotile/priority_map = [ ] +9/autotile/z_index_map = [ ] +9/occluder_offset = Vector2( 0, 0 ) +9/navigation_offset = Vector2( 0, 0 ) +9/shape_offset = Vector2( 0, 0 ) +9/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +9/shape = SubResource( 6 ) +9/shape_one_way = false +9/shape_one_way_margin = 1.0 +9/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +9/z_index = 10 +10/name = "water_light.tres 10" +10/texture = ExtResource( 8 ) +10/tex_offset = Vector2( 0, 0 ) +10/modulate = Color( 1, 1, 1, 1 ) +10/region = Rect2( 0, 0, 8, 8 ) +10/tile_mode = 2 +10/autotile/icon_coordinate = Vector2( 0, 0 ) +10/autotile/tile_size = Vector2( 8, 8 ) +10/autotile/spacing = 0 +10/autotile/occluder_map = [ ] +10/autotile/navpoly_map = [ ] +10/autotile/priority_map = [ ] +10/autotile/z_index_map = [ ] +10/occluder_offset = Vector2( 0, 0 ) +10/navigation_offset = Vector2( 0, 0 ) +10/shape_offset = Vector2( 0, 0 ) +10/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +10/shape_one_way = false +10/shape_one_way_margin = 0.0 +10/shapes = [ ] +10/z_index = 10 +11/name = "water_light_bottom.png 11" +11/texture = ExtResource( 9 ) +11/tex_offset = Vector2( 0, 0 ) +11/modulate = Color( 1, 1, 1, 1 ) +11/region = Rect2( 0, 0, 8, 8 ) +11/tile_mode = 2 +11/autotile/icon_coordinate = Vector2( 0, 0 ) +11/autotile/tile_size = Vector2( 8, 8 ) +11/autotile/spacing = 0 +11/autotile/occluder_map = [ ] +11/autotile/navpoly_map = [ ] +11/autotile/priority_map = [ ] +11/autotile/z_index_map = [ ] +11/occluder_offset = Vector2( 0, 0 ) +11/navigation_offset = Vector2( 0, 0 ) +11/shape_offset = Vector2( 0, 0 ) +11/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +11/shape = SubResource( 7 ) +11/shape_one_way = false +11/shape_one_way_margin = 1.0 +11/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +11/z_index = 10 +12/name = "spike.png 12" +12/texture = ExtResource( 2 ) +12/tex_offset = Vector2( 0, 0 ) +12/modulate = Color( 1, 1, 1, 1 ) +12/region = Rect2( 8, 0, 8, 8 ) +12/tile_mode = 0 +12/occluder_offset = Vector2( 0, 0 ) +12/navigation_offset = Vector2( 0, 0 ) +12/shape_offset = Vector2( 0, 0 ) +12/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +12/shape = SubResource( 8 ) +12/shape_one_way = false +12/shape_one_way_margin = 1.0 +12/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +12/z_index = 0 diff --git a/tilesets/t_grass.tres b/tilesets/t_grass.tres index 4afaee6..4f434a5 100644 --- a/tilesets/t_grass.tres +++ b/tilesets/t_grass.tres @@ -1,6 +1,9 @@ -[gd_resource type="TileSet" load_steps=16 format=2] +[gd_resource type="TileSet" load_steps=35 format=2] [ext_resource path="res://graphics/tiles/grass.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/flower_red.tres" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/flower_blue.tres" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/flower_pink.tres" type="Texture" id=4] [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) @@ -44,8 +47,56 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) [sub_resource type="ConvexPolygonShape2D" id=16] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=18] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=19] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=20] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=21] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=22] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=23] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=24] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=25] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=26] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=27] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=28] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=29] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=30] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=31] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=32] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + [resource] -0/name = "grass.png 0" +0/name = "old grass" 0/texture = ExtResource( 1 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 1, 1, 1, 1 ) @@ -172,7 +223,7 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) 1/shape_one_way_margin = 0.0 1/shapes = [ ] 1/z_index = 0 -2/name = "grass.png 2" +2/name = "flowers" 2/texture = ExtResource( 1 ) 2/tex_offset = Vector2( 0, 0 ) 2/modulate = Color( 1, 1, 1, 1 ) @@ -193,3 +244,166 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) 2/shape_one_way_margin = 0.0 2/shapes = [ ] 2/z_index = 0 +3/name = "grass scholar" +3/texture = ExtResource( 1 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 32, 0, 32, 32 ) +3/tile_mode = 1 +3/autotile/bitmask_mode = 1 +3/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +3/autotile/icon_coordinate = Vector2( 0, 3 ) +3/autotile/tile_size = Vector2( 8, 8 ) +3/autotile/spacing = 0 +3/autotile/occluder_map = [ ] +3/autotile/navpoly_map = [ ] +3/autotile/priority_map = [ ] +3/autotile/z_index_map = [ ] +3/autotile/fallback_mode = 0 +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape = SubResource( 17 ) +3/shape_one_way = false +3/shape_one_way_margin = 1.0 +3/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 21 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 22 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 23 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 24 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 25 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 26 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 27 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 28 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 29 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 30 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 31 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 32 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +3/z_index = 0 +4/name = "flower_red.tres 4" +4/texture = ExtResource( 2 ) +4/tex_offset = Vector2( 0, 0 ) +4/modulate = Color( 1, 1, 1, 1 ) +4/region = Rect2( 0, 0, 9, 8 ) +4/tile_mode = 0 +4/occluder_offset = Vector2( 0, 0 ) +4/navigation_offset = Vector2( 0, 0 ) +4/shape_offset = Vector2( 0, 0 ) +4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +4/shape_one_way = false +4/shape_one_way_margin = 0.0 +4/shapes = [ ] +4/z_index = 0 +5/name = "flower_pink.tres 5" +5/texture = ExtResource( 4 ) +5/tex_offset = Vector2( 0, 0 ) +5/modulate = Color( 1, 1, 1, 1 ) +5/region = Rect2( 0, 0, 9, 8 ) +5/tile_mode = 0 +5/occluder_offset = Vector2( 0, 0 ) +5/navigation_offset = Vector2( 0, 0 ) +5/shape_offset = Vector2( 0, 0 ) +5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +5/shape_one_way = false +5/shape_one_way_margin = 0.0 +5/shapes = [ ] +5/z_index = 0 +6/name = "flower_blue.tres 6" +6/texture = ExtResource( 3 ) +6/tex_offset = Vector2( 0, 0 ) +6/modulate = Color( 1, 1, 1, 1 ) +6/region = Rect2( 0, 0, 9, 8 ) +6/tile_mode = 0 +6/occluder_offset = Vector2( 0, 0 ) +6/navigation_offset = Vector2( 0, 0 ) +6/shape_offset = Vector2( 0, 0 ) +6/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +6/shape_one_way = false +6/shape_one_way_margin = 0.0 +6/shapes = [ ] +6/z_index = 0 diff --git a/tilesets/t_horror.tres b/tilesets/t_horror.tres new file mode 100644 index 0000000..cf67855 --- /dev/null +++ b/tilesets/t_horror.tres @@ -0,0 +1,445 @@ +[gd_resource type="TileSet" load_steps=43 format=2] + +[ext_resource path="res://graphics/tiles/horror.png" type="Texture" id=1] + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 6, 8, 2, 8, 2, 0, 6, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 6, 8, 2, 8, 2, 0, 6, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 6, 8, 2, 8, 2, 0, 6, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 8, 6, 0, 6, 0, 2, 8, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 8, 6, 0, 6, 0, 2, 8, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 6, 8, 2, 8, 2, 0, 6, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 8, 6, 0, 6, 0, 2, 8, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 8, 6, 2, 6, 2, 2, 8, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 2, 2, 6, 2, 6, 8, 2, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 8, 6, 2, 6, 2, 2, 8, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 6, 8, 2, 8, 2, 0, 6, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 8, 6, 2, 6, 2, 2, 8, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 6, 6, 2, 6, 2, 0, 6, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 8, 6, 0, 6, 0, 2, 8, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 6, 6, 2, 6, 2, 0, 6, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=18] +points = PoolVector2Array( 8, 6, 0, 6, 0, 2, 8, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=19] +points = PoolVector2Array( 6, 8, 2, 8, 2, 2, 6, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=20] +points = PoolVector2Array( 6, 8, 2, 8, 2, 2, 6, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=21] +points = PoolVector2Array( 6, 6, 0, 6, 0, 2, 6, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=22] +points = PoolVector2Array( 6, 6, 0, 6, 0, 2, 6, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=23] +points = PoolVector2Array( 6, 8, 2, 8, 2, 0, 6, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=24] +points = PoolVector2Array( 6, 6, 0, 6, 0, 2, 6, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=25] +points = PoolVector2Array( 6, 6, 2, 6, 2, 0, 6, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=26] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=43] +points = PoolVector2Array( 8, 6, 0, 6, 0, 2, 8, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=27] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=28] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=29] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=30] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=31] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=32] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=33] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=34] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=35] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=36] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=37] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=38] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=39] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=40] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=41] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=42] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[resource] +0/name = "bones" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 32, 0, 32, 32 ) +0/tile_mode = 1 +0/autotile/bitmask_mode = 1 +0/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +0/autotile/icon_coordinate = Vector2( 0, 0 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/autotile/fallback_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 2 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 21 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 22 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 23 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 24 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 25 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 26 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 43 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 +1/name = "earth" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 32, 32, 32, 32 ) +1/tile_mode = 1 +1/autotile/bitmask_mode = 1 +1/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +1/autotile/icon_coordinate = Vector2( 0, 0 ) +1/autotile/tile_size = Vector2( 8, 8 ) +1/autotile/spacing = 0 +1/autotile/occluder_map = [ ] +1/autotile/navpoly_map = [ ] +1/autotile/priority_map = [ ] +1/autotile/z_index_map = [ ] +1/autotile/fallback_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape = SubResource( 27 ) +1/shape_one_way = false +1/shape_one_way_margin = 1.0 +1/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 27 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 28 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 29 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 30 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 31 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 32 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 33 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 34 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 35 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 36 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 37 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 38 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 39 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 40 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 41 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 42 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +1/z_index = 0 +2/name = "misc" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 0, 0, 32, 64 ) +2/tile_mode = 2 +2/autotile/icon_coordinate = Vector2( 0, 0 ) +2/autotile/tile_size = Vector2( 8, 8 ) +2/autotile/spacing = 0 +2/autotile/occluder_map = [ ] +2/autotile/navpoly_map = [ ] +2/autotile/priority_map = [ ] +2/autotile/z_index_map = [ ] +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape_one_way = false +2/shape_one_way_margin = 0.0 +2/shapes = [ ] +2/z_index = 0 diff --git a/tilesets/t_laboratory.tres b/tilesets/t_laboratory.tres new file mode 100644 index 0000000..1f4092e --- /dev/null +++ b/tilesets/t_laboratory.tres @@ -0,0 +1,468 @@ +[gd_resource type="TileSet" load_steps=40 format=2] + +[ext_resource path="res://graphics/tiles/laboratory.png" type="Texture" id=1] + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=18] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=19] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=20] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=21] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=22] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=23] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=24] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=25] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=26] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=27] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=28] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=29] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=30] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=31] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=32] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=33] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=34] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=35] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=36] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=37] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=38] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=39] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=40] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=41] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=42] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=43] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=44] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=45] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=46] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=63] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=64] +points = PoolVector2Array( 8, 2, 0, 2, 0, 2, 8, 2 ) + +[resource] +0/name = "beam" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 32, 8 ) +0/tile_mode = 1 +0/autotile/bitmask_mode = 1 +0/autotile/bitmask_flags = [ Vector2( 0, 0 ), 29818896, Vector2( 1, 0 ), 29818928, Vector2( 2, 0 ), 29818936, Vector2( 3, 0 ), 29818904 ] +0/autotile/icon_coordinate = Vector2( 0, 0 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/autotile/fallback_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 11 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 +1/name = "plate_slats" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 32, 0, 32, 32 ) +1/tile_mode = 1 +1/autotile/bitmask_mode = 1 +1/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +1/autotile/icon_coordinate = Vector2( 0, 3 ) +1/autotile/tile_size = Vector2( 8, 8 ) +1/autotile/spacing = 0 +1/autotile/occluder_map = [ ] +1/autotile/navpoly_map = [ ] +1/autotile/priority_map = [ ] +1/autotile/z_index_map = [ ] +1/autotile/fallback_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape = SubResource( 15 ) +1/shape_one_way = false +1/shape_one_way_margin = 1.0 +1/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 21 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 22 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 23 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 24 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 25 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 26 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 27 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 28 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 29 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 30 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +1/z_index = 0 +2/name = "plate_circuits" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 32, 32, 32, 32 ) +2/tile_mode = 1 +2/autotile/bitmask_mode = 1 +2/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +2/autotile/icon_coordinate = Vector2( 0, 3 ) +2/autotile/tile_size = Vector2( 8, 8 ) +2/autotile/spacing = 0 +2/autotile/occluder_map = [ ] +2/autotile/navpoly_map = [ ] +2/autotile/priority_map = [ ] +2/autotile/z_index_map = [ ] +2/autotile/fallback_mode = 0 +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape = SubResource( 31 ) +2/shape_one_way = false +2/shape_one_way_margin = 1.0 +2/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 31 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 32 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 33 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 34 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 35 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 36 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 37 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 38 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 39 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 40 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 41 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 42 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 43 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 44 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 45 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 46 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +2/z_index = 0 +3/name = "plate_background" +3/texture = ExtResource( 1 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 0, 32, 32, 32 ) +3/tile_mode = 1 +3/autotile/bitmask_mode = 1 +3/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +3/autotile/icon_coordinate = Vector2( 0, 3 ) +3/autotile/tile_size = Vector2( 8, 8 ) +3/autotile/spacing = 0 +3/autotile/occluder_map = [ ] +3/autotile/navpoly_map = [ ] +3/autotile/priority_map = [ ] +3/autotile/z_index_map = [ ] +3/autotile/fallback_mode = 0 +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape_one_way = false +3/shape_one_way_margin = 0.0 +3/shapes = [ ] +3/z_index = -20 +4/name = "misc" +4/texture = ExtResource( 1 ) +4/tex_offset = Vector2( 0, 0 ) +4/modulate = Color( 1, 1, 1, 1 ) +4/region = Rect2( 0, 8, 32, 24 ) +4/tile_mode = 2 +4/autotile/icon_coordinate = Vector2( 0, 0 ) +4/autotile/tile_size = Vector2( 8, 8 ) +4/autotile/spacing = 0 +4/autotile/occluder_map = [ ] +4/autotile/navpoly_map = [ ] +4/autotile/priority_map = [ ] +4/autotile/z_index_map = [ ] +4/occluder_offset = Vector2( 0, 0 ) +4/navigation_offset = Vector2( 0, 0 ) +4/shape_offset = Vector2( 0, 0 ) +4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +4/shape = SubResource( 63 ) +4/shape_one_way = false +4/shape_one_way_margin = 1.0 +4/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 63 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 64 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +4/z_index = 0 diff --git a/tilesets/t_ladders.tres b/tilesets/t_ladders.tres new file mode 100644 index 0000000..3adc45c --- /dev/null +++ b/tilesets/t_ladders.tres @@ -0,0 +1,49 @@ +[gd_resource type="TileSet" load_steps=2 format=2] + +[ext_resource path="res://graphics/tiles/ladders.png" type="Texture" id=1] + +[resource] +0/name = "ladders" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 24, 32 ) +0/tile_mode = 2 +0/autotile/icon_coordinate = Vector2( 0, 0 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape_one_way = false +0/shape_one_way_margin = 0.0 +0/shapes = [ ] +0/z_index = 0 +1/name = "spine" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 24, 0, 8, 24 ) +1/tile_mode = 1 +1/autotile/bitmask_mode = 1 +1/autotile/bitmask_flags = [ Vector2( 0, 0 ), 23593104, Vector2( 0, 1 ), 23920786, Vector2( 0, 2 ), 2949138 ] +1/autotile/icon_coordinate = Vector2( 0, 0 ) +1/autotile/tile_size = Vector2( 8, 8 ) +1/autotile/spacing = 0 +1/autotile/occluder_map = [ ] +1/autotile/navpoly_map = [ ] +1/autotile/priority_map = [ ] +1/autotile/z_index_map = [ ] +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape_one_way = false +1/shape_one_way_margin = 0.0 +1/shapes = [ ] +1/z_index = 0 diff --git a/tilesets/t_mountain.tres b/tilesets/t_mountain.tres new file mode 100644 index 0000000..3382d99 --- /dev/null +++ b/tilesets/t_mountain.tres @@ -0,0 +1,218 @@ +[gd_resource type="TileSet" load_steps=17 format=2] + +[ext_resource path="res://graphics/tiles/mountain.png" type="Texture" id=1] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 8, 5, 0, 5, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 8, 5, 0, 5, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 8, 5, 0, 5, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 8, 0, 8, 0, 8, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 8, 2, 0, 2, 0, 2, 8, 2 ) + +[resource] +0/name = "grass.png 0" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 32, 32 ) +0/tile_mode = 2 +0/autotile/icon_coordinate = Vector2( 0, 0 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 1 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 +1/name = "grass.png 1" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 0, 24, 8, 8 ) +1/tile_mode = 2 +1/autotile/icon_coordinate = Vector2( 0, 0 ) +1/autotile/tile_size = Vector2( 8, 8 ) +1/autotile/spacing = 0 +1/autotile/occluder_map = [ ] +1/autotile/navpoly_map = [ ] +1/autotile/priority_map = [ ] +1/autotile/z_index_map = [ ] +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape_one_way = false +1/shape_one_way_margin = 0.0 +1/shapes = [ ] +1/z_index = 0 +2/name = "grass.png 2" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 0, 32, 32, 8 ) +2/tile_mode = 2 +2/autotile/icon_coordinate = Vector2( 0, 0 ) +2/autotile/tile_size = Vector2( 8, 8 ) +2/autotile/spacing = 0 +2/autotile/occluder_map = [ ] +2/autotile/navpoly_map = [ ] +2/autotile/priority_map = [ ] +2/autotile/z_index_map = [ ] +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape_one_way = false +2/shape_one_way_margin = 0.0 +2/shapes = [ ] +2/z_index = 0 +3/name = "mountain.png 3" +3/texture = ExtResource( 1 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 0, 0, 32, 32 ) +3/tile_mode = 0 +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape_one_way = false +3/shape_one_way_margin = 0.0 +3/shapes = [ ] +3/z_index = 0 diff --git a/tilesets/t_rust.tres b/tilesets/t_rust.tres new file mode 100644 index 0000000..e095af5 --- /dev/null +++ b/tilesets/t_rust.tres @@ -0,0 +1,171 @@ +[gd_resource type="TileSet" load_steps=18 format=2] + +[ext_resource path="res://graphics/tiles/rust.png" type="Texture" id=1] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 8, 7, 0, 7, 0, 1, 8, 1 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 0, 1, 8, 1, 8, 7, 0, 7 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 8, 7, 0, 7, 0, 1, 8, 1 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 0, 1, 8, 1, 8, 7, 0, 7 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 8, 7, 0, 7, 0, 1, 8, 1 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 8, 7, 0, 7, 0, 1, 8, 1 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 8, 6, 0, 6, 0, 2, 8, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 7, 8, 1, 8, 1, 1, 7, 1 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 1, 1, 8, 1, 8, 7, 1, 7 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 0, 1, 5, 1, 5, 7, 0, 7 ) + +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 8, 7, 3, 7, 3, 1, 8, 1 ) + +[resource] +0/name = "rust.png 0" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 32, 40 ) +0/tile_mode = 2 +0/autotile/icon_coordinate = Vector2( 0, 0 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 1 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 4 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 4 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 diff --git a/tilesets/t_station.tres b/tilesets/t_station.tres new file mode 100644 index 0000000..8c786ba --- /dev/null +++ b/tilesets/t_station.tres @@ -0,0 +1,277 @@ +[gd_resource type="TileSet" load_steps=27 format=2] + +[ext_resource path="res://graphics/tiles/station.png" type="Texture" id=1] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 8, 8, 0, 8, 0, 4, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=21] +points = PoolVector2Array( 4, 8, 0, 8, 0, 0, 4, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=22] +points = PoolVector2Array( 8, 8, 4, 8, 4, 3, 8, 3 ) + +[sub_resource type="ConvexPolygonShape2D" id=23] +points = PoolVector2Array( 8, 8, 0, 8, 0, 3, 8, 3 ) + +[sub_resource type="ConvexPolygonShape2D" id=24] +points = PoolVector2Array( 4, 8, 0, 8, 0, 3, 4, 3 ) + +[sub_resource type="ConvexPolygonShape2D" id=25] +points = PoolVector2Array( 8, 8, 4, 8, 4, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=26] +points = PoolVector2Array( 0, 8, 8, 4, 8, 8, 8, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=18] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=19] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=20] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[resource] +0/name = "station" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 32, 40 ) +0/tile_mode = 2 +0/autotile/icon_coordinate = Vector2( 1, 1 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 1 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 21 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 22 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 23 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 24 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 25 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 26 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 +1/name = "concrete" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 32, 0, 32, 32 ) +1/tile_mode = 1 +1/autotile/bitmask_mode = 1 +1/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +1/autotile/icon_coordinate = Vector2( 0, 3 ) +1/autotile/tile_size = Vector2( 8, 8 ) +1/autotile/spacing = 0 +1/autotile/occluder_map = [ ] +1/autotile/navpoly_map = [ ] +1/autotile/priority_map = [ ] +1/autotile/z_index_map = [ ] +1/autotile/fallback_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape = SubResource( 5 ) +1/shape_one_way = false +1/shape_one_way_margin = 1.0 +1/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +1/z_index = 0 diff --git a/fonts/2ndPubertyMono.ttf b/ui/2ndPubertyMono.ttf similarity index 100% rename from fonts/2ndPubertyMono.ttf rename to ui/2ndPubertyMono.ttf diff --git a/ui/2ndpuberty.fnt b/ui/2ndpuberty.fnt new file mode 100644 index 0000000..fc0407d --- /dev/null +++ b/ui/2ndpuberty.fnt @@ -0,0 +1,102 @@ +info face="2ndPubertyMono" size=16 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,2,1 spacing=-2,0 +common lineHeight=7 base=12 scaleW=512 scaleH=512 pages=1 packed=0 +page id=0 file="2ndpuberty.png" +chars count=97 +char id=0 x=108 y=20 width=8 height=20 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=0 +char id=10 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=0 page=0 chnl=0 +char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=7 page=0 chnl=0 +char id=33 x=333 y=0 width=9 height=20 xoffset=2 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=34 x=324 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=35 x=63 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=36 x=18 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=37 x=36 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=38 x=81 y=20 width=9 height=20 xoffset=1 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=39 x=360 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=40 x=405 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=41 x=414 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=42 x=99 y=20 width=9 height=20 xoffset=1 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=43 x=45 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=44 x=378 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=45 x=27 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=46 x=369 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=47 x=486 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=48 x=315 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=49 x=234 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=50 x=243 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=51 x=252 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=52 x=261 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=53 x=270 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=54 x=279 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=55 x=288 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=56 x=297 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=57 x=306 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=58 x=396 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=59 x=387 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=60 x=459 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=61 x=54 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=62 x=468 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=63 x=351 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=64 x=495 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=65 x=0 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=66 x=9 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=67 x=18 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=68 x=27 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=69 x=36 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=70 x=45 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=71 x=54 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=72 x=63 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=73 x=72 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=74 x=81 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=75 x=90 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=76 x=99 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=77 x=108 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=78 x=117 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=79 x=126 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=80 x=135 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=81 x=144 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=82 x=153 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=83 x=162 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=84 x=171 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=85 x=180 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=86 x=189 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=87 x=198 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=88 x=207 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=89 x=216 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=90 x=225 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=91 x=423 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=92 x=0 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=93 x=432 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=94 x=9 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=95 x=72 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=96 x=342 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=97 x=0 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=98 x=9 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=99 x=18 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=100 x=27 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=101 x=36 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=102 x=45 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=103 x=54 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=104 x=63 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=105 x=72 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=106 x=81 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=107 x=90 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=108 x=99 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=109 x=108 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=110 x=117 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=111 x=126 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=112 x=135 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=113 x=144 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=114 x=153 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=115 x=162 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=116 x=171 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=117 x=180 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=118 x=189 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=119 x=198 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=120 x=207 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=121 x=216 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=122 x=225 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=123 x=441 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=124 x=477 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=125 x=450 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=126 x=90 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +kernings count=0 diff --git a/ui/2ndpuberty.png b/ui/2ndpuberty.png new file mode 100644 index 0000000..e83773b Binary files /dev/null and b/ui/2ndpuberty.png differ diff --git a/ui/2ndpuberty.png.import b/ui/2ndpuberty.png.import new file mode 100644 index 0000000..22c2c9f --- /dev/null +++ b/ui/2ndpuberty.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2ndpuberty.png-9e79d2251b681d08f86c9ec889bb7f69.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/2ndpuberty.png" +dest_files=[ "res://.import/2ndpuberty.png-9e79d2251b681d08f86c9ec889bb7f69.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/fonts/2ndpuberty..tres b/ui/2ndpuberty.tres similarity index 100% rename from fonts/2ndpuberty..tres rename to ui/2ndpuberty.tres diff --git a/ui/2ndpuberty_compact.fnt b/ui/2ndpuberty_compact.fnt new file mode 100644 index 0000000..bd19d2e --- /dev/null +++ b/ui/2ndpuberty_compact.fnt @@ -0,0 +1,197 @@ +info face="2ndPuberty" size=10 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=0,0,0,0 spacing=0,0 +common lineHeight=10 base=10 scaleW=112 scaleH=160 pages=1 packed=0 +page id=0 file="2ndpuberty_scholar.png" +char id=0 x=0 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9786 x=7 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9787 x=14 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9829 x=21 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9830 x=28 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9827 x=35 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9824 x=42 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8226 x=49 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9688 x=56 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9625 x=63 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9689 x=70 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9794 x=77 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9792 x=84 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9834 x=91 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9835 x=98 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9788 x=105 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9658 x=0 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9668 x=7 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8597 x=14 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8252 x=21 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=182 x=28 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=167 x=35 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9644 x=42 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8616 x=49 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8593 x=56 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8595 x=63 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8594 x=70 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8592 x=77 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8735 x=84 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8596 x=91 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9650 x=98 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9660 x=105 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=32 x=0 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=33 x=7 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=34 x=14 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=35 x=21 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=36 x=28 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=37 x=35 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=38 x=42 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=39 x=49 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=40 x=56 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=41 x=63 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=42 x=70 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=43 x=77 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=44 x=84 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=45 x=91 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=46 x=98 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=47 x=105 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=48 x=0 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=49 x=7 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=50 x=14 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=51 x=21 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=52 x=28 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=53 x=35 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=54 x=42 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=55 x=49 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=56 x=56 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=57 x=63 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=58 x=70 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=59 x=77 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=60 x=84 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=61 x=91 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=62 x=98 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=63 x=105 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=64 x=0 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=65 x=7 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=66 x=14 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=67 x=21 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=68 x=28 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=69 x=35 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=70 x=42 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=71 x=49 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=72 x=56 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=73 x=63 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=74 x=70 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=75 x=77 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=76 x=84 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=77 x=91 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=78 x=98 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=79 x=105 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=80 x=0 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=81 x=7 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=82 x=14 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=83 x=21 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=84 x=28 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=85 x=35 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=86 x=42 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=87 x=49 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=88 x=56 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=89 x=63 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=90 x=70 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=91 x=77 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=92 x=84 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=93 x=91 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=94 x=98 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=95 x=105 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=96 x=0 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=97 x=7 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=98 x=14 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=99 x=21 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=100 x=28 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=101 x=35 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=102 x=42 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=103 x=49 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=104 x=56 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=105 x=63 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=106 x=70 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=107 x=77 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=108 x=84 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=109 x=91 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=110 x=98 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=111 x=105 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=112 x=0 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=113 x=7 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=114 x=14 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=115 x=21 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=116 x=28 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=117 x=35 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=118 x=42 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=119 x=49 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=120 x=56 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=121 x=63 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=122 x=70 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=123 x=77 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=124 x=84 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=125 x=91 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=126 x=98 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=127 x=105 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=199 x=0 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=252 x=7 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=233 x=14 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=226 x=21 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=228 x=28 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=224 x=35 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=229 x=42 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=231 x=49 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=234 x=56 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=235 x=63 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=232 x=70 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=239 x=77 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=238 x=84 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=236 x=91 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=196 x=98 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=197 x=105 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=201 x=0 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=230 x=7 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=198 x=14 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=244 x=21 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=246 x=28 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=242 x=35 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=251 x=42 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=249 x=49 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=255 x=56 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=214 x=63 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=220 x=70 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=162 x=77 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=163 x=84 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=165 x=91 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8359 x=98 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=402 x=105 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=225 x=0 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=237 x=7 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=243 x=14 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=250 x=21 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=241 x=28 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=209 x=35 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=170 x=42 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=186 x=49 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=191 x=56 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8976 x=63 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=172 x=70 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=189 x=77 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=188 x=84 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=161 x=91 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=171 x=98 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=187 x=105 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9617 x=0 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9618 x=7 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9619 x=14 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9474 x=21 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9508 x=28 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9569 x=35 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9570 x=42 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9558 x=49 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9557 x=56 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9571 x=63 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9553 x=70 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9559 x=77 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9565 x=84 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9564 x=91 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9563 x=98 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9488 x=105 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9492 x=0 y=120 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9524 x=7 y=120 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 diff --git a/ui/2ndpuberty_no_dropshadow.fnt b/ui/2ndpuberty_no_dropshadow.fnt new file mode 100644 index 0000000..1b40439 --- /dev/null +++ b/ui/2ndpuberty_no_dropshadow.fnt @@ -0,0 +1,102 @@ +info face="2ndPubertyMono" size=16 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,2,1 spacing=-2,0 +common lineHeight=7 base=12 scaleW=512 scaleH=512 pages=1 packed=0 +page id=0 file="2ndpuberty_no_dropshadow.png" +chars count=97 +char id=0 x=108 y=20 width=8 height=20 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=0 +char id=10 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=0 page=0 chnl=0 +char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=7 page=0 chnl=0 +char id=33 x=333 y=0 width=9 height=20 xoffset=2 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=34 x=324 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=35 x=63 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=36 x=18 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=37 x=36 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=38 x=81 y=20 width=9 height=20 xoffset=1 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=39 x=360 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=40 x=405 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=41 x=414 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=42 x=99 y=20 width=9 height=20 xoffset=1 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=43 x=45 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=44 x=378 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=45 x=27 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=46 x=369 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=47 x=486 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=48 x=315 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=49 x=234 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=50 x=243 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=51 x=252 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=52 x=261 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=53 x=270 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=54 x=279 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=55 x=288 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=56 x=297 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=57 x=306 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=58 x=396 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=59 x=387 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=60 x=459 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=61 x=54 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=62 x=468 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=63 x=351 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=64 x=495 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=65 x=0 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=66 x=9 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=67 x=18 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=68 x=27 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=69 x=36 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=70 x=45 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=71 x=54 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=72 x=63 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=73 x=72 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=74 x=81 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=75 x=90 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=76 x=99 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=77 x=108 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=78 x=117 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=79 x=126 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=80 x=135 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=81 x=144 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=82 x=153 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=83 x=162 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=84 x=171 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=85 x=180 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=86 x=189 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=87 x=198 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=88 x=207 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=89 x=216 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=90 x=225 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=91 x=423 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=92 x=0 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=93 x=432 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=94 x=9 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=95 x=72 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=96 x=342 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=97 x=0 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=98 x=9 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=99 x=18 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=100 x=27 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=101 x=36 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=102 x=45 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=103 x=54 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=104 x=63 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=105 x=72 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=106 x=81 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=107 x=90 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=108 x=99 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=109 x=108 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=110 x=117 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=111 x=126 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=112 x=135 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=113 x=144 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=114 x=153 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=115 x=162 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=116 x=171 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=117 x=180 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=118 x=189 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=119 x=198 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=120 x=207 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=121 x=216 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=122 x=225 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=123 x=441 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=124 x=477 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=125 x=450 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +char id=126 x=90 y=20 width=9 height=20 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=0 +kernings count=0 diff --git a/ui/2ndpuberty_no_dropshadow.png b/ui/2ndpuberty_no_dropshadow.png new file mode 100644 index 0000000..4a9b44a Binary files /dev/null and b/ui/2ndpuberty_no_dropshadow.png differ diff --git a/ui/2ndpuberty_no_dropshadow.png.import b/ui/2ndpuberty_no_dropshadow.png.import new file mode 100644 index 0000000..a1b2472 --- /dev/null +++ b/ui/2ndpuberty_no_dropshadow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2ndpuberty_no_dropshadow.png-5715774fcdadbbe232da32637e674577.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/2ndpuberty_no_dropshadow.png" +dest_files=[ "res://.import/2ndpuberty_no_dropshadow.png-5715774fcdadbbe232da32637e674577.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/ui/2ndpuberty_no_dropshadow.tres b/ui/2ndpuberty_no_dropshadow.tres new file mode 100644 index 0000000..03a6e01 --- /dev/null +++ b/ui/2ndpuberty_no_dropshadow.tres @@ -0,0 +1,6 @@ +[gd_resource type="Theme" load_steps=2 format=2] + +[ext_resource path="res://ui/2ndpuberty_scholar_no_dropshadow.fnt" type="BitmapFont" id=1] + +[resource] +default_font = ExtResource( 1 ) diff --git a/ui/2ndpuberty_outline.tres b/ui/2ndpuberty_outline.tres new file mode 100644 index 0000000..e2d56ae --- /dev/null +++ b/ui/2ndpuberty_outline.tres @@ -0,0 +1,8 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] + +[resource] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true diff --git a/ui/2ndpuberty_scholar.fnt b/ui/2ndpuberty_scholar.fnt new file mode 100644 index 0000000..bd19d2e --- /dev/null +++ b/ui/2ndpuberty_scholar.fnt @@ -0,0 +1,197 @@ +info face="2ndPuberty" size=10 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=0,0,0,0 spacing=0,0 +common lineHeight=10 base=10 scaleW=112 scaleH=160 pages=1 packed=0 +page id=0 file="2ndpuberty_scholar.png" +char id=0 x=0 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9786 x=7 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9787 x=14 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9829 x=21 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9830 x=28 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9827 x=35 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9824 x=42 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8226 x=49 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9688 x=56 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9625 x=63 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9689 x=70 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9794 x=77 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9792 x=84 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9834 x=91 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9835 x=98 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9788 x=105 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9658 x=0 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9668 x=7 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8597 x=14 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8252 x=21 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=182 x=28 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=167 x=35 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9644 x=42 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8616 x=49 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8593 x=56 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8595 x=63 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8594 x=70 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8592 x=77 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8735 x=84 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8596 x=91 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9650 x=98 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9660 x=105 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=32 x=0 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=33 x=7 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=34 x=14 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=35 x=21 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=36 x=28 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=37 x=35 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=38 x=42 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=39 x=49 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=40 x=56 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=41 x=63 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=42 x=70 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=43 x=77 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=44 x=84 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=45 x=91 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=46 x=98 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=47 x=105 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=48 x=0 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=49 x=7 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=50 x=14 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=51 x=21 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=52 x=28 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=53 x=35 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=54 x=42 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=55 x=49 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=56 x=56 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=57 x=63 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=58 x=70 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=59 x=77 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=60 x=84 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=61 x=91 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=62 x=98 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=63 x=105 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=64 x=0 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=65 x=7 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=66 x=14 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=67 x=21 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=68 x=28 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=69 x=35 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=70 x=42 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=71 x=49 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=72 x=56 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=73 x=63 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=74 x=70 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=75 x=77 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=76 x=84 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=77 x=91 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=78 x=98 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=79 x=105 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=80 x=0 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=81 x=7 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=82 x=14 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=83 x=21 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=84 x=28 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=85 x=35 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=86 x=42 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=87 x=49 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=88 x=56 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=89 x=63 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=90 x=70 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=91 x=77 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=92 x=84 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=93 x=91 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=94 x=98 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=95 x=105 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=96 x=0 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=97 x=7 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=98 x=14 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=99 x=21 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=100 x=28 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=101 x=35 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=102 x=42 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=103 x=49 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=104 x=56 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=105 x=63 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=106 x=70 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=107 x=77 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=108 x=84 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=109 x=91 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=110 x=98 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=111 x=105 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=112 x=0 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=113 x=7 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=114 x=14 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=115 x=21 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=116 x=28 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=117 x=35 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=118 x=42 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=119 x=49 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=120 x=56 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=121 x=63 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=122 x=70 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=123 x=77 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=124 x=84 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=125 x=91 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=126 x=98 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=127 x=105 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=199 x=0 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=252 x=7 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=233 x=14 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=226 x=21 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=228 x=28 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=224 x=35 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=229 x=42 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=231 x=49 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=234 x=56 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=235 x=63 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=232 x=70 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=239 x=77 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=238 x=84 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=236 x=91 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=196 x=98 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=197 x=105 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=201 x=0 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=230 x=7 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=198 x=14 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=244 x=21 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=246 x=28 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=242 x=35 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=251 x=42 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=249 x=49 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=255 x=56 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=214 x=63 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=220 x=70 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=162 x=77 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=163 x=84 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=165 x=91 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8359 x=98 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=402 x=105 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=225 x=0 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=237 x=7 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=243 x=14 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=250 x=21 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=241 x=28 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=209 x=35 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=170 x=42 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=186 x=49 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=191 x=56 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8976 x=63 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=172 x=70 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=189 x=77 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=188 x=84 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=161 x=91 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=171 x=98 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=187 x=105 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9617 x=0 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9618 x=7 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9619 x=14 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9474 x=21 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9508 x=28 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9569 x=35 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9570 x=42 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9558 x=49 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9557 x=56 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9571 x=63 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9553 x=70 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9559 x=77 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9565 x=84 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9564 x=91 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9563 x=98 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9488 x=105 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9492 x=0 y=120 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9524 x=7 y=120 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 diff --git a/ui/2ndpuberty_scholar.png b/ui/2ndpuberty_scholar.png new file mode 100644 index 0000000..b25c1bb Binary files /dev/null and b/ui/2ndpuberty_scholar.png differ diff --git a/ui/2ndpuberty_scholar.png.import b/ui/2ndpuberty_scholar.png.import new file mode 100644 index 0000000..896f0e4 --- /dev/null +++ b/ui/2ndpuberty_scholar.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2ndpuberty_scholar.png-a72ec1cb81eedf4c444998ed199e661b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/2ndpuberty_scholar.png" +dest_files=[ "res://.import/2ndpuberty_scholar.png-a72ec1cb81eedf4c444998ed199e661b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/ui/2ndpuberty_scholar_no_dropshadow.fnt b/ui/2ndpuberty_scholar_no_dropshadow.fnt new file mode 100644 index 0000000..8bb45d3 --- /dev/null +++ b/ui/2ndpuberty_scholar_no_dropshadow.fnt @@ -0,0 +1,197 @@ +info face="2ndPuberty" size=10 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=0,0,0,0 spacing=0,0 +common lineHeight=10 base=10 scaleW=112 scaleH=160 pages=1 packed=0 +page id=0 file="2ndpuberty_scholar_no_dropshadow.png" +char id=0 x=0 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9786 x=7 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9787 x=14 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9829 x=21 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9830 x=28 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9827 x=35 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9824 x=42 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8226 x=49 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9688 x=56 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9625 x=63 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9689 x=70 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9794 x=77 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9792 x=84 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9834 x=91 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9835 x=98 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9788 x=105 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9658 x=0 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9668 x=7 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8597 x=14 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8252 x=21 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=182 x=28 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=167 x=35 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9644 x=42 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8616 x=49 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8593 x=56 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8595 x=63 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8594 x=70 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8592 x=77 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8735 x=84 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8596 x=91 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9650 x=98 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9660 x=105 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=32 x=0 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=33 x=7 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=34 x=14 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=35 x=21 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=36 x=28 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=37 x=35 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=38 x=42 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=39 x=49 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=40 x=56 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=41 x=63 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=42 x=70 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=43 x=77 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=44 x=84 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=45 x=91 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=46 x=98 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=47 x=105 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=48 x=0 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=49 x=7 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=50 x=14 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=51 x=21 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=52 x=28 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=53 x=35 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=54 x=42 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=55 x=49 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=56 x=56 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=57 x=63 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=58 x=70 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=59 x=77 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=60 x=84 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=61 x=91 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=62 x=98 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=63 x=105 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=64 x=0 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=65 x=7 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=66 x=14 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=67 x=21 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=68 x=28 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=69 x=35 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=70 x=42 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=71 x=49 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=72 x=56 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=73 x=63 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=74 x=70 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=75 x=77 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=76 x=84 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=77 x=91 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=78 x=98 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=79 x=105 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=80 x=0 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=81 x=7 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=82 x=14 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=83 x=21 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=84 x=28 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=85 x=35 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=86 x=42 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=87 x=49 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=88 x=56 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=89 x=63 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=90 x=70 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=91 x=77 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=92 x=84 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=93 x=91 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=94 x=98 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=95 x=105 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=96 x=0 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=97 x=7 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=98 x=14 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=99 x=21 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=100 x=28 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=101 x=35 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=102 x=42 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=103 x=49 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=104 x=56 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=105 x=63 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=106 x=70 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=107 x=77 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=108 x=84 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=109 x=91 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=110 x=98 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=111 x=105 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=112 x=0 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=113 x=7 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=114 x=14 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=115 x=21 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=116 x=28 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=117 x=35 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=118 x=42 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=119 x=49 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=120 x=56 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=121 x=63 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=122 x=70 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=123 x=77 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=124 x=84 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=125 x=91 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=126 x=98 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=127 x=105 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=199 x=0 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=252 x=7 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=233 x=14 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=226 x=21 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=228 x=28 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=224 x=35 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=229 x=42 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=231 x=49 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=234 x=56 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=235 x=63 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=232 x=70 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=239 x=77 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=238 x=84 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=236 x=91 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=196 x=98 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=197 x=105 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=201 x=0 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=230 x=7 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=198 x=14 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=244 x=21 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=246 x=28 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=242 x=35 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=251 x=42 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=249 x=49 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=255 x=56 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=214 x=63 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=220 x=70 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=162 x=77 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=163 x=84 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=165 x=91 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8359 x=98 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=402 x=105 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=225 x=0 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=237 x=7 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=243 x=14 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=250 x=21 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=241 x=28 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=209 x=35 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=170 x=42 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=186 x=49 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=191 x=56 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8976 x=63 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=172 x=70 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=189 x=77 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=188 x=84 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=161 x=91 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=171 x=98 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=187 x=105 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9617 x=0 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9618 x=7 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9619 x=14 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9474 x=21 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9508 x=28 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9569 x=35 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9570 x=42 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9558 x=49 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9557 x=56 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9571 x=63 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9553 x=70 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9559 x=77 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9565 x=84 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9564 x=91 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9563 x=98 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9488 x=105 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9492 x=0 y=120 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9524 x=7 y=120 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 diff --git a/ui/2ndpuberty_scholar_no_dropshadow.png b/ui/2ndpuberty_scholar_no_dropshadow.png new file mode 100644 index 0000000..53f506b Binary files /dev/null and b/ui/2ndpuberty_scholar_no_dropshadow.png differ diff --git a/ui/2ndpuberty_scholar_no_dropshadow.png.import b/ui/2ndpuberty_scholar_no_dropshadow.png.import new file mode 100644 index 0000000..1a19c68 --- /dev/null +++ b/ui/2ndpuberty_scholar_no_dropshadow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2ndpuberty_scholar_no_dropshadow.png-7c8dec64a2dcb2b934910613b0e96566.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/2ndpuberty_scholar_no_dropshadow.png" +dest_files=[ "res://.import/2ndpuberty_scholar_no_dropshadow.png-7c8dec64a2dcb2b934910613b0e96566.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/ui/2ndpuberty_scholar_outline.fnt b/ui/2ndpuberty_scholar_outline.fnt new file mode 100644 index 0000000..38190d6 --- /dev/null +++ b/ui/2ndpuberty_scholar_outline.fnt @@ -0,0 +1,197 @@ +info face="2ndPuberty" size=10 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=0,0,0,0 spacing=0,0 +common lineHeight=10 base=10 scaleW=112 scaleH=160 pages=1 packed=0 +page id=0 file="2ndpuberty_scholar_outline.png" +char id=0 x=0 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9786 x=7 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9787 x=14 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9829 x=21 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9830 x=28 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9827 x=35 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9824 x=42 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8226 x=49 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9688 x=56 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9625 x=63 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9689 x=70 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9794 x=77 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9792 x=84 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9834 x=91 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9835 x=98 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9788 x=105 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9658 x=0 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9668 x=7 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8597 x=14 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8252 x=21 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=182 x=28 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=167 x=35 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9644 x=42 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8616 x=49 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8593 x=56 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8595 x=63 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8594 x=70 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8592 x=77 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8735 x=84 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8596 x=91 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9650 x=98 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9660 x=105 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=32 x=0 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=33 x=7 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=34 x=14 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=35 x=21 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=36 x=28 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=37 x=35 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=38 x=42 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=39 x=49 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=40 x=56 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=41 x=63 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=42 x=70 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=43 x=77 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=44 x=84 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=45 x=91 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=46 x=98 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=47 x=105 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=48 x=0 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=49 x=7 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=50 x=14 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=51 x=21 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=52 x=28 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=53 x=35 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=54 x=42 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=55 x=49 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=56 x=56 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=57 x=63 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=58 x=70 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=59 x=77 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=60 x=84 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=61 x=91 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=62 x=98 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=63 x=105 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=64 x=0 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=65 x=7 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=66 x=14 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=67 x=21 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=68 x=28 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=69 x=35 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=70 x=42 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=71 x=49 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=72 x=56 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=73 x=63 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=74 x=70 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=75 x=77 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=76 x=84 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=77 x=91 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=78 x=98 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=79 x=105 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=80 x=0 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=81 x=7 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=82 x=14 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=83 x=21 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=84 x=28 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=85 x=35 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=86 x=42 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=87 x=49 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=88 x=56 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=89 x=63 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=90 x=70 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=91 x=77 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=92 x=84 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=93 x=91 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=94 x=98 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=95 x=105 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=96 x=0 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=97 x=7 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=98 x=14 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=99 x=21 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=100 x=28 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=101 x=35 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=102 x=42 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=103 x=49 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=104 x=56 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=105 x=63 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=106 x=70 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=107 x=77 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=108 x=84 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=109 x=91 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=110 x=98 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=111 x=105 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=112 x=0 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=113 x=7 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=114 x=14 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=115 x=21 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=116 x=28 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=117 x=35 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=118 x=42 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=119 x=49 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=120 x=56 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=121 x=63 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=122 x=70 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=123 x=77 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=124 x=84 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=125 x=91 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=126 x=98 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=127 x=105 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=199 x=0 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=252 x=7 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=233 x=14 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=226 x=21 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=228 x=28 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=224 x=35 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=229 x=42 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=231 x=49 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=234 x=56 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=235 x=63 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=232 x=70 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=239 x=77 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=238 x=84 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=236 x=91 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=196 x=98 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=197 x=105 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=201 x=0 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=230 x=7 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=198 x=14 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=244 x=21 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=246 x=28 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=242 x=35 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=251 x=42 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=249 x=49 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=255 x=56 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=214 x=63 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=220 x=70 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=162 x=77 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=163 x=84 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=165 x=91 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8359 x=98 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=402 x=105 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=225 x=0 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=237 x=7 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=243 x=14 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=250 x=21 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=241 x=28 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=209 x=35 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=170 x=42 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=186 x=49 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=191 x=56 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8976 x=63 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=172 x=70 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=189 x=77 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=188 x=84 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=161 x=91 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=171 x=98 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=187 x=105 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9617 x=0 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9618 x=7 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9619 x=14 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9474 x=21 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9508 x=28 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9569 x=35 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9570 x=42 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9558 x=49 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9557 x=56 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9571 x=63 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9553 x=70 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9559 x=77 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9565 x=84 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9564 x=91 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9563 x=98 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9488 x=105 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9492 x=0 y=120 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9524 x=7 y=120 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 diff --git a/ui/2ndpuberty_scholar_outline.png b/ui/2ndpuberty_scholar_outline.png new file mode 100644 index 0000000..edacf10 Binary files /dev/null and b/ui/2ndpuberty_scholar_outline.png differ diff --git a/ui/2ndpuberty_scholar_outline.png.import b/ui/2ndpuberty_scholar_outline.png.import new file mode 100644 index 0000000..f9a18cc --- /dev/null +++ b/ui/2ndpuberty_scholar_outline.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2ndpuberty_scholar_outline.png-ba984a285473c720426af8de55ff24d7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/2ndpuberty_scholar_outline.png" +dest_files=[ "res://.import/2ndpuberty_scholar_outline.png-ba984a285473c720426af8de55ff24d7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/ui/Boba Date.otf b/ui/Boba Date.otf new file mode 100644 index 0000000..c66647a Binary files /dev/null and b/ui/Boba Date.otf differ diff --git a/ui/HooskaiChamferedSquare.ttf b/ui/HooskaiChamferedSquare.ttf new file mode 100644 index 0000000..2817281 Binary files /dev/null and b/ui/HooskaiChamferedSquare.ttf differ diff --git a/ui/Kozuka Mincho Std H.otf b/ui/Kozuka Mincho Std H.otf new file mode 100644 index 0000000..e698a3e Binary files /dev/null and b/ui/Kozuka Mincho Std H.otf differ diff --git a/ui/Minimal5x5Monospaced.ttf b/ui/Minimal5x5Monospaced.ttf new file mode 100644 index 0000000..8ef9fa1 Binary files /dev/null and b/ui/Minimal5x5Monospaced.ttf differ diff --git a/ui/PressStart2P-Regular.ttf b/ui/PressStart2P-Regular.ttf new file mode 100644 index 0000000..2442aff Binary files /dev/null and b/ui/PressStart2P-Regular.ttf differ diff --git a/ui/arrow_figure_8.tres b/ui/arrow_figure_8.tres new file mode 100644 index 0000000..f053b52 --- /dev/null +++ b/ui/arrow_figure_8.tres @@ -0,0 +1,10 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=2] + +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=1] + +[resource] +shader = ExtResource( 1 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) diff --git a/ui/border.png b/ui/border.png new file mode 100644 index 0000000..87d458a Binary files /dev/null and b/ui/border.png differ diff --git a/ui/border.png.import b/ui/border.png.import new file mode 100644 index 0000000..3a810b9 --- /dev/null +++ b/ui/border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/border.png-1616a5cc9a11b0652c0316a2cd685d5e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/border.png" +dest_files=[ "res://.import/border.png-1616a5cc9a11b0652c0316a2cd685d5e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/ui/panel.png b/ui/panel.png new file mode 100644 index 0000000..af53798 Binary files /dev/null and b/ui/panel.png differ diff --git a/ui/panel.png.import b/ui/panel.png.import new file mode 100644 index 0000000..2818487 --- /dev/null +++ b/ui/panel.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/panel.png-4debde5d1941508c13098c29f52f1bf0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/panel.png" +dest_files=[ "res://.import/panel.png-4debde5d1941508c13098c29f52f1bf0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/ui/theme.tres b/ui/theme.tres new file mode 100644 index 0000000..60e54f1 --- /dev/null +++ b/ui/theme.tres @@ -0,0 +1,68 @@ +[gd_resource type="Theme" load_steps=17 format=2] + +[ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=1] +[ext_resource path="res://graphics/hud/hslider_slider.png" type="Texture" id=2] +[ext_resource path="res://graphics/hud/hslider_grabber.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/hslider_grabber_focused.png" type="Texture" id=4] +[ext_resource path="res://ui/panel.png" type="Texture" id=5] + +[sub_resource type="StyleBoxEmpty" id=3] + +[sub_resource type="StyleBoxFlat" id=9] +content_margin_bottom = 0.0 +bg_color = Color( 0, 0, 0, 0 ) +border_width_bottom = 1 +border_color = Color( 1, 1, 1, 1 ) +expand_margin_bottom = 2.0 + +[sub_resource type="StyleBoxEmpty" id=8] + +[sub_resource type="StyleBoxLine" id=17] +color = Color( 0.501961, 0.501961, 0.501961, 1 ) + +[sub_resource type="StyleBoxEmpty" id=4] + +[sub_resource type="StyleBoxEmpty" id=10] + +[sub_resource type="StyleBoxTexture" id=6] +texture = ExtResource( 2 ) +region_rect = Rect2( 0, 0, 1, 8 ) + +[sub_resource type="StyleBoxTexture" id=11] +texture = ExtResource( 5 ) +region_rect = Rect2( 0, 0, 9, 9 ) +margin_left = 3.0 +margin_right = 3.0 +margin_top = 3.0 +margin_bottom = 3.0 + +[sub_resource type="StyleBoxEmpty" id=16] + +[sub_resource type="StyleBoxEmpty" id=2] +content_margin_left = 4.0 +content_margin_right = 4.0 + +[sub_resource type="StyleBoxEmpty" id=18] + +[resource] +default_font = ExtResource( 1 ) +Button/colors/font_color = Color( 0.690196, 0.690196, 0.690196, 1 ) +Button/styles/disabled = SubResource( 3 ) +Button/styles/focus = SubResource( 9 ) +Button/styles/hover = SubResource( 8 ) +Button/styles/normal = SubResource( 3 ) +Button/styles/pressed = SubResource( 3 ) +HSeparator/styles/separator = SubResource( 17 ) +HSlider/icons/grabber = ExtResource( 3 ) +HSlider/icons/grabber_highlight = ExtResource( 4 ) +HSlider/styles/grabber_area = SubResource( 4 ) +HSlider/styles/grabber_area_highlight = SubResource( 10 ) +HSlider/styles/slider = SubResource( 6 ) +Panel/styles/panel = SubResource( 11 ) +PanelContainer/styles/panel = SubResource( 11 ) +TabContainer/colors/font_color_fg = Color( 1, 1, 1, 1 ) +TabContainer/styles/panel = SubResource( 16 ) +TabContainer/styles/tab_bg = SubResource( 2 ) +TabContainer/styles/tab_disabled = SubResource( 2 ) +TabContainer/styles/tab_fg = SubResource( 2 ) +VScrollBar/styles/scroll = SubResource( 18 )