Repository: HarmonyHoney/ROTA Branch: master4 Commit: de119d8daad6 Files: 538 Total size: 1.2 MB Directory structure: gitextract_588580s0/ ├── .editorconfig ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── flatpak.yml │ └── godot.yml ├── .gitignore ├── LICENSE ├── addons/ │ └── steam_api/ │ ├── LICENSE │ ├── examples/ │ │ ├── example.gd │ │ └── example.tscn │ ├── plugin.cfg │ ├── plugin.gd │ ├── readme.md │ ├── settings.gd │ ├── settings.tres │ ├── setup.gd │ ├── setup.tscn │ ├── steam.gd │ ├── steam_api.gdnlib │ ├── steam_api.gdns │ ├── steam_callback.gdns │ ├── steam_find_leaderboard_result.gdns │ ├── steam_friends.gdns │ ├── steam_i.gd │ ├── steam_id.gdns │ ├── steam_leaderboard.gdns │ ├── steam_leaderboard_entries.gdns │ ├── steam_leaderboard_entry.gdns │ ├── steam_leaderboard_scores_downloaded.gdns │ ├── steam_leaderboard_uploaded.gdns │ ├── steam_user.gdns │ └── steam_user_stats.gdns ├── default_bus_layout.tres ├── default_env.tres ├── export/ │ ├── butler_push.bat │ ├── mac_unzip.bat │ ├── ready_folders.bat │ └── steam_clean.bat ├── export_presets.cfg ├── icon.png.import ├── linux/ │ ├── .gdignore │ ├── net.hhoney.rota.desktop │ ├── net.hhoney.rota.metainfo.xml │ ├── net.hhoney.rota.releases.xml │ └── net.hhoney.rota.yml ├── media/ │ ├── audio/ │ │ ├── music/ │ │ │ ├── arcade2.mp3.import │ │ │ ├── ost1.mp3.import │ │ │ ├── ost2.mp3.import │ │ │ ├── ost3.mp3.import │ │ │ ├── ost4.mp3.import │ │ │ ├── ost5.mp3.import │ │ │ └── ost6.mp3.import │ │ ├── sfx/ │ │ │ ├── Randomize104.wav.import │ │ │ ├── Randomize105.wav.import │ │ │ ├── bamblong1.wav.import │ │ │ ├── bell1.wav.import │ │ │ ├── btn0.wav.import │ │ │ ├── btn3.wav.import │ │ │ ├── coin0.wav.import │ │ │ ├── coin1.wav.import │ │ │ ├── crate_land.wav.import │ │ │ ├── crate_move.wav.import │ │ │ ├── door_close.wav.import │ │ │ ├── door_squeak.wav.import │ │ │ ├── doorknob.wav.import │ │ │ ├── explode0.wav.import │ │ │ ├── explode1.wav.import │ │ │ ├── explode2.wav.import │ │ │ ├── fallout0.wav.import │ │ │ ├── fallout1.wav.import │ │ │ ├── fallout2.wav.import │ │ │ ├── fallout3.wav.import │ │ │ ├── guitar_pluck.wav.import │ │ │ ├── hit0.wav.import │ │ │ ├── hit10.wav.import │ │ │ ├── jump1.wav.import │ │ │ ├── jump2.wav.import │ │ │ ├── jump3.wav.import │ │ │ ├── jump4.wav.import │ │ │ ├── key.wav.import │ │ │ ├── mixkit-light-rain-looping-1249.wav.import │ │ │ ├── oneup0.wav.import │ │ │ ├── oneup1.wav.import │ │ │ ├── oneup2.wav.import │ │ │ ├── piano_high.wav.import │ │ │ ├── player_jump.wav.import │ │ │ ├── player_land.wav.import │ │ │ ├── player_punch0.wav.import │ │ │ ├── player_punch1.wav.import │ │ │ ├── player_punch2.wav.import │ │ │ ├── portal0.wav.import │ │ │ ├── sfx4.wav.import │ │ │ ├── shine_get.wav.import │ │ │ ├── shine_sparkle.wav.import │ │ │ ├── slap0.wav.import │ │ │ ├── slap1.wav.import │ │ │ ├── slap2.wav.import │ │ │ ├── teleport.wav.import │ │ │ ├── transition.wav.import │ │ │ ├── zap0.wav.import │ │ │ └── ziherette1.wav.import │ │ └── voice/ │ │ ├── adore_flowers.wav.import │ │ ├── good_day.wav.import │ │ └── lovely_weather.wav.import │ ├── font/ │ │ ├── Fontopo.otf │ │ ├── KodomoRounded.otf │ │ ├── mini-wakuwaku.otf │ │ └── profile/ │ │ ├── DoorLabel.tres │ │ ├── FileCard.tres │ │ ├── OptionsHeader.tres │ │ ├── OptionsHeader2.tres │ │ ├── OptionsItem.tres │ │ ├── PatchNumber.tres │ │ ├── PauseHeader.tres │ │ ├── PauseItem.tres │ │ ├── RemapKey.tres │ │ ├── UI_Keys.tres │ │ └── UI_gem.tres │ └── image/ │ ├── UI/ │ │ ├── Audio.png.import │ │ ├── HarmonyHoneyLogo.svg.import │ │ ├── Input.png.import │ │ ├── Video.png.import │ │ ├── arrow_up.png.import │ │ ├── boot.png.import │ │ ├── btn_a.png.import │ │ ├── btn_b.png.import │ │ ├── btn_lb.png.import │ │ ├── btn_ls.png.import │ │ ├── btn_lt.png.import │ │ ├── btn_rb.png.import │ │ ├── btn_rs.png.import │ │ ├── btn_rt.png.import │ │ ├── btn_select.png.import │ │ ├── btn_start.png.import │ │ ├── btn_x.png.import │ │ ├── btn_y.png.import │ │ ├── clock.png.import │ │ ├── door_arrow.png.import │ │ ├── dpad.png.import │ │ ├── dpad_up.png.import │ │ ├── eye.svg.import │ │ ├── foot.png.import │ │ ├── godot_logo.svg.import │ │ ├── hand.png.import │ │ ├── harmony-monroe-square-white.png.import │ │ ├── harmony-monroe-white.png.import │ │ ├── heart.svg.import │ │ ├── hhoney_logo.svg.import │ │ ├── key_2.png.import │ │ ├── key_3.png.import │ │ ├── key_up.png.import │ │ ├── key_up_logo.png.import │ │ ├── key_up_square.png.import │ │ ├── keys.png.import │ │ ├── l_stick_down.png.import │ │ ├── l_stick_left.png.import │ │ ├── l_stick_right.png.import │ │ ├── l_stick_up.png.import │ │ ├── magnify.png.import │ │ ├── r_stick_down.png.import │ │ ├── r_stick_left.png.import │ │ ├── r_stick_right.png.import │ │ ├── r_stick_up.png.import │ │ ├── reset.png.import │ │ ├── reset.svg.import │ │ ├── title.png.import │ │ └── title_splash.png.import │ ├── arcade/ │ │ └── candy-sheet.png.import │ ├── assets/ │ │ ├── .gdignore │ │ └── screens/ │ │ ├── .gdignore │ │ └── thumb/ │ │ └── .gdignore │ ├── box/ │ │ ├── box-100.png.import │ │ ├── box-400.png.import │ │ ├── box_both.png.import │ │ ├── box_push.png.import │ │ ├── round_rect100.png.import │ │ ├── round_rect200.png.import │ │ ├── round_rect400.png.import │ │ └── treads.png.import │ ├── details/ │ │ ├── TreeBark.svg.import │ │ ├── TreeTop.svg.import │ │ ├── arcade_back.png.import │ │ ├── arcade_cabinet.png.import │ │ ├── arcade_front.png.import │ │ ├── bench.svg.import │ │ ├── candle.png.import │ │ ├── circle.svg.import │ │ ├── circle100.png.import │ │ ├── circle_half.svg.import │ │ ├── fence_pattern.svg.import │ │ ├── flame.png.import │ │ ├── lamppost.svg.import │ │ ├── pine_tree.png.import │ │ ├── raindrop.svg.import │ │ ├── raindrop2.svg.import │ │ ├── saguaro.svg.import │ │ ├── snowman.svg.import │ │ └── star.svg.import │ ├── gobot.png.import │ ├── icon/ │ │ ├── android-icon192.png.import │ │ ├── icon100.png.import │ │ ├── icon128.png.import │ │ ├── icon16.png.import │ │ ├── icon200.png.import │ │ ├── icon256.png.import │ │ ├── icon32.png.import │ │ ├── icon48.png.import │ │ ├── icon64.png.import │ │ └── icon96.png.import │ ├── spike/ │ │ ├── spike.png.import │ │ └── spike_tile.png.import │ ├── tiles/ │ │ ├── tile1_0.png.import │ │ ├── tile1_1.png.import │ │ ├── tile1_2.png.import │ │ ├── tile1_3.png.import │ │ ├── tile1_4.png.import │ │ ├── tile2_0.png.import │ │ ├── tile2_1.png.import │ │ ├── tile2_2.png.import │ │ ├── tile2_3.png.import │ │ ├── tile2_4.png.import │ │ ├── tile3_0.png.import │ │ ├── tile3_1.png.import │ │ ├── tile3_2.png.import │ │ ├── tile3_3.png.import │ │ ├── tile3_4.png.import │ │ ├── tile4_0.png.import │ │ ├── tile4_1.png.import │ │ ├── tile4_2.png.import │ │ ├── tile4_3.png.import │ │ ├── tile4_4.png.import │ │ ├── tile5_0.png.import │ │ ├── tile5_1.png.import │ │ ├── tile5_2.png.import │ │ ├── tile5_3.png.import │ │ ├── tile5_4.png.import │ │ ├── tile6_0.png.import │ │ ├── tile6_1.png.import │ │ ├── tile6_2.png.import │ │ ├── tile6_3.png.import │ │ ├── tile6_4.png.import │ │ ├── tile7_0.png.import │ │ ├── tile7_1.png.import │ │ ├── tile7_2.png.import │ │ ├── tile7_3.png.import │ │ ├── tile7_4.png.import │ │ ├── tile_0.png.import │ │ ├── tile_1.png.import │ │ ├── tile_2.png.import │ │ ├── tile_3.png.import │ │ └── tile_4.png.import │ ├── white_square_100x.png.import │ └── white_square_400x.png.import ├── project.godot ├── readme.md └── src/ ├── actor/ │ ├── Box.gd │ ├── Box.tscn │ ├── Chat.gd │ ├── Chat.tscn │ ├── ChatTree.gd │ ├── Clock.tscn │ ├── Fade.gd │ ├── Gem.tscn │ ├── Goal.gd │ ├── Goal.tscn │ ├── Guide.gd │ ├── Hair.gd │ ├── Hair.tscn │ ├── Mirror.gd │ ├── Mirror.tscn │ ├── Player.gd │ ├── Player.tscn │ ├── Snowball.gd │ ├── Snowball.tscn │ ├── Spike.gd │ ├── Spike.tscn │ ├── door/ │ │ ├── Arrow.gd │ │ ├── Arrow.tscn │ │ ├── Door.gd │ │ ├── DoorBase.tscn │ │ ├── DoorBig.gd │ │ ├── DoorBig.tscn │ │ ├── DoorLittle.gd │ │ ├── DoorLittle.tscn │ │ └── DoorSpawn.tscn │ ├── hair/ │ │ ├── back/ │ │ │ ├── Afro.tscn │ │ │ ├── Braid.tscn │ │ │ ├── Braids.tscn │ │ │ ├── Long.tscn │ │ │ ├── Medium.tscn │ │ │ └── Short.tscn │ │ └── front/ │ │ ├── Bangs.tscn │ │ ├── Bun.tscn │ │ ├── Buns.tscn │ │ ├── FlatTop.tscn │ │ ├── FlowerPetals.tscn │ │ ├── Mohawk.tscn │ │ ├── OneLong.tscn │ │ ├── OneShort.tscn │ │ ├── TwoLong.tscn │ │ └── TwoShort.tscn │ ├── hat/ │ │ ├── Candle.tscn │ │ ├── Carrot.tscn │ │ └── FlowerPetals.tscn │ └── scale_x.gd ├── arcade/ │ ├── Arcade.gd │ ├── Arcade.tscn │ ├── ArcadeCab.tscn │ ├── ArcadeGame.gd │ ├── ArcadeGame.tscn │ ├── AttractAudio.gd │ ├── Candy.gd │ ├── Candy.tscn │ ├── Player.gd │ ├── Player.tscn │ ├── Screen.gd │ ├── Wrapper.gd │ └── maps/ │ ├── 0.tscn │ ├── 1.tscn │ ├── 2.tscn │ ├── 2a.tscn │ ├── 2b.tscn │ ├── 3a.tscn │ ├── 3b.tscn │ ├── 3c.tscn │ ├── 3d.tscn │ ├── 3e.tscn │ ├── 4a.tscn │ ├── 4b.tscn │ ├── 4c.tscn │ ├── 4d.tscn │ ├── 5.tscn │ ├── 5a.tscn │ ├── 5b.tscn │ ├── 6.tscn │ ├── 6a.tscn │ ├── 7.tscn │ ├── 7a.tscn │ └── 8.tscn ├── autoload/ │ ├── Audio.gd │ ├── Audio.tscn │ ├── Cam.gd │ ├── Cam.tscn │ ├── CheatCode.gd │ ├── Clouds.gd │ ├── Clouds.tscn │ ├── Music.gd │ ├── Shared.gd │ ├── Shared.tscn │ ├── UI.gd │ ├── UI.tscn │ ├── Wipe.gd │ ├── Wipe.tscn │ ├── btn.gd │ ├── touch_screen.gd │ ├── touch_screen.tscn │ └── touch_screen_button.gd ├── class/ │ ├── EaseMover.gd │ ├── SaveDict.gd │ └── shape/ │ ├── Circle.gd │ ├── Petals.gd │ ├── Poly2Mesh.gd │ ├── PolyShape.gd │ ├── Rectangle.gd │ └── TreeTop.gd ├── cutscene/ │ ├── Clock.gd │ ├── Cutscene.gd │ ├── Cutscene.tscn │ ├── DoorUnlock.gd │ ├── GemCollect.gd │ ├── GoalShow.gd │ └── StartGame.gd ├── detail/ │ ├── BarrelCacti.gd │ ├── BarrelCacti.tscn │ ├── Bench.tscn │ ├── Candle.tscn │ ├── Fence.gd │ ├── Fence.tscn │ ├── Flower.gd │ ├── Flower.tscn │ ├── FlowerPetals.tscn │ ├── Lamppost.tscn │ ├── LightBase.gd │ ├── PaletteSwap.gd │ ├── PineTree.tscn │ ├── RockCircle.tscn │ ├── RockSquare.tscn │ ├── Rocks.tscn │ ├── Saguaro.tscn │ ├── SignGrab.tscn │ ├── SignReset.tscn │ ├── SignSpin.tscn │ ├── SignZoom.tscn │ ├── Snowman.tscn │ ├── Spring.gd │ ├── Tree.tscn │ ├── TreeTop.tscn │ └── Visible.gd ├── map/ │ ├── _test/ │ │ └── 1.tscn │ └── worlds/ │ ├── 0/ │ │ ├── 0_hub.tscn │ │ ├── 1_start.tscn │ │ └── 2_end.tscn │ ├── 1/ │ │ ├── 0_hub.tscn │ │ ├── 2.tscn │ │ ├── 3.tscn │ │ ├── 4.tscn │ │ ├── 5.tscn │ │ ├── 6.tscn │ │ └── 7.tscn │ ├── 2/ │ │ ├── 0_hub.tscn │ │ ├── 1.tscn │ │ ├── 2.tscn │ │ ├── 3.tscn │ │ ├── 4.tscn │ │ └── 5.tscn │ ├── 2A/ │ │ ├── 0_hub.tscn │ │ ├── 1.tscn │ │ ├── 2.tscn │ │ ├── 4.tscn │ │ ├── 5.tscn │ │ ├── 6.tscn │ │ └── 7.tscn │ ├── 2B/ │ │ ├── 0_hub.tscn │ │ ├── 1.tscn │ │ ├── 2.tscn │ │ ├── 3.tscn │ │ ├── 4.tscn │ │ ├── 5.tscn │ │ └── 6.tscn │ ├── 2C/ │ │ ├── 0_hub.tscn │ │ ├── 1.tscn │ │ ├── 2.tscn │ │ ├── 3.tscn │ │ ├── 4.tscn │ │ ├── 5.tscn │ │ └── 6.tscn │ ├── 3/ │ │ ├── 0_hub.tscn │ │ ├── 1.tscn │ │ ├── 2.tscn │ │ ├── 3.tscn │ │ ├── 4.tscn │ │ ├── 5.tscn │ │ ├── 6.tscn │ │ └── 7.tscn │ ├── 3A/ │ │ ├── 0_hub.tscn │ │ ├── 1.tscn │ │ ├── 2.tscn │ │ ├── 3.tscn │ │ ├── 4.tscn │ │ ├── 5.tscn │ │ └── 6.tscn │ └── 3B/ │ ├── 0_hub.tscn │ ├── 1.tscn │ ├── 2.tscn │ ├── 3.tscn │ ├── 4.tscn │ ├── 5.tscn │ ├── 6.tscn │ ├── 7.tscn │ └── 8.tscn ├── menu/ │ ├── AttractMode.gd │ ├── DemoShow.gd │ ├── FileCard.gd │ ├── FileCard.tscn │ ├── MenuBase.gd │ ├── MenuBoot.gd │ ├── MenuFile.gd │ ├── MenuFileDelete.gd │ ├── MenuFileOpen.gd │ ├── MenuMakeover.gd │ ├── MenuMakeover.tscn │ ├── MenuPause.gd │ ├── MenuPause.tscn │ ├── MenuTitle.gd │ ├── MenuTitle.tscn │ ├── Splash.gd │ ├── Splash.tscn │ ├── button_modulate.gd │ ├── options/ │ │ ├── Key.gd │ │ ├── Key.tscn │ │ ├── MenuOptions.gd │ │ ├── MenuOptions.tscn │ │ ├── MenuRemap.gd │ │ ├── MenuRemap.tscn │ │ ├── OpenRemap.gd │ │ ├── Row.gd │ │ ├── Row.tscn │ │ └── scroll/ │ │ ├── Borderless.gd │ │ ├── Color.gd │ │ ├── Color.tscn │ │ ├── Fullscreen.gd │ │ ├── Hairstyle.gd │ │ ├── Hairstyle.tscn │ │ ├── Mouse.gd │ │ ├── Resolution.gd │ │ ├── Scroll.gd │ │ ├── ScrollVar.gd │ │ ├── Volume.gd │ │ ├── Volume.tscn │ │ └── Vsync.gd │ └── round_button.gd ├── shader/ │ ├── add_color.gdshader │ ├── arrow_test.gdshader │ ├── box.gdshader │ ├── button.gdshader │ ├── circle.gdshader │ ├── circle_fade.gdshader │ ├── door.gdshader │ ├── door_arrow.gdshader │ ├── door_big.gdshader │ ├── fade_x.gdshader │ ├── goal.gdshader │ ├── guide.gdshader │ ├── inset_shadow.gdshader │ ├── inside_circle.gdshader │ ├── inside_round_rect.gdshader │ ├── moon.gdshader │ ├── offset_y.gdshader │ ├── outline2D_outer.shader │ ├── radial_blur_guy.gdshader │ ├── repeat_x_axis.gdshader │ ├── sky.gdshader │ ├── sky2.gdshader │ ├── sky_screen.gdshader │ ├── spike.gdshader │ └── wipe.gdshader ├── stage/ │ ├── SolidTileMap.gd │ ├── SolidTileMap.tscn │ ├── SpikeMap.gd │ ├── SpikeMap.tscn │ └── tileset/ │ ├── TileSet0.tres │ ├── TileSet1.tres │ ├── TileSet2.tres │ ├── TileSet3.tres │ ├── TileSet4.tres │ ├── TileSet5.tres │ └── TileSet6.tres └── theme/ ├── shadow_text.tres └── title_text.tres ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ # EditorConfig root = true [*] charset = utf-8 [*.{gd,dialogue}] indent_style = tab indent_size = 4 [*.{yaml,yml,xml}] indent_style = space indent_size = 2 ================================================ FILE: .github/FUNDING.yml ================================================ github: HarmonyHoney ko_fi: hhoney custom: - https://harmonymonroe.itch.io/ - https://store.steampowered.com/developer/HarmonyMonroe - https://www.youtube.com/@hhoney7 # Unused by keeping here as a reminder patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry polar: # Replace with a single Polar username buy_me_a_coffee: # Replace with a single Buy Me a Coffee username thanks_dev: # Replace with a single thanks.dev username ================================================ FILE: .github/workflows/flatpak.yml ================================================ name: Flatpak on: push: branches: - master4 pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: flatpak: runs-on: ubuntu-latest container: image: ghcr.io/flathub-infra/flatpak-github-actions:freedesktop-24.08 options: --privileged steps: - uses: actions/checkout@v4 - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: bundle: rota.flatpak manifest-path: linux/net.hhoney.rota.yml cache-key: "flatpak-builder-${{ github.sha }}" ================================================ FILE: .github/workflows/godot.yml ================================================ name: "Godot Engine" on: workflow_dispatch: pull_request: release: types: - released env: GODOT_VERSION: 3.6 EXPORT_NAME: rota-ci jobs: export: name: Export runs-on: ubuntu-latest container: image: docker.io/smks/godot-ci:3.6 steps: - name: Checkout uses: actions/checkout@v4 with: lfs: true - name: Set up export templates run: | mkdir -v -p ~/.local/share/godot/templates/ mv /root/.local/share/godot/templates/${GODOT_VERSION}.stable ~/.local/share/godot/templates/${GODOT_VERSION}.stable - name: Export run: | mkdir --verbose --parents ./export/linux godot --no-window --path=./project.godot --export-pack "Linux/X11" ./export/linux/${EXPORT_NAME}.pck - name: Upload artifact uses: actions/upload-artifact@v4 with: name: ${{ env.EXPORT_NAME }} path: export/linux/${{ env.EXPORT_NAME }}.pck release: name: Release needs: export if: ${{ github.event_name == 'release' }} runs-on: ubuntu-latest steps: - name: Download artifact uses: actions/download-artifact@v4 with: name: ${{ env.EXPORT_NAME }} - name: Upload to release env: GITHUB_TOKEN: ${{ github.token }} run: | mv '${{ env.EXPORT_NAME }}.pck' '${{ env.EXPORT_NAME }}-${{ github.ref_name }}.pck' gh release upload '${{ github.ref_name }}' '${{ env.EXPORT_NAME }}-${{ github.ref_name }}.pck' --repo '${{ github.repository }}' ================================================ FILE: .gitignore ================================================ # Imported translations (automatically generated from CSV files) *.translation # custom .flatpak-builder/ .import/ [Aa]ndroid/ [Ee]xport/*/ [Ee]xport/_mac* ================================================ FILE: LICENSE ================================================ Copyright (c) 2025 Harmony Honey Monroe 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. ================================================ FILE: addons/steam_api/LICENSE ================================================ MIT License Copyright (c) 2021 Sam Murray 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. ================================================ FILE: addons/steam_api/examples/example.gd ================================================ extends Node2D func _ready(): print(Steam.is_init()) print(Steam.user.get_steam_id().get_account_id()) Steam.clear_achievement("gator_god") Steam.set_achievement("gator_god") Steam.set_leaderboard_score("High Score", 982, Steam.LeaderboardUploadScoreMethod.KeepBest, PoolIntArray([5, 5, 3])) for i in Steam.user_stats.get_num_achievements(): print(Steam.user_stats.get_achievement_name(i)) var scores = yield(Steam.get_leaderboard_scores("High Score", 0, 10, Steam.LeaderboardDataRequest.Global, 3), "done") print(scores) Steam.friends.connect("game_overlay_activated", self, "_on_game_overlay_activated") Steam.friends.activate_game_overlay_to_web_page("https://steamcommunity.com/") Steam.friends.activate_game_overlay_to_store(1435470, Steam.OverlayToStoreFlag.AddToCart) Steam.friends.set_rich_presence("steam_display", "cactus") func _on_game_overlay_activated(active:bool) -> void: $game_overlay_activated.text = str(active) ================================================ FILE: addons/steam_api/examples/example.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://addons/steam_api/examples/example.gd" type="Script" id=1] [node name="Node2D" type="Node2D"] script = ExtResource( 1 ) [node name="game_overlay_activated" type="Label" parent="."] margin_left = 362.0 margin_top = 231.0 margin_right = 402.0 margin_bottom = 245.0 text = "0" __meta__ = { "_edit_use_anchors_": false } ================================================ FILE: addons/steam_api/plugin.cfg ================================================ [plugin] name="SteamAPI" description="" author="samsface" version="" script="plugin.gd" ================================================ FILE: addons/steam_api/plugin.gd ================================================ tool extends EditorPlugin var setup:Control func _enter_tree(): setup = load("res://addons/steam_api/setup.tscn").instance() add_control_to_container(CONTAINER_PROJECT_SETTING_TAB_RIGHT, setup) setup.connect("disable", self, "_on_disabled") _on_disabled(setup.settings.disable) func _on_disabled(value:bool) -> void: remove_autoload_singleton("Steam") if value: print("disable steam integration") add_autoload_singleton("Steam", "res://addons/steam_api/steam_i.gd") else: print("enable steam integration") add_autoload_singleton("Steam", "res://addons/steam_api/steam.gd") func disable_plugin(): remove_autoload_singleton("Steam") remove_control_from_container(CONTAINER_PROJECT_SETTING_TAB_RIGHT, setup) setup.queue_free() ================================================ FILE: addons/steam_api/readme.md ================================================ # 🚂 Godot-Steam-API > **Godot Steam integration without rebuilding Godot.** Supports 💰Windows, 🐧Linux & 🍏MacOS (x86_x64/arm64). ## 🏁 Getting Started 1. Download this plugin through Godot's asset library https://godotengine.org/asset-library/asset/1020 2. There should now be a SteamAPI tab in your Project Settings, follow the instructions to configure the SteamAPI for your game *(Takes a few seconds)*. Now you can use the following functions: ```gdscript # check steam integration is working and enabled, useful if you publish to multiple stores Steam.is_init() # achievements # check if player already unlocked this achievement var has_alredy_unlocked_achievement:bool = Steam.get_achievement("gator_god") # give the player this achievement, benign if they already have it Steam.set_achievement("gator_god") # clear this achievement (only for debugging) Steam.clear_achievement("gator_god") # leaderboards Steam.set_leaderboard_score("High Scores", 1000) # Get the first 10 global high scores var top_10_global_scores = yield(Steam.get_leaderboard_scores("High Scores", 0, 10), "done") # Get just the current user's high score var players_score = yield(Steam.get_leaderboard_scores("High Scores", 0, 0, Steam.LeaderboardDataRequest.GlobalAroundUser), "done") # Get the current user's high score and the two scores infront and behind var player_rivals_score = yield(Steam.get_leaderboard_scores("High Scores", -1, 1, Steam.LeaderboardDataRequest.GlobalAroundUser), "done") # rich presence # Read the docs: https://partner.steamgames.com/doc/features/enhancedrichpresence as this call has lots of hidden magic # and use this tool to test: https://steamcommunity.com/dev/testrichpresence Steam.friends.set_rich_presence("status", "cactus") Steam.friends.clear_rich_presence() # overlay Steam.friends.connect("game_overlay_activated", self, "_on_game_overlay_activated") Steam.friends.activate_game_overlay_to_web_page("https://steamcommunity.com/") Steam.friends.activate_game_overlay_to_store(1435470, Steam.OverlayToStoreFlag.AddToCart) ``` ## 📄 Documentation This plugin follows the structure and naming of the offical C++ SteamSDK almost verbatim. The only major difference is I use snake_case to better integrate with Godot. That is to say, you can just rely on the offical docs: https://partner.steamgames.com/doc/api. ## 🧪 Testing an exported build Steam integration doesn't work with exported builds straight away. You'll have to either: - Upload your build to Steam or - Create a file in the same directory as your exported build named `steam_appid.txt` with just your steam app id in it. Though do not upload this file as part of your build. ## 😶‍🌫️ Can I publish to Itch.io still? Yes. There's a switch in `Project Settings > Steam API` that disables the integration, i.e. all calls on the API just do nothing and return/yield null. However it is up to the caller to then safely deal with the null values returned by the API in disabled mode. ## 🤔 Troubleshooting - Did you follow the instruction in the project settings Steam tab? - Is Steam running? - Have you published your acheivments in the SteamWorks console? *Publishing isn't releasing the game, I mean the button that publishes your Store page.* - Tried uninstalling and reinstalling the plugin 😅? ================================================ FILE: addons/steam_api/settings.gd ================================================ extends Resource export(bool) var disable:bool export(String) var app_id:String export(String) var sdk_dir:String ================================================ FILE: addons/steam_api/settings.tres ================================================ [gd_resource type="Resource" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/settings.gd" type="Script" id=1] [resource] script = ExtResource( 1 ) disable = false app_id = "1993830" sdk_dir = "C:\\Apps\\steamworks_sdk_160" ================================================ FILE: addons/steam_api/setup.gd ================================================ tool extends Control signal disable var settings var settings_path = "res://addons/steam_api/settings.tres" func _ready(): settings = load(settings_path) $panel/container/app_id/input.text = settings.app_id $panel/container/sdk_dir/input.text = settings.sdk_dir func copy_file_from_steam_sdk_(base_path:String, file_name:String) -> void: print(settings.sdk_dir + base_path + file_name) if not File.new().file_exists("res://addons/steam_api/%s" % file_name): var res := Directory.new().copy(settings.sdk_dir + base_path + file_name, "res://addons/steam_api/%s" % file_name) if res != OK: popup_error("Failed to copy %s. Steam integration will not work. Did you set the 'SDK Directory' correctly?" % file_name) static func exe_path_() -> String: return OS.get_executable_path().get_base_dir() func write_steam_app_id_file_() -> void: var f := File.new() var res := f.open(exe_path_() + "/steam_appid.txt", File.WRITE) if res == OK: f.store_string(str(settings.app_id)) f.close() else: popup_error("Failed to write steamapp_id.txt to \"{exe_path}\". Steam integration will not work. For debug builds, steam needs a text file with just your steam_app_id named 'steam_appid.txt' next to your exe in '{exe_path}'. Try write the file manually.".format({"exe_path": exe_path_()})) func steam_appid_file_has_correct_id_() -> bool: var file := File.new() var res := file.open(exe_path_() + "/steam_appid.txt", File.READ) if res == OK: return str(settings.app_id) == file.get_line() else: return false func debug_setup_() -> void: copy_file_from_steam_sdk_("/redistributable_bin/linux64/", "libsteam_api.so") copy_file_from_steam_sdk_("/redistributable_bin/win64/", "steam_api64.dll") copy_file_from_steam_sdk_("/redistributable_bin/osx/", "libsteam_api.dylib") if not steam_appid_file_has_correct_id_(): write_steam_app_id_file_() func _on_SDK_instructions_meta_clicked(meta): if meta == "open_sdk_page": OS.shell_open("https://partner.steamgames.com/downloads/steamworks_sdk.zip") func popup_error(message): $panel/warning.popup_centered_clamped(Vector2(400, 100)) $panel/warning/container/error_text.text = message push_error(message) func _on_FindSDK_pressed(): _ready() debug_setup_() check_status() func _on_SteamAPI_visibility_changed(): check_status() func check_status(): var file = File.new() var status = "[color=green]Done![/color]" var missing = [] if not file.file_exists("res://addons/steam_api/libsteam_api.so"): missing.push_back("linux") if not file.file_exists("res://addons/steam_api/steam_api64.dll"): missing.push_back("windows") if not file.file_exists("res://addons/steam_api/libsteam_api.dylib"): missing.push_back("osx") if missing.size() > 0: if missing.size() == 3: status = "[color=red]No files imported[/color]" else: status = "[color=#ffa500]Partially complete, missing: %s[/color]" % String(missing) status = "[center]%s[/center]" % status $panel/container/sdk_status/status.bbcode_text = status func _on_app_id_focus_exited(): save_settings() func _on_sdk_dir_focus_exited(): save_settings() func save_settings(): settings.app_id = $panel/container/app_id/input.text settings.sdk_dir = $panel/container/sdk_dir/input.text ResourceSaver.save(settings_path, settings) func _on_disable_pressed(): settings.disable = $panel/container/disable/input.pressed save_settings() emit_signal("disable", settings.disable) ================================================ FILE: addons/steam_api/setup.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://addons/steam_api/setup.gd" type="Script" id=1] [node name="SteamAPI" type="ScrollContainer"] anchor_right = 1.0 anchor_bottom = 1.0 script = ExtResource( 1 ) __meta__ = { "_edit_use_anchors_": false } [node name="panel" type="MarginContainer" parent="."] margin_right = 1024.0 margin_bottom = 600.0 size_flags_horizontal = 3 size_flags_vertical = 3 [node name="Label" type="Label" parent="panel"] margin_top = 293.0 margin_right = 1024.0 margin_bottom = 307.0 [node name="container" type="VBoxContainer" parent="panel"] margin_right = 1024.0 margin_bottom = 600.0 [node name="SDK instructions" type="RichTextLabel" parent="panel/container"] margin_right = 1024.0 margin_bottom = 135.0 rect_clip_content = false bbcode_enabled = true bbcode_text = "[color=red]This plugin requires the Steam SDK, you must already be a Steam partner to obtain the SDK (Valve's rules, not mine sorry).[/color] [b]Setup:[/b] 1. Enter your Steam App ID [color=gray](the number next to your Steam title on the Steamworks page or the number in the store page url)[/color]. 2. Download the Steam SDK at [url=open_sdk_page]https://partner.steamgames.com/downloads/steamworks_sdk.zip[/url]. 3. Unzip the Steam SDK into any directory on your computer [color=gray](you will not need the SDK once setup is complete)[/color]. 4. Enter the directory path where you unzipped the Steam SDK [color=gray](e.g. \"C:\\Users\\gaben\\Downloads\\sdk\")[/color]. 5. Click \"Import from SDK Directory\". " text = "This plugin requires the Steam SDK, you must already be a Steam partner to obtain the SDK (Valve's rules, not mine sorry). Setup: 1. Enter your Steam App ID (the number next to your Steam title on the Steamworks page or the number in the store page url). 2. Download the Steam SDK at https://partner.steamgames.com/downloads/steamworks_sdk.zip. 3. Unzip the Steam SDK into any directory on your computer (you will not need the SDK once setup is complete). 4. Enter the directory path where you unzipped the Steam SDK (e.g. \"C:\\Users\\gaben\\Downloads\\sdk\"). 5. Click \"Import from SDK Directory\". " fit_content_height = true scroll_active = false [node name="disable" type="HBoxContainer" parent="panel/container"] margin_top = 139.0 margin_right = 1024.0 margin_bottom = 163.0 size_flags_horizontal = 3 [node name="title" type="Label" parent="panel/container/disable"] margin_right = 510.0 margin_bottom = 24.0 rect_min_size = Vector2( 0, 24 ) size_flags_horizontal = 3 text = "Disable Steam Integration (all Steam calls will return or yield null)" valign = 1 [node name="input" type="CheckBox" parent="panel/container/disable"] margin_left = 514.0 margin_right = 1024.0 margin_bottom = 24.0 size_flags_horizontal = 3 [node name="app_id" type="HBoxContainer" parent="panel/container"] margin_top = 167.0 margin_right = 1024.0 margin_bottom = 191.0 size_flags_horizontal = 3 [node name="title" type="Label" parent="panel/container/app_id"] margin_right = 510.0 margin_bottom = 24.0 rect_min_size = Vector2( 0, 24 ) size_flags_horizontal = 3 text = "Steam App ID (must be a valid id in your steam library)" valign = 1 [node name="input" type="LineEdit" parent="panel/container/app_id"] margin_left = 514.0 margin_right = 1024.0 margin_bottom = 24.0 size_flags_horizontal = 3 text = "1435470" placeholder_text = "1435470" caret_blink = true caret_blink_speed = 0.5 [node name="sdk_dir" type="HBoxContainer" parent="panel/container"] margin_top = 195.0 margin_right = 1024.0 margin_bottom = 219.0 size_flags_horizontal = 3 [node name="title" type="Label" parent="panel/container/sdk_dir"] margin_right = 510.0 margin_bottom = 24.0 rect_min_size = Vector2( 0, 24 ) size_flags_horizontal = 3 text = "SDK Directory" valign = 1 [node name="input" type="LineEdit" parent="panel/container/sdk_dir"] margin_left = 514.0 margin_right = 1024.0 margin_bottom = 24.0 size_flags_horizontal = 3 text = "/home/sam/work/godot-steam-api/lib/steam-sdk" placeholder_text = "C:\\Users\\gaben\\Downloads\\sdk" caret_blink = true caret_blink_speed = 0.5 [node name="HSeparator" type="HSeparator" parent="panel/container"] margin_top = 223.0 margin_right = 1024.0 margin_bottom = 227.0 [node name="sdk_status" type="HBoxContainer" parent="panel/container"] margin_top = 231.0 margin_right = 1024.0 margin_bottom = 255.0 [node name="FindSDK" type="Button" parent="panel/container/sdk_status"] margin_right = 482.0 margin_bottom = 24.0 size_flags_horizontal = 3 text = "Import from SDK Directory" [node name="VSeparator" type="VSeparator" parent="panel/container/sdk_status"] margin_left = 486.0 margin_right = 490.0 margin_bottom = 24.0 __meta__ = { "_edit_use_anchors_": false } [node name="title" type="Label" parent="panel/container/sdk_status"] margin_left = 494.0 margin_right = 537.0 margin_bottom = 24.0 rect_min_size = Vector2( 0, 24 ) text = "Status:" valign = 1 [node name="status" type="RichTextLabel" parent="panel/container/sdk_status"] margin_left = 541.0 margin_right = 1024.0 margin_bottom = 24.0 rect_min_size = Vector2( 0, 24 ) size_flags_horizontal = 3 bbcode_enabled = true bbcode_text = "[center][color=red]No files imported[/color][/center]" text = "No files imported" fit_content_height = true scroll_active = false [node name="warning" type="PopupDialog" parent="panel"] margin_right = 1024.0 margin_bottom = 600.0 size_flags_horizontal = 3 size_flags_vertical = 3 [node name="container" type="VBoxContainer" parent="panel/warning"] anchor_right = 1.0 anchor_bottom = 1.0 size_flags_horizontal = 3 size_flags_vertical = 3 __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="RichTextLabel" parent="panel/warning/container"] margin_right = 1024.0 margin_bottom = 15.0 size_flags_horizontal = 3 size_flags_vertical = 4 bbcode_enabled = true bbcode_text = "[center][b]Error[/b][/center]" text = "Error" fit_content_height = true scroll_active = false __meta__ = { "_edit_use_anchors_": false } [node name="error_text" type="Label" parent="panel/warning/container"] margin_top = 19.0 margin_right = 1024.0 margin_bottom = 600.0 size_flags_horizontal = 3 size_flags_vertical = 3 align = 1 valign = 1 autowrap = true __meta__ = { "_edit_use_anchors_": false } [connection signal="visibility_changed" from="." to="." method="_on_SteamAPI_visibility_changed"] [connection signal="meta_clicked" from="panel/container/SDK instructions" to="." method="_on_SDK_instructions_meta_clicked"] [connection signal="pressed" from="panel/container/disable/input" to="." method="_on_disable_pressed"] [connection signal="focus_exited" from="panel/container/app_id/input" to="." method="_on_app_id_focus_exited"] [connection signal="focus_exited" from="panel/container/sdk_dir/input" to="." method="_on_sdk_dir_focus_exited"] [connection signal="pressed" from="panel/container/sdk_status/FindSDK" to="." method="_on_FindSDK_pressed"] ================================================ FILE: addons/steam_api/steam.gd ================================================ extends SteamI func _ready() -> void: var settings = load("res://addons/steam_api/settings.tres") api_ = SteamAPI.new() if not api_ or not api_.init(): api_ = null push_error("Failed to init steam api. Is Steam running? Is the plugin activated? Did you do the setup in ProjectSettings > SteamAPI") if OS.has_feature("standalone"): push_error("You're running an exported build. Steam integration will only work if the game is launched by Steam. Either upload this build to Steam or create a file in the same directory as your exported build named 'steamapp_id.txt' with just your steam app id in it.") return user = User.new(SteamUser.new()) user_stats = UserStats.new(SteamUserStats.new()) user_stats.request_current_stats() friends = Friends.new(SteamFriends.new()) #warning-ignore:unused_argument func _process(delta:float) -> void: if api_: api_.run_callbacks() ================================================ FILE: addons/steam_api/steam_api.gdnlib ================================================ [general] singleton=false load_once=true symbol_prefix="godot_" reloadable=true [entry] OSX.64="res://addons/steam_api/libsteamsdk-godot.dylib" Windows.64="res://addons/steam_api/steamsdk-godot.dll" X11.64="res://addons/steam_api/libsteamsdk-godot.so" Server="res://addons/steam_api/libsteamsdk-godot.so" [dependencies] OSX.64=[ "res://addons/steam_api/libsteam_api.dylib" ] Windows.64=[ "res://addons/steam_api/steam_api64.dll" ] X11.64=[ "res://addons/steam_api/libsteam_api.so" ] Server=[ "res://addons/steam_api/libsteam_api.so" ] ================================================ FILE: addons/steam_api/steam_api.gdns ================================================ [gd_resource type="NativeScript" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/steam_api.gdnlib" type="GDNativeLibrary" id=1] [resource] resource_name = "steam_api" class_name = "SteamAPI" library = ExtResource( 1 ) script_class_name = "SteamAPI" ================================================ FILE: addons/steam_api/steam_callback.gdns ================================================ [gd_resource type="NativeScript" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/steam_api.gdnlib" type="GDNativeLibrary" id=1] [resource] resource_name = "steam_callback" class_name = "SteamCallback" library = ExtResource( 1 ) script_class_name = "SteamCallback" ================================================ FILE: addons/steam_api/steam_find_leaderboard_result.gdns ================================================ [gd_resource type="NativeScript" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/steam_api.gdnlib" type="GDNativeLibrary" id=1] [resource] resource_name = "steam_find_leaderboard_result" class_name = "SteamLeaderboardFindResult" library = ExtResource( 1 ) script_class_name = "SteamLeaderboardFindResult" ================================================ FILE: addons/steam_api/steam_friends.gdns ================================================ [gd_resource type="NativeScript" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/steam_api.gdnlib" type="GDNativeLibrary" id=1] [resource] resource_name = "steam_friends" class_name = "SteamFriends" library = ExtResource( 1 ) script_class_name = "SteamFriends" ================================================ FILE: addons/steam_api/steam_i.gd ================================================ extends Node class_name SteamI signal leaderboard_scores enum LeaderboardUploadScoreMethod { None = 0, KeepBest = 1, ForceUpdate = 2, } enum LeaderboardDataRequest { Global = 0, GlobalAroundUser = 1, Friends = 2, Users = 3 } enum OverlayToStoreFlag { None = 0, AddToCart = 1, AddToCartAndShow = 2 } enum LeaderboardSortMethod { None = 0, Ascending = 1, Descending = 2 } enum LeaderboardDisplayType { None = 0, Numeric = 1, TimeSeconds = 2, TimeMilliSeconds = 3 } class Callback: signal done class Proxy_: signal keep_alive_hack_ var object_to_proxy_ func _init(object_to_proxy) -> void: object_to_proxy_ = object_to_proxy func call_(func_name, args := []): if not object_to_proxy_: return return object_to_proxy_.callv(func_name, args) func callback_(func_name, args := []): if not object_to_proxy_: var result = Callback.new() result.call_deferred("emit_signal", "done", null) call_deferred("emit_signal", "keep_alive_hack_", result) return result return object_to_proxy_.callv(func_name, args) class User extends Proxy_: func _init(o).(o) -> void: pass func get_steam_id() -> SteamId: return call_("get_steam_id") class UserStats extends Proxy_: func _init(o).(o) -> void: pass func set_achievement(achievement_api_name:String) -> bool: return call_("set_achievement", [achievement_api_name]) func clear_achievement(achievement_api_name:String) -> bool: return call_("clear_achievement", [achievement_api_name]) func get_achievement(achievement_api_name:String) -> bool: return call_("get_achievement", [achievement_api_name]) func get_num_achievements() -> int: return call_("get_num_achievements") func get_achievement_name(idx:int) -> String: return call_("get_achievement_name", [idx]) func request_current_stats() -> bool: return call_("request_current_stats") func store_stats() -> bool: return call_("store_stats") func find_leaderboard(leaderboard_name:String): return callback_("find_leaderboard", [leaderboard_name]) func find_or_create_leaderboard(leaderboard_name:String, sort_method:int, display_type:int): return callback_("find_or_create_leaderboard", [leaderboard_name, sort_method, display_type]) func upload_leaderboard_score(leaderboard, method:int, score:int, details:PoolIntArray): return callback_("upload_leaderboard_score", [leaderboard, method, score, details]) func download_leaderboard_entries(leaderboard, data_request:int, begin:int, end:int): return callback_("download_leaderboard_entries", [leaderboard, data_request, begin, end]) func get_downloaded_leaderboard_entry(leaderboard, index:int, max_details:int): return callback_("get_downloaded_leaderboard_entry", [leaderboard, index, max_details]) class Friends extends Proxy_: signal game_overlay_activated func _init(o).(o) -> void: if o: o.connect("game_overlay_activated", self, "_on_game_overlay_activated") func _on_game_overlay_activated(active:bool) -> void: emit_signal("game_overlay_activated", active) func request_user_information(steam_user_id, require_name_only:bool) -> bool: return call_("request_user_information", [steam_user_id, require_name_only]) func get_friend_persona_name(steam_user_id) -> String: return call_("get_friend_persona_name", [steam_user_id]) func activate_game_overlay_to_web_page(url:String) -> void: call_("activate_game_overlay_to_web_page", [url]) func activate_game_overlay_to_store(app_id:int, where:int) -> void: call_("activate_game_overlay_to_store", [app_id, where]) func set_rich_presence(key:String, value:String) -> bool: return call_("set_rich_presence", [key, value]) func clear_rich_presence() -> void: call_("clear_rich_presence") var api_ var user:User = User.new(null) var user_stats:UserStats = UserStats.new(null) var friends:Friends = Friends.new(null) func is_init() -> bool: if api_: return api_.is_init() return false func set_achievement(name:String) -> void: user_stats.set_achievement(name) user_stats.store_stats() func get_achievement(name:String) -> bool: return user_stats.get_achievement(name) func clear_achievement(name:String) -> void: user_stats.clear_achievement(name) user_stats.store_stats() func set_leaderboard_score(leaderboard_name:String, score:int, method:int = LeaderboardUploadScoreMethod.KeepBest, details:PoolIntArray = PoolIntArray()) -> void: var find_leaderboard_result = yield(user_stats.find_leaderboard(leaderboard_name), "done") if not find_leaderboard_result: return if not find_leaderboard_result.get_leaderboard_found(): return var leaderboard = find_leaderboard_result.get_leaderboard() if not leaderboard: return yield(user_stats.upload_leaderboard_score(leaderboard, method, score, details), "done") func get_leaderboard_scores(leaderboard_name:String, begin:int, end:int, method:int = LeaderboardDataRequest.Global, max_details:int = 0): var callback := Callback.new() get_leaderboard_scores_(leaderboard_name, begin, end, method, max_details, callback) return callback func get_leaderboard_scores_(leaderboard_name:String, begin:int, end:int, method:int, max_details, callback:Callback) -> Callback: var res := [] var user_stats_ = user_stats.object_to_proxy_ var friends_ = friends.object_to_proxy_ if not user_stats_: return callback.emit_signal("done", res) if not friends_: return callback.emit_signal("done", res) var find_leaderboard_result = yield(user_stats_.find_leaderboard(leaderboard_name), "done") if not find_leaderboard_result.get_leaderboard_found(): return callback.emit_signal("done", res) var leaderboard = find_leaderboard_result.get_leaderboard() if not leaderboard: return callback.emit_signal("done", res) var download = yield(user_stats_.download_leaderboard_entries(leaderboard, method, begin, end), "done") if not download: return callback.emit_signal("done", res) var entries = download.get_entries() if not entries: return callback.emit_signal("done", res) for i in download.get_entry_count(): var entry = user_stats_.get_downloaded_leaderboard_entry(entries, i, max_details) if not entry: continue var score := {} score["global_rank"] = entry.get_global_rank() score["score"] = entry.get_score() score["details"] = entry.get_details() if not friends_.request_user_information(entry.get_steam_id_user(), true): score["persona_name"] = friends_.get_friend_persona_name(entry.get_steam_id_user()) else: score["persona_name"] = "Frank" res.push_back(score) return callback.emit_signal("done", res) func activate_game_overlay_to_web_page(url:String) -> void: friends.activate_game_overlay_to_web_page(url) func activate_game_overlay_to_store(app_id:int, where:int = 0) -> void: friends.activate_game_overlay_to_store(app_id, where) ================================================ FILE: addons/steam_api/steam_id.gdns ================================================ [gd_resource type="NativeScript" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/steam_api.gdnlib" type="GDNativeLibrary" id=1] [resource] resource_name = "steam_id" class_name = "SteamId" library = ExtResource( 1 ) script_class_name = "SteamId" ================================================ FILE: addons/steam_api/steam_leaderboard.gdns ================================================ [gd_resource type="NativeScript" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/steam_api.gdnlib" type="GDNativeLibrary" id=1] [resource] resource_name = "steam_leaderboard" class_name = "SteamLeaderboard" library = ExtResource( 1 ) script_class_name = "SteamLeaderboard" ================================================ FILE: addons/steam_api/steam_leaderboard_entries.gdns ================================================ [gd_resource type="NativeScript" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/steam_api.gdnlib" type="GDNativeLibrary" id=1] [resource] resource_name = "steam_leaderboard_entries" class_name = "SteamLeaderboardEntries" library = ExtResource( 1 ) script_class_name = "SteamLeaderboardEntries" ================================================ FILE: addons/steam_api/steam_leaderboard_entry.gdns ================================================ [gd_resource type="NativeScript" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/steam_api.gdnlib" type="GDNativeLibrary" id=1] [resource] resource_name = "steam_leaderboard_entry" class_name = "SteamLeaderboardEntry" library = ExtResource( 1 ) script_class_name = "SteamLeaderboardEntry" ================================================ FILE: addons/steam_api/steam_leaderboard_scores_downloaded.gdns ================================================ [gd_resource type="NativeScript" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/steam_api.gdnlib" type="GDNativeLibrary" id=1] [resource] resource_name = "steam_leaderboard_scores_downloaded" class_name = "SteamLeaderboardScoresDownloaded" library = ExtResource( 1 ) script_class_name = "SteamLeaderboardScoresDownloaded" ================================================ FILE: addons/steam_api/steam_leaderboard_uploaded.gdns ================================================ [gd_resource type="NativeScript" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/steam_api.gdnlib" type="GDNativeLibrary" id=1] [resource] resource_name = "steam_leaderboard_score_uploaded" class_name = "SteamLeaderboardScoreUploaded" library = ExtResource( 1 ) script_class_name = "SteamLeaderboardScoreUploaded" ================================================ FILE: addons/steam_api/steam_user.gdns ================================================ [gd_resource type="NativeScript" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/steam_api.gdnlib" type="GDNativeLibrary" id=1] [resource] resource_name = "steam_user" class_name = "SteamUser" library = ExtResource( 1 ) script_class_name = "SteamUser" ================================================ FILE: addons/steam_api/steam_user_stats.gdns ================================================ [gd_resource type="NativeScript" load_steps=2 format=2] [ext_resource path="res://addons/steam_api/steam_api.gdnlib" type="GDNativeLibrary" id=1] [resource] resource_name = "steam_user_stats" class_name = "SteamUserStats" library = ExtResource( 1 ) script_class_name = "SteamUserStats" ================================================ FILE: default_bus_layout.tres ================================================ [gd_resource type="AudioBusLayout" format=2] [resource] bus/1/name = "SFX" bus/1/solo = false bus/1/mute = false bus/1/bypass_fx = false bus/1/volume_db = 0.0 bus/1/send = "MasteNew Busr" bus/2/name = "Music" bus/2/solo = false bus/2/mute = false bus/2/bypass_fx = false bus/2/volume_db = 0.0 bus/2/send = "MasteNew Busr" bus/3/name = "Weather" bus/3/solo = false bus/3/mute = false bus/3/bypass_fx = false bus/3/volume_db = 0.0 bus/3/send = "Master" ================================================ FILE: default_env.tres ================================================ [gd_resource type="Environment" load_steps=2 format=2] [sub_resource type="ProceduralSky" id=1] [resource] background_mode = 2 background_sky = SubResource( 1 ) ================================================ FILE: export/butler_push.bat ================================================ butler push win harmonymonroe/rota:win butler push linux harmonymonroe/rota:linux butler push mac harmonymonroe/rota:mac butler push web harmonymonroe/rota:web butler push android harmonymonroe/rota:android pause ================================================ FILE: export/mac_unzip.bat ================================================ rmdir /s /q mac mkdir mac cd mac tar -xf ../_mac.zip ================================================ FILE: export/ready_folders.bat ================================================ rmdir /s /q win mkdir win rmdir /s /q linux mkdir linux rmdir /s /q mac del /q *mac.zip* rmdir /s /q web mkdir web rmdir /s /q android mkdir android ================================================ FILE: export/steam_clean.bat ================================================ cd win del /q *steam* cd ../linux del /q *steam* ================================================ FILE: export_presets.cfg ================================================ [preset.0] name="Windows Desktop" platform="Windows Desktop" runnable=true custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" export_path="export/win/ROTA.exe" script_export_mode=1 script_encryption_key="" [preset.0.options] custom_template/debug="" custom_template/release="" binary_format/64_bits=true binary_format/embed_pck=false texture_format/bptc=false texture_format/s3tc=true texture_format/etc=false texture_format/etc2=false texture_format/no_bptc_fallbacks=true codesign/enable=false codesign/identity_type=0 codesign/identity="" codesign/password="" codesign/timestamp=true codesign/timestamp_server_url="" codesign/digest_algorithm=1 codesign/description="" codesign/custom_options=PoolStringArray( ) application/modify_resources=true application/icon="res://media/image/icon/rota.ico" application/icon_interpolation=4 application/file_version="" application/product_version="" application/company_name="Harmony Honey" application/product_name="ROTA" application/file_description="ROTA by Harmony Honey" application/copyright="" application/trademarks="" [preset.1] name="Linux/X11" platform="Linux/X11" runnable=true custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" export_path="export/linux/ROTA.x86_64" script_export_mode=1 script_encryption_key="" [preset.1.options] custom_template/debug="" custom_template/release="" binary_format/architecture="x86_64" binary_format/embed_pck=false texture_format/bptc=false texture_format/s3tc=true texture_format/etc=false texture_format/etc2=false texture_format/no_bptc_fallbacks=true [preset.2] name="Mac OSX" platform="Mac OSX" runnable=true custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" export_path="export/_mac.zip" script_export_mode=1 script_encryption_key="" [preset.2.options] export/distribution_type=1 custom_template/debug="" custom_template/release="" application/name="ROTA" application/icon="" application/icon_interpolation=4 application/identifier="com.harmony.honey" application/signature="" application/app_category="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=true 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 [preset.3] name="HTML5" platform="HTML5" runnable=true custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" export_path="export/web/index.html" script_export_mode=1 script_encryption_key="" [preset.3.options] custom_template/debug="" custom_template/release="" variant/export_type=0 vram_texture_compression/for_desktop=true vram_texture_compression/for_mobile=false html/export_icon=true html/custom_html_shell="" html/head_include="" html/canvas_resize_policy=2 html/focus_canvas_on_start=true html/experimental_virtual_keyboard=false progressive_web_app/enabled=false progressive_web_app/offline_page="" progressive_web_app/display=1 progressive_web_app/orientation=0 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.4] name="Android" platform="Android" runnable=true custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" export_path="export/android/ROTA.apk" script_export_mode=1 script_encryption_key="" [preset.4.options] custom_template/debug="" custom_template/release="" custom_build/use_custom_build=true custom_build/export_format=0 custom_build/min_sdk="" custom_build/target_sdk="34" architectures/armeabi-v7a=true architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false keystore/debug="C:/Dev/keys/harmony.keystore" keystore/debug_user="harmony" keystore/debug_password="harmony" keystore/release="C:/Dev/keys/harmony.keystore" keystore/release_user="harmony" keystore/release_password="harmony" one_click_deploy/clear_previous_install=true version/code=1 version/name="1.0" package/unique_name="harmonyhoney.rota" package/name="ROTA" package/signed=true package/classify_as_game=true package/retain_data_on_uninstall=false package/exclude_from_recents=false launcher_icons/main_192x192="res://media/image/icon/android-icon192.png" launcher_icons/adaptive_foreground_432x432="" launcher_icons/adaptive_background_432x432="" graphics/opengl_debug=false xr_features/xr_mode=0 xr_features/hand_tracking=0 xr_features/hand_tracking_frequency=0 xr_features/passthrough=0 screen/immersive_mode=true screen/support_small=true screen/support_normal=true screen/support_large=true screen/support_xlarge=true user_data_backup/allow=false command_line/extra_args="" apk_expansion/enable=false apk_expansion/SALT="" apk_expansion/public_key="" permissions/custom_permissions=PoolStringArray( ) permissions/access_checkin_properties=false permissions/access_coarse_location=false permissions/access_fine_location=false permissions/access_location_extra_commands=false permissions/access_mock_location=false permissions/access_network_state=false permissions/access_surface_flinger=false permissions/access_wifi_state=false permissions/account_manager=false permissions/add_voicemail=false permissions/authenticate_accounts=false permissions/battery_stats=false permissions/bind_accessibility_service=false permissions/bind_appwidget=false permissions/bind_device_admin=false permissions/bind_input_method=false permissions/bind_nfc_service=false permissions/bind_notification_listener_service=false permissions/bind_print_service=false permissions/bind_remoteviews=false permissions/bind_text_service=false permissions/bind_vpn_service=false permissions/bind_wallpaper=false permissions/bluetooth=false permissions/bluetooth_admin=false permissions/bluetooth_privileged=false permissions/brick=false permissions/broadcast_package_removed=false permissions/broadcast_sms=false permissions/broadcast_sticky=false permissions/broadcast_wap_push=false permissions/call_phone=false permissions/call_privileged=false permissions/camera=false permissions/capture_audio_output=false permissions/capture_secure_video_output=false permissions/capture_video_output=false permissions/change_component_enabled_state=false permissions/change_configuration=false permissions/change_network_state=false permissions/change_wifi_multicast_state=false permissions/change_wifi_state=false permissions/clear_app_cache=false permissions/clear_app_user_data=false permissions/control_location_updates=false permissions/delete_cache_files=false permissions/delete_packages=false permissions/device_power=false permissions/diagnostic=false permissions/disable_keyguard=false permissions/dump=false permissions/expand_status_bar=false permissions/factory_test=false permissions/flashlight=false permissions/force_back=false permissions/get_accounts=false permissions/get_package_size=false permissions/get_tasks=false permissions/get_top_activity_info=false permissions/global_search=false permissions/hardware_test=false permissions/inject_events=false permissions/install_location_provider=false permissions/install_packages=false permissions/install_shortcut=false permissions/internal_system_window=false permissions/internet=false permissions/kill_background_processes=false permissions/location_hardware=false permissions/manage_accounts=false permissions/manage_app_tokens=false permissions/manage_documents=false permissions/manage_external_storage=false permissions/master_clear=false permissions/media_content_control=false permissions/modify_audio_settings=false permissions/modify_phone_state=false permissions/mount_format_filesystems=false permissions/mount_unmount_filesystems=false permissions/nfc=false permissions/persistent_activity=false permissions/post_notifications=false permissions/process_outgoing_calls=false permissions/read_calendar=false permissions/read_call_log=false permissions/read_contacts=false permissions/read_external_storage=false permissions/read_frame_buffer=false permissions/read_history_bookmarks=false permissions/read_input_state=false permissions/read_logs=false permissions/read_phone_state=false permissions/read_profile=false permissions/read_sms=false permissions/read_social_stream=false permissions/read_sync_settings=false permissions/read_sync_stats=false permissions/read_user_dictionary=false permissions/reboot=false permissions/receive_boot_completed=false permissions/receive_mms=false permissions/receive_sms=false permissions/receive_wap_push=false permissions/record_audio=false permissions/reorder_tasks=false permissions/restart_packages=false permissions/send_respond_via_message=false permissions/send_sms=false permissions/set_activity_watcher=false permissions/set_alarm=false permissions/set_always_finish=false permissions/set_animation_scale=false permissions/set_debug_app=false permissions/set_orientation=false permissions/set_pointer_speed=false permissions/set_preferred_applications=false permissions/set_process_limit=false permissions/set_time=false permissions/set_time_zone=false permissions/set_wallpaper=false permissions/set_wallpaper_hints=false permissions/signal_persistent_processes=false permissions/status_bar=false permissions/subscribed_feeds_read=false permissions/subscribed_feeds_write=false permissions/system_alert_window=false permissions/transmit_ir=false permissions/uninstall_shortcut=false permissions/update_device_stats=false permissions/use_credentials=false permissions/use_sip=false permissions/vibrate=false permissions/wake_lock=false permissions/write_apn_settings=false permissions/write_calendar=false permissions/write_call_log=false permissions/write_contacts=false permissions/write_external_storage=false permissions/write_gservices=false permissions/write_history_bookmarks=false permissions/write_profile=false permissions/write_secure_settings=false permissions/write_settings=false permissions/write_sms=false permissions/write_social_stream=false permissions/write_sync_settings=false permissions/write_user_dictionary=false ================================================ FILE: icon.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" metadata={ "vram_texture": false } [deps] source_file="res://icon.png" dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: linux/.gdignore ================================================ ================================================ FILE: linux/net.hhoney.rota.desktop ================================================ [Desktop Entry] Name=ROTA GenericName=Puzzle Game Comment=Gravity bends beneath your feet Exec=godot-runner Icon=net.hhoney.rota Terminal=false Type=Application Categories=Game;KidsGame; ================================================ FILE: linux/net.hhoney.rota.metainfo.xml ================================================ ROTA Bend Gravity Gravity bends beneath your feet #ffc3d6 #850087 Harmony Monroe and Friends Harmony Monroe and Friends

Move blocks and twist gravity to solve puzzles. Collect all 50 gems and explore 8 vibrant worlds.

  • Rotate gravity as you walk over the edge!
  • Push, pull and rotate gravity-blocks to traverse the stage and solve puzzles.
  • Collect all 50 gems to unlock doors and explore 8 vibrant worlds!
  • Listen to an original ambient soundtrack that will keep you relaxed while solving challenging puzzles. (:
  • Watch out for spikes! 0:
net.hhoney.rota net.hhoney.rota.desktop CC0-1.0 MIT https://hhoney.net https://github.com/HarmonyHoney/ROTA/issues https://ko-fi.com/hhoney https://github.com/HarmonyHoney/ROTA https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/1.png https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/2.png https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/3.png https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/4.png https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/5.png https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/6.png https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/7.png https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/8.png https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/9.png https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/10.png touch keyboard gamepad
================================================ FILE: linux/net.hhoney.rota.releases.xml ================================================

Updated Flathub listing

Soundtrack Update

  • Two new songs have been added to ROTA
  • Touch-screen bugfixes
  • Player animation fixes
  • Added a Sign to puzzle 1-5 showing the Zoom instructions

Updated logos, credits

Fixed typo

Refreshed app icon and brand colors

Touch screen revisions

New Logos & Touch Screen Saving

  • add new HHoney Software Logos
  • "Touch Screen" option will now save and load between game sessions

(:

Patch 9 - Android Port & Touch Controls !

  • ROTA on Android
  • Touch Controls for any device
  • Adjust Touch Control Margins

Patch 8 - New Logo & Engine Upgrade

  • Game Engine update from Godot 3.5.2 to Godot 3.6
  • New Logo !

Patch 7 - Arcade Action & Ultrawide Support

  • "Wrap It Up" Arcade Cabinet located in the Grasslands (:
  • Ultrawide Display Support! ROTA now expands to infinite width...
  • Weather is silent when Disabled
  • Weather Volume Option

New Achievements:

  • Shiny - Collect your first Gem
  • Fast Fingers - Collect your first Clock
  • Clock Collector - Collect 50 Clocks (=
  • Wrap It Up - Clear the First Loop

Patch 6 - High Refresh Rate Support! (=

This update brings two new Options in the Menu:

  • Interpolation
  • Frame Limit

Interpolation will smooth out player movement on higher refresh rate displays! Frame limit can limit the maximum Frames Per Second of the game (:

Thanks to the pull request by neropatti! <3

Add smoothing/interpolation to player visuals

Breath of Life Update - Patch 5

New friends have arrived in ROTA! The Sun, Moon and Stars have come along with them... ROTA is now populated with curious characters eager to meet you! Have a chat between puzzles! Clouds have filled with sky, bringing weather like rain and snow falling gently to the ground.

Changes:

  • New Characters moved in, populating ROTA!
  • Chat with folks and get to know them (;
  • Connect stray worlds and bring people together!
  • Dynamic Weather System! Clouds fill the sky with falling Rain & Snow...
  • Day & Night! Watch the Sun rise and Moon fall.
  • Dynamic Lighting and Shadows! Illuminated by the Burning Star in Orbit.
  • Stars come out at night! Twinkling in the distance...
  • Background depth with Parallax layers!
  • Doors hold a Vortex, sucking in travelers and spitting them out the other end!
  • Door closing Sound Effect.
  • World Door Unlock Cutscene! Combine the power of Gems and fill the socket...
  • All Menus overhauled! Simple & Clean.
  • Pause Menu minified. The world keeps moving...
  • UI animation improved when collecting a Gem or Clock!
  • Hair physics rework! Smoother motions when swaying in the breeze (;
  • Radial Blur effect with help from Guy Unger! <3
  • Player D-Pad & Joystick input issues fixed! Movement feels more responsive.
  • Camera speed V-Sync issue fixed!
  • Performance improvements! Ignoring many objects off-screen.

Patch 4 - Character Creator and Speedruns!

Changes:

  • Character Creator
  • Speedrun Goals!
  • Ending Scene
  • Visual Overhaul, More Animations and Polygons! (=
  • Input Responsiveness and Bugfixes
  • Performance Optimations! (;

Patch 3 - Demo! (:

Hello everyone! ^.^ ROTA now has a free Demo!

Explore and solve the first 8 puzzles before you buy the game!

Cross-save is enabled, so any progress you make in the demo will carry over into the full game! (:

Have fun and keep on rotating! <3

- Harmony Honey

Patch 2

  • Fixed Gem placement on puzzle 3 in cobblestone.
  • Fixed a bug with the player riding boxes.

Patch 1

Hello everyone, Patch 1 is now live!

This build comes with two minor bug fixes:

  • Menu scrolling re-worked
  • Prevent the player from riding on boxes moving upward

Thanks for the feedback! Please let me know if you see anything funny.

Contact me on discord! (。◕‿◕。) Harmony <3#8571

Launch Day!!

ROTA is out now!! Thank you all for the support and positivity! Every order on itch comes with a steam key on launch! (:

================================================ FILE: linux/net.hhoney.rota.yml ================================================ id: net.hhoney.rota runtime: org.freedesktop.Platform runtime-version: '24.08' base: org.godotengine.godot.BaseApp base-version: '3.6' sdk: org.freedesktop.Sdk command: godot-runner finish-args: - --share=ipc - --socket=x11 - --socket=pulseaudio - --device=all modules: - name: rota buildsystem: simple sources: - type: dir path: ../ - type: file url: https://github.com/HarmonyHoney/ROTA/releases/download/flathub3/ROTA.pck sha256: fc7849b61e32c6ff6d8a8c4b31225c396ca845ee220436f75f665d60698c59a6 build-commands: - install -Dm644 ROTA.pck ${FLATPAK_DEST}/bin/godot-runner.pck - install -Dm644 linux/${FLATPAK_ID}.desktop ${FLATPAK_DEST}/share/applications/${FLATPAK_ID}.desktop - install -Dm644 linux/${FLATPAK_ID}.metainfo.xml ${FLATPAK_DEST}/share/metainfo/${FLATPAK_ID}.metainfo.xml - install -Dm644 linux/${FLATPAK_ID}.releases.xml ${FLATPAK_DEST}/share/metainfo/${FLATPAK_ID}.releases.xml - install -Dm644 linux/${FLATPAK_ID}.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/${FLATPAK_ID}.svg - install -Dm644 linux/${FLATPAK_ID}-symbolic.svg ${FLATPAK_DEST}/share/icons/hicolor/symbolic/apps/${FLATPAK_ID}-symbolic.svg ================================================ FILE: media/audio/music/arcade2.mp3.import ================================================ [remap] importer="mp3" type="AudioStreamMP3" path="res://.import/arcade2.mp3-b7a708f610143e79ed68b5eeea715060.mp3str" [deps] source_file="res://media/audio/music/arcade2.mp3" dest_files=[ "res://.import/arcade2.mp3-b7a708f610143e79ed68b5eeea715060.mp3str" ] [params] loop=true loop_offset=0 ================================================ FILE: media/audio/music/ost1.mp3.import ================================================ [remap] importer="mp3" type="AudioStreamMP3" path="res://.import/ost1.mp3-ec014ce142268b2f4e4925fff72f07a4.mp3str" [deps] source_file="res://media/audio/music/ost1.mp3" dest_files=[ "res://.import/ost1.mp3-ec014ce142268b2f4e4925fff72f07a4.mp3str" ] [params] loop=false loop_offset=0 ================================================ FILE: media/audio/music/ost2.mp3.import ================================================ [remap] importer="mp3" type="AudioStreamMP3" path="res://.import/ost2.mp3-1f6a35d1818eca4fc286e0435a49e43d.mp3str" [deps] source_file="res://media/audio/music/ost2.mp3" dest_files=[ "res://.import/ost2.mp3-1f6a35d1818eca4fc286e0435a49e43d.mp3str" ] [params] loop=false loop_offset=0 ================================================ FILE: media/audio/music/ost3.mp3.import ================================================ [remap] importer="mp3" type="AudioStreamMP3" path="res://.import/ost3.mp3-1b16e860c979305359ee8f4b588ea7dc.mp3str" [deps] source_file="res://media/audio/music/ost3.mp3" dest_files=[ "res://.import/ost3.mp3-1b16e860c979305359ee8f4b588ea7dc.mp3str" ] [params] loop=false loop_offset=0 ================================================ FILE: media/audio/music/ost4.mp3.import ================================================ [remap] importer="mp3" type="AudioStreamMP3" path="res://.import/ost4.mp3-48c03c4e7241d7d8d5c1e07c6ea1b774.mp3str" [deps] source_file="res://media/audio/music/ost4.mp3" dest_files=[ "res://.import/ost4.mp3-48c03c4e7241d7d8d5c1e07c6ea1b774.mp3str" ] [params] loop=false loop_offset=0 ================================================ FILE: media/audio/music/ost5.mp3.import ================================================ [remap] importer="mp3" type="AudioStreamMP3" path="res://.import/ost5.mp3-8a410e27a4dd1ce657a4b843180f824c.mp3str" [deps] source_file="res://media/audio/music/ost5.mp3" dest_files=[ "res://.import/ost5.mp3-8a410e27a4dd1ce657a4b843180f824c.mp3str" ] [params] loop=false loop_offset=0 ================================================ FILE: media/audio/music/ost6.mp3.import ================================================ [remap] importer="mp3" type="AudioStreamMP3" path="res://.import/ost6.mp3-a69612ac29493fe5fcdc0b2994486269.mp3str" [deps] source_file="res://media/audio/music/ost6.mp3" dest_files=[ "res://.import/ost6.mp3-a69612ac29493fe5fcdc0b2994486269.mp3str" ] [params] loop=false loop_offset=0 ================================================ FILE: media/audio/sfx/Randomize104.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/Randomize104.wav-b5b016037977d9b4c1497f5b651ce912.sample" [deps] source_file="res://media/audio/sfx/Randomize104.wav" dest_files=[ "res://.import/Randomize104.wav-b5b016037977d9b4c1497f5b651ce912.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 ================================================ FILE: media/audio/sfx/Randomize105.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/Randomize105.wav-e2f3f63dc859076b0c289219f11a24c0.sample" [deps] source_file="res://media/audio/sfx/Randomize105.wav" dest_files=[ "res://.import/Randomize105.wav-e2f3f63dc859076b0c289219f11a24c0.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 ================================================ FILE: media/audio/sfx/bamblong1.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/bamblong1.wav-ccac8dcb8c007526db4e021b12e03f85.sample" [deps] source_file="res://media/audio/sfx/bamblong1.wav" dest_files=[ "res://.import/bamblong1.wav-ccac8dcb8c007526db4e021b12e03f85.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 ================================================ FILE: media/audio/sfx/bell1.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/bell1.wav-f26864f7fa4298f6cd67fb6188ba7fee.sample" [deps] source_file="res://media/audio/sfx/bell1.wav" dest_files=[ "res://.import/bell1.wav-f26864f7fa4298f6cd67fb6188ba7fee.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 ================================================ FILE: media/audio/sfx/btn0.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/btn0.wav-cc43b0baff08c93f0425b3a99180aac5.sample" [deps] source_file="res://media/audio/sfx/btn0.wav" dest_files=[ "res://.import/btn0.wav-cc43b0baff08c93f0425b3a99180aac5.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 ================================================ FILE: media/audio/sfx/btn3.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/btn3.wav-7655611b6058068c8226c5729b790750.sample" [deps] source_file="res://media/audio/sfx/btn3.wav" dest_files=[ "res://.import/btn3.wav-7655611b6058068c8226c5729b790750.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 ================================================ FILE: media/audio/sfx/coin0.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/coin0.wav-52f7b2297be4ae4a3c103cec1d2e56f8.sample" [deps] source_file="res://media/audio/sfx/coin0.wav" dest_files=[ "res://.import/coin0.wav-52f7b2297be4ae4a3c103cec1d2e56f8.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 ================================================ FILE: media/audio/sfx/coin1.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/coin1.wav-013fa0bd32e95121f1af875e05941c38.sample" [deps] source_file="res://media/audio/sfx/coin1.wav" dest_files=[ "res://.import/coin1.wav-013fa0bd32e95121f1af875e05941c38.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 ================================================ FILE: media/audio/sfx/crate_land.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/crate_land.wav-ab508f90730200b3fbea6441fb7862ad.sample" [deps] source_file="res://media/audio/sfx/crate_land.wav" dest_files=[ "res://.import/crate_land.wav-ab508f90730200b3fbea6441fb7862ad.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 ================================================ FILE: media/audio/sfx/crate_move.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/crate_move.wav-eb749e66efe2cff1156ee3e8ecfd75a3.sample" [deps] source_file="res://media/audio/sfx/crate_move.wav" dest_files=[ "res://.import/crate_move.wav-eb749e66efe2cff1156ee3e8ecfd75a3.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 ================================================ FILE: media/audio/sfx/door_close.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/door_close.wav-b89d9b6a71e6e5abfb4cd76a175469bb.sample" [deps] source_file="res://media/audio/sfx/door_close.wav" dest_files=[ "res://.import/door_close.wav-b89d9b6a71e6e5abfb4cd76a175469bb.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 ================================================ FILE: media/audio/sfx/door_squeak.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/door_squeak.wav-8da03e1c16fa5b0067012fed526c6e07.sample" [deps] source_file="res://media/audio/sfx/door_squeak.wav" dest_files=[ "res://.import/door_squeak.wav-8da03e1c16fa5b0067012fed526c6e07.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 ================================================ FILE: media/audio/sfx/doorknob.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/doorknob.wav-19c9dabe04ff5a4df54aca84c0ce0c22.sample" [deps] source_file="res://media/audio/sfx/doorknob.wav" dest_files=[ "res://.import/doorknob.wav-19c9dabe04ff5a4df54aca84c0ce0c22.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 ================================================ FILE: media/audio/sfx/explode0.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/explode0.wav-383f8d5d9a58600e7c3cbdcb395a214e.sample" [deps] source_file="res://media/audio/sfx/explode0.wav" dest_files=[ "res://.import/explode0.wav-383f8d5d9a58600e7c3cbdcb395a214e.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 ================================================ FILE: media/audio/sfx/explode1.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/explode1.wav-3fc0ca962a60bff76cba926609b851b4.sample" [deps] source_file="res://media/audio/sfx/explode1.wav" dest_files=[ "res://.import/explode1.wav-3fc0ca962a60bff76cba926609b851b4.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 ================================================ FILE: media/audio/sfx/explode2.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/explode2.wav-6036c8236cd182988de6ffa121c19c6c.sample" [deps] source_file="res://media/audio/sfx/explode2.wav" dest_files=[ "res://.import/explode2.wav-6036c8236cd182988de6ffa121c19c6c.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 ================================================ FILE: media/audio/sfx/fallout0.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/fallout0.wav-e74bb38d9f533e3709984f56f25a25bf.sample" [deps] source_file="res://media/audio/sfx/fallout0.wav" dest_files=[ "res://.import/fallout0.wav-e74bb38d9f533e3709984f56f25a25bf.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 ================================================ FILE: media/audio/sfx/fallout1.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/fallout1.wav-6535afc7346e3de6cc1a20a27ad687e5.sample" [deps] source_file="res://media/audio/sfx/fallout1.wav" dest_files=[ "res://.import/fallout1.wav-6535afc7346e3de6cc1a20a27ad687e5.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 ================================================ FILE: media/audio/sfx/fallout2.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/fallout2.wav-8243b16815b387796b1b2e3d3ab0b650.sample" [deps] source_file="res://media/audio/sfx/fallout2.wav" dest_files=[ "res://.import/fallout2.wav-8243b16815b387796b1b2e3d3ab0b650.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 ================================================ FILE: media/audio/sfx/fallout3.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/fallout3.wav-717cc99b265ececece4823bcbabc76c9.sample" [deps] source_file="res://media/audio/sfx/fallout3.wav" dest_files=[ "res://.import/fallout3.wav-717cc99b265ececece4823bcbabc76c9.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 ================================================ FILE: media/audio/sfx/guitar_pluck.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/guitar_pluck.wav-776ac609dc92063db46c95eab9764199.sample" [deps] source_file="res://media/audio/sfx/guitar_pluck.wav" dest_files=[ "res://.import/guitar_pluck.wav-776ac609dc92063db46c95eab9764199.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 ================================================ FILE: media/audio/sfx/hit0.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/hit0.wav-7e49fc62dec62173fc430be7ac5dc708.sample" [deps] source_file="res://media/audio/sfx/hit0.wav" dest_files=[ "res://.import/hit0.wav-7e49fc62dec62173fc430be7ac5dc708.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 ================================================ FILE: media/audio/sfx/hit10.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/hit10.wav-53465991b2407b587922ceb88fc4f8ad.sample" [deps] source_file="res://media/audio/sfx/hit10.wav" dest_files=[ "res://.import/hit10.wav-53465991b2407b587922ceb88fc4f8ad.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 ================================================ FILE: media/audio/sfx/jump1.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/jump1.wav-fc1d903c523488a64270dedc45da8504.sample" [deps] source_file="res://media/audio/sfx/jump1.wav" dest_files=[ "res://.import/jump1.wav-fc1d903c523488a64270dedc45da8504.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 ================================================ FILE: media/audio/sfx/jump2.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/jump2.wav-1dc6760fe0679193b60e463bf61aa495.sample" [deps] source_file="res://media/audio/sfx/jump2.wav" dest_files=[ "res://.import/jump2.wav-1dc6760fe0679193b60e463bf61aa495.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 ================================================ FILE: media/audio/sfx/jump3.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/jump3.wav-7f0e5d8502386dd44526dfd87ac26ac8.sample" [deps] source_file="res://media/audio/sfx/jump3.wav" dest_files=[ "res://.import/jump3.wav-7f0e5d8502386dd44526dfd87ac26ac8.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 ================================================ FILE: media/audio/sfx/jump4.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/jump4.wav-bde10855a9ca7e5db79d1f0057bceb1b.sample" [deps] source_file="res://media/audio/sfx/jump4.wav" dest_files=[ "res://.import/jump4.wav-bde10855a9ca7e5db79d1f0057bceb1b.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 ================================================ FILE: media/audio/sfx/key.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/key.wav-7dbc7e84aa9fca750bddfba35ddee284.sample" [deps] source_file="res://media/audio/sfx/key.wav" dest_files=[ "res://.import/key.wav-7dbc7e84aa9fca750bddfba35ddee284.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 ================================================ FILE: media/audio/sfx/mixkit-light-rain-looping-1249.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/mixkit-light-rain-looping-1249.wav-a6620c0f6ad8f536e3d2308b8ff0bb94.sample" [deps] source_file="res://media/audio/sfx/mixkit-light-rain-looping-1249.wav" dest_files=[ "res://.import/mixkit-light-rain-looping-1249.wav-a6620c0f6ad8f536e3d2308b8ff0bb94.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=2 edit/loop_begin=0 edit/loop_end=-1 compress/mode=0 ================================================ FILE: media/audio/sfx/oneup0.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/oneup0.wav-fe5f1ca2a7029d080740eebe6f0fd73e.sample" [deps] source_file="res://media/audio/sfx/oneup0.wav" dest_files=[ "res://.import/oneup0.wav-fe5f1ca2a7029d080740eebe6f0fd73e.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 ================================================ FILE: media/audio/sfx/oneup1.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/oneup1.wav-39bcad1b6fbc6b89470de4457c2c0504.sample" [deps] source_file="res://media/audio/sfx/oneup1.wav" dest_files=[ "res://.import/oneup1.wav-39bcad1b6fbc6b89470de4457c2c0504.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 ================================================ FILE: media/audio/sfx/oneup2.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/oneup2.wav-c308d6a42a0e153651c27f9d1c48c875.sample" [deps] source_file="res://media/audio/sfx/oneup2.wav" dest_files=[ "res://.import/oneup2.wav-c308d6a42a0e153651c27f9d1c48c875.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 ================================================ FILE: media/audio/sfx/piano_high.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/piano_high.wav-bbea07a132410bc2cd96646d6668bfdf.sample" [deps] source_file="res://media/audio/sfx/piano_high.wav" dest_files=[ "res://.import/piano_high.wav-bbea07a132410bc2cd96646d6668bfdf.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 ================================================ FILE: media/audio/sfx/player_jump.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/player_jump.wav-7f53ea4805fd4c1a6853a0564da9ac1f.sample" [deps] source_file="res://media/audio/sfx/player_jump.wav" dest_files=[ "res://.import/player_jump.wav-7f53ea4805fd4c1a6853a0564da9ac1f.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 ================================================ FILE: media/audio/sfx/player_land.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/player_land.wav-956dc4605cfcb86060ac63ecc4f3e9dd.sample" [deps] source_file="res://media/audio/sfx/player_land.wav" dest_files=[ "res://.import/player_land.wav-956dc4605cfcb86060ac63ecc4f3e9dd.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 ================================================ FILE: media/audio/sfx/player_punch0.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/player_punch0.wav-848cfe4ce7d887dbb18a2d95845f7062.sample" [deps] source_file="res://media/audio/sfx/player_punch0.wav" dest_files=[ "res://.import/player_punch0.wav-848cfe4ce7d887dbb18a2d95845f7062.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 ================================================ FILE: media/audio/sfx/player_punch1.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/player_punch1.wav-0c9b3716d47bcf981442165cd222b279.sample" [deps] source_file="res://media/audio/sfx/player_punch1.wav" dest_files=[ "res://.import/player_punch1.wav-0c9b3716d47bcf981442165cd222b279.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 ================================================ FILE: media/audio/sfx/player_punch2.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/player_punch2.wav-7302fb38a681aa0ecd128f1f228b0a52.sample" [deps] source_file="res://media/audio/sfx/player_punch2.wav" dest_files=[ "res://.import/player_punch2.wav-7302fb38a681aa0ecd128f1f228b0a52.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 ================================================ FILE: media/audio/sfx/portal0.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/portal0.wav-6938cb4953aef29a3321c670b70bf343.sample" [deps] source_file="res://media/audio/sfx/portal0.wav" dest_files=[ "res://.import/portal0.wav-6938cb4953aef29a3321c670b70bf343.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 ================================================ FILE: media/audio/sfx/sfx4.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/sfx4.wav-bcfa0d5ea6026a328ecfb6723f9505a6.sample" [deps] source_file="res://media/audio/sfx/sfx4.wav" dest_files=[ "res://.import/sfx4.wav-bcfa0d5ea6026a328ecfb6723f9505a6.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 ================================================ FILE: media/audio/sfx/shine_get.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/shine_get.wav-a982d252d21115deb42b7a14f34bf4d9.sample" [deps] source_file="res://media/audio/sfx/shine_get.wav" dest_files=[ "res://.import/shine_get.wav-a982d252d21115deb42b7a14f34bf4d9.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 ================================================ FILE: media/audio/sfx/shine_sparkle.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/shine_sparkle.wav-14e44b5dedc57f9d46cfd717e9fe80c7.sample" [deps] source_file="res://media/audio/sfx/shine_sparkle.wav" dest_files=[ "res://.import/shine_sparkle.wav-14e44b5dedc57f9d46cfd717e9fe80c7.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 ================================================ FILE: media/audio/sfx/slap0.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/slap0.wav-ae3a7a61743dc26b174ba037a3931ebc.sample" [deps] source_file="res://media/audio/sfx/slap0.wav" dest_files=[ "res://.import/slap0.wav-ae3a7a61743dc26b174ba037a3931ebc.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 ================================================ FILE: media/audio/sfx/slap1.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/slap1.wav-584ab2c858084f2e28e6979de7019556.sample" [deps] source_file="res://media/audio/sfx/slap1.wav" dest_files=[ "res://.import/slap1.wav-584ab2c858084f2e28e6979de7019556.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 ================================================ FILE: media/audio/sfx/slap2.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/slap2.wav-a703194dceb735fb22e712354873aa5f.sample" [deps] source_file="res://media/audio/sfx/slap2.wav" dest_files=[ "res://.import/slap2.wav-a703194dceb735fb22e712354873aa5f.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 ================================================ FILE: media/audio/sfx/teleport.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/teleport.wav-22a7152e24700684c263e3163320d8c2.sample" [deps] source_file="res://media/audio/sfx/teleport.wav" dest_files=[ "res://.import/teleport.wav-22a7152e24700684c263e3163320d8c2.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 ================================================ FILE: media/audio/sfx/transition.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/transition.wav-7842a48fa8a8c1870fc37ae95ab5b107.sample" [deps] source_file="res://media/audio/sfx/transition.wav" dest_files=[ "res://.import/transition.wav-7842a48fa8a8c1870fc37ae95ab5b107.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 ================================================ FILE: media/audio/sfx/zap0.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/zap0.wav-e75867dbe80c10b3f08891554acaa74e.sample" [deps] source_file="res://media/audio/sfx/zap0.wav" dest_files=[ "res://.import/zap0.wav-e75867dbe80c10b3f08891554acaa74e.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 ================================================ FILE: media/audio/sfx/ziherette1.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/ziherette1.wav-cf7f1e5bfffe66f8af3d934d69aa4386.sample" [deps] source_file="res://media/audio/sfx/ziherette1.wav" dest_files=[ "res://.import/ziherette1.wav-cf7f1e5bfffe66f8af3d934d69aa4386.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 ================================================ FILE: media/audio/voice/adore_flowers.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/adore_flowers.wav-51bc2b1ffe9881dafbc9f5e545b84580.sample" [deps] source_file="res://media/audio/voice/adore_flowers.wav" dest_files=[ "res://.import/adore_flowers.wav-51bc2b1ffe9881dafbc9f5e545b84580.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 ================================================ FILE: media/audio/voice/good_day.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/good_day.wav-34d196ebddf86e3f52ef7a3e0f6b492b.sample" [deps] source_file="res://media/audio/voice/good_day.wav" dest_files=[ "res://.import/good_day.wav-34d196ebddf86e3f52ef7a3e0f6b492b.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 ================================================ FILE: media/audio/voice/lovely_weather.wav.import ================================================ [remap] importer="wav" type="AudioStreamSample" path="res://.import/lovely_weather.wav-ceac5095ba666ad4d5b7ec821c6c8d61.sample" [deps] source_file="res://media/audio/voice/lovely_weather.wav" dest_files=[ "res://.import/lovely_weather.wav-ceac5095ba666ad4d5b7ec821c6c8d61.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 ================================================ FILE: media/font/profile/DoorLabel.tres ================================================ [gd_resource type="DynamicFont" load_steps=2 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [resource] size = 70 outline_size = 5 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true extra_spacing_bottom = -7 font_data = ExtResource( 1 ) ================================================ FILE: media/font/profile/FileCard.tres ================================================ [gd_resource type="DynamicFont" load_steps=2 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [resource] size = 50 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) ================================================ FILE: media/font/profile/OptionsHeader.tres ================================================ [gd_resource type="DynamicFont" load_steps=2 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [resource] size = 50 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) ================================================ FILE: media/font/profile/OptionsHeader2.tres ================================================ [gd_resource type="DynamicFont" load_steps=2 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [resource] size = 28 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) ================================================ FILE: media/font/profile/OptionsItem.tres ================================================ [gd_resource type="DynamicFont" load_steps=2 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [resource] size = 40 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) ================================================ FILE: media/font/profile/PatchNumber.tres ================================================ [gd_resource type="DynamicFont" load_steps=2 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [resource] size = 25 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) ================================================ FILE: media/font/profile/PauseHeader.tres ================================================ [gd_resource type="DynamicFont" load_steps=2 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [resource] size = 80 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) ================================================ FILE: media/font/profile/PauseItem.tres ================================================ [gd_resource type="DynamicFont" load_steps=2 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [resource] size = 50 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) ================================================ FILE: media/font/profile/RemapKey.tres ================================================ [gd_resource type="DynamicFont" load_steps=2 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [resource] size = 40 use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) ================================================ FILE: media/font/profile/UI_Keys.tres ================================================ [gd_resource type="DynamicFont" load_steps=2 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [resource] size = 30 outline_size = 2 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) ================================================ FILE: media/font/profile/UI_gem.tres ================================================ [gd_resource type="DynamicFont" load_steps=2 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [resource] size = 88 outline_size = 5 outline_color = Color( 0, 0, 0, 1 ) use_filter = true extra_spacing_bottom = -7 font_data = ExtResource( 1 ) ================================================ FILE: media/image/UI/Audio.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/Audio.png-61545d69f17b92b5dc0e40cc779fbe7f.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/Audio.png" dest_files=[ "res://.import/Audio.png-61545d69f17b92b5dc0e40cc779fbe7f.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/HarmonyHoneyLogo.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/HarmonyHoneyLogo.svg-6a8e1f7bd7d99b902bb7302c88c10368.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/HarmonyHoneyLogo.svg" dest_files=[ "res://.import/HarmonyHoneyLogo.svg-6a8e1f7bd7d99b902bb7302c88c10368.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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=2.0 ================================================ FILE: media/image/UI/Input.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/Input.png-f6602a16aaa343ae686cad1e59d21b42.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/Input.png" dest_files=[ "res://.import/Input.png-f6602a16aaa343ae686cad1e59d21b42.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/Video.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/Video.png-545d68098b5deb1f416beb2ad36f921c.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/Video.png" dest_files=[ "res://.import/Video.png-545d68098b5deb1f416beb2ad36f921c.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/arrow_up.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/arrow_up.png-d65433404b4482c94f010fe15669d4be.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/arrow_up.png" dest_files=[ "res://.import/arrow_up.png-d65433404b4482c94f010fe15669d4be.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/boot.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/boot.png-ced710255aafbf06518dd6856a77706b.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/boot.png" dest_files=[ "res://.import/boot.png-ced710255aafbf06518dd6856a77706b.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/btn_a.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/btn_a.png-42342d001d1e093aa1ab35e014cd4806.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/btn_a.png" dest_files=[ "res://.import/btn_a.png-42342d001d1e093aa1ab35e014cd4806.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/btn_b.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/btn_b.png-3e6b32e73392ac831ec7c6b33b46c0dd.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/btn_b.png" dest_files=[ "res://.import/btn_b.png-3e6b32e73392ac831ec7c6b33b46c0dd.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/btn_lb.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/btn_lb.png-77ba9eeab6f080785ba0a785e2681746.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/btn_lb.png" dest_files=[ "res://.import/btn_lb.png-77ba9eeab6f080785ba0a785e2681746.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/btn_ls.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/btn_ls.png-b50e990964dffa570948010fc93d7ebe.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/btn_ls.png" dest_files=[ "res://.import/btn_ls.png-b50e990964dffa570948010fc93d7ebe.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/btn_lt.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/btn_lt.png-15e33defe3e857cc3a7c4aebcd2b8d7f.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/btn_lt.png" dest_files=[ "res://.import/btn_lt.png-15e33defe3e857cc3a7c4aebcd2b8d7f.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/btn_rb.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/btn_rb.png-af4c887eb60d8b1583dcd5636da0c7ad.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/btn_rb.png" dest_files=[ "res://.import/btn_rb.png-af4c887eb60d8b1583dcd5636da0c7ad.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/btn_rs.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/btn_rs.png-d67c07b0fdbff4504d005abacfc6f33e.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/btn_rs.png" dest_files=[ "res://.import/btn_rs.png-d67c07b0fdbff4504d005abacfc6f33e.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/btn_rt.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/btn_rt.png-7fabc77ee833d453cf39067fa121eb5d.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/btn_rt.png" dest_files=[ "res://.import/btn_rt.png-7fabc77ee833d453cf39067fa121eb5d.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/btn_select.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/btn_select.png-56cae0c8dcf8d07d3d30aa7ef4f57cc9.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/btn_select.png" dest_files=[ "res://.import/btn_select.png-56cae0c8dcf8d07d3d30aa7ef4f57cc9.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/btn_start.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/btn_start.png-1392466832bf59a430bdace90bba03be.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/btn_start.png" dest_files=[ "res://.import/btn_start.png-1392466832bf59a430bdace90bba03be.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/btn_x.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/btn_x.png-bfb777626882eb622b0c77649701588e.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/btn_x.png" dest_files=[ "res://.import/btn_x.png-bfb777626882eb622b0c77649701588e.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/btn_y.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/btn_y.png-0ce443f41cea66f2fb7e581197ac6592.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/btn_y.png" dest_files=[ "res://.import/btn_y.png-0ce443f41cea66f2fb7e581197ac6592.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/clock.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/clock.png-b806400cc7f886b34f52f360bef8bcda.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/clock.png" dest_files=[ "res://.import/clock.png-b806400cc7f886b34f52f360bef8bcda.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/door_arrow.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/door_arrow.png-7d0d1eb6752a8e941b154c9ba1d0be90.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/door_arrow.png" dest_files=[ "res://.import/door_arrow.png-7d0d1eb6752a8e941b154c9ba1d0be90.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 ================================================ FILE: media/image/UI/dpad.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/dpad.png-eb6e96bb4907accfb51d79296857a017.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/dpad.png" dest_files=[ "res://.import/dpad.png-eb6e96bb4907accfb51d79296857a017.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/dpad_up.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/dpad_up.png-65353f4a115e5cea42d94ec4333b3157.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/dpad_up.png" dest_files=[ "res://.import/dpad_up.png-65353f4a115e5cea42d94ec4333b3157.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/eye.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/eye.svg-f8c95c6be031e0cc1c38a712fea94022.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/eye.svg" dest_files=[ "res://.import/eye.svg-f8c95c6be031e0cc1c38a712fea94022.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/foot.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/foot.png-ad5b9f99cf2d80cb8ff23c7ad0cd2b33.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/foot.png" dest_files=[ "res://.import/foot.png-ad5b9f99cf2d80cb8ff23c7ad0cd2b33.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/godot_logo.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/godot_logo.svg-b4bf343379c7e731e67d3faf844b960a.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/godot_logo.svg" dest_files=[ "res://.import/godot_logo.svg-b4bf343379c7e731e67d3faf844b960a.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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=2.0 ================================================ FILE: media/image/UI/hand.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/hand.png-a70708b2d046fab302142355fa09341a.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/hand.png" dest_files=[ "res://.import/hand.png-a70708b2d046fab302142355fa09341a.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/harmony-monroe-square-white.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/harmony-monroe-square-white.png-ddf61032c5d50c1bf08c2fd5160a5188.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/harmony-monroe-square-white.png" dest_files=[ "res://.import/harmony-monroe-square-white.png-ddf61032c5d50c1bf08c2fd5160a5188.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/harmony-monroe-white.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/harmony-monroe-white.png-b5ca7bdecdb1233b817bf2f49291c597.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/harmony-monroe-white.png" dest_files=[ "res://.import/harmony-monroe-white.png-b5ca7bdecdb1233b817bf2f49291c597.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/heart.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/heart.svg-d7f720f2952ed1b1bc83343309b0c2e1.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/heart.svg" dest_files=[ "res://.import/heart.svg-d7f720f2952ed1b1bc83343309b0c2e1.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/hhoney_logo.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/hhoney_logo.svg-29a9142ec4509b73dd095f13be472d71.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/hhoney_logo.svg" dest_files=[ "res://.import/hhoney_logo.svg-29a9142ec4509b73dd095f13be472d71.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/key_2.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/key_2.png-05da3fb407f348ccc05a3701ae98e19a.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/key_2.png" dest_files=[ "res://.import/key_2.png-05da3fb407f348ccc05a3701ae98e19a.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/key_3.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/key_3.png-77791dec29057c2265eb2c5caa4b259c.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/key_3.png" dest_files=[ "res://.import/key_3.png-77791dec29057c2265eb2c5caa4b259c.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/key_up.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/key_up.png-17d34e5fb4fedce6697a20ed8dca08a4.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/key_up.png" dest_files=[ "res://.import/key_up.png-17d34e5fb4fedce6697a20ed8dca08a4.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/key_up_logo.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/key_up_logo.png-c70d77cea2b84646a9eacf2acf014df6.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/key_up_logo.png" dest_files=[ "res://.import/key_up_logo.png-c70d77cea2b84646a9eacf2acf014df6.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/key_up_square.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/key_up_square.png-ccd797a312a80d55f42518f4e4eec040.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/key_up_square.png" dest_files=[ "res://.import/key_up_square.png-ccd797a312a80d55f42518f4e4eec040.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/keys.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/Keys.png-3bdb0f4a0a6f8a93c1ba3e24acd31763.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/Keys.png" dest_files=[ "res://.import/Keys.png-3bdb0f4a0a6f8a93c1ba3e24acd31763.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/l_stick_down.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/l_stick_down.png-00278dc8ba896112aa6fe79da60177d8.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/l_stick_down.png" dest_files=[ "res://.import/l_stick_down.png-00278dc8ba896112aa6fe79da60177d8.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/l_stick_left.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/l_stick_left.png-a369feceb0f076886ed9d2ffde334264.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/l_stick_left.png" dest_files=[ "res://.import/l_stick_left.png-a369feceb0f076886ed9d2ffde334264.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/l_stick_right.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/l_stick_right.png-946670c35655a5509c3dbc07fadd7d1b.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/l_stick_right.png" dest_files=[ "res://.import/l_stick_right.png-946670c35655a5509c3dbc07fadd7d1b.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/l_stick_up.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/l_stick_up.png-037c47057a3675b693525febe6bcc4be.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/l_stick_up.png" dest_files=[ "res://.import/l_stick_up.png-037c47057a3675b693525febe6bcc4be.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/magnify.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/magnify.png-10cfdcb5d04731a7c5344a52c9fadd1f.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/magnify.png" dest_files=[ "res://.import/magnify.png-10cfdcb5d04731a7c5344a52c9fadd1f.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/r_stick_down.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/r_stick_down.png-0ea46e7c0bbc891bed4a59a9359388c3.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/r_stick_down.png" dest_files=[ "res://.import/r_stick_down.png-0ea46e7c0bbc891bed4a59a9359388c3.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/r_stick_left.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/r_stick_left.png-23ce0b6face85305724633a59ecc3197.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/r_stick_left.png" dest_files=[ "res://.import/r_stick_left.png-23ce0b6face85305724633a59ecc3197.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/r_stick_right.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/r_stick_right.png-dd15fe115745063ec7649af7c723a45d.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/r_stick_right.png" dest_files=[ "res://.import/r_stick_right.png-dd15fe115745063ec7649af7c723a45d.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/r_stick_up.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/r_stick_up.png-702de380e9f22cafa3007673c97fd881.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/r_stick_up.png" dest_files=[ "res://.import/r_stick_up.png-702de380e9f22cafa3007673c97fd881.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/reset.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/reset.png-40eddf7a3d9dd9ff0510bb2bceffdfad.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/reset.png" dest_files=[ "res://.import/reset.png-40eddf7a3d9dd9ff0510bb2bceffdfad.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/reset.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/reset.svg-d1f4153d5aee3f8e86edf65f4bf3dc80.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/reset.svg" dest_files=[ "res://.import/reset.svg-d1f4153d5aee3f8e86edf65f4bf3dc80.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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=2.0 ================================================ FILE: media/image/UI/title.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/title.png-076ec6f99da65e1a3c42a4f35d404d66.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/title.png" dest_files=[ "res://.import/title.png-076ec6f99da65e1a3c42a4f35d404d66.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/UI/title_splash.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/title_splash.png-ff27a8c006ae52ceef9d8ad5c1c251a6.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/UI/title_splash.png" dest_files=[ "res://.import/title_splash.png-ff27a8c006ae52ceef9d8ad5c1c251a6.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/arcade/candy-sheet.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/candy-sheet.png-5dec17084aa152e11f77a5bc104774ed.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/arcade/candy-sheet.png" dest_files=[ "res://.import/candy-sheet.png-5dec17084aa152e11f77a5bc104774ed.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=false flags/mipmaps=false flags/anisotropic=false flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=false svg/scale=1.0 ================================================ FILE: media/image/assets/.gdignore ================================================ ================================================ FILE: media/image/assets/screens/.gdignore ================================================ ================================================ FILE: media/image/assets/screens/thumb/.gdignore ================================================ ================================================ FILE: media/image/box/box-100.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/box-100.png-05efdcc68c94fbcc65213588816a49f2.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/box/box-100.png" dest_files=[ "res://.import/box-100.png-05efdcc68c94fbcc65213588816a49f2.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/box/box-400.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/box-400.png-8c51c756778f15ae3bbe1d2dc17e23bf.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/box/box-400.png" dest_files=[ "res://.import/box-400.png-8c51c756778f15ae3bbe1d2dc17e23bf.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/box/box_both.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/box_both.png-2ca11de88d0ff7afb29f935f52d72de3.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/box/box_both.png" dest_files=[ "res://.import/box_both.png-2ca11de88d0ff7afb29f935f52d72de3.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 ================================================ FILE: media/image/box/box_push.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/box_push.png-a2a6ee4c1197d3f83abb84b07c83ae15.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/box/box_push.png" dest_files=[ "res://.import/box_push.png-a2a6ee4c1197d3f83abb84b07c83ae15.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 ================================================ FILE: media/image/box/round_rect100.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/round_rect100.png-51155f3332ebad8f0c25ea841051e94f.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/box/round_rect100.png" dest_files=[ "res://.import/round_rect100.png-51155f3332ebad8f0c25ea841051e94f.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 ================================================ FILE: media/image/box/round_rect200.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/round_rect200.png-0f280f0f644c18dde3d0202185336fe0.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/box/round_rect200.png" dest_files=[ "res://.import/round_rect200.png-0f280f0f644c18dde3d0202185336fe0.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/box/round_rect400.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/round_rect400.png-42ea71aaf6d27941dd7057483b90a461.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/box/round_rect400.png" dest_files=[ "res://.import/round_rect400.png-42ea71aaf6d27941dd7057483b90a461.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/box/treads.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/treads.png-84d04c773b7d3a91e0edc07378dcbbb9.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/box/treads.png" dest_files=[ "res://.import/treads.png-84d04c773b7d3a91e0edc07378dcbbb9.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 ================================================ FILE: media/image/details/TreeBark.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/TreeBark.svg-d2ff9cfe7b5e10eac453ecdc2d09e3c6.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/TreeBark.svg" dest_files=[ "res://.import/TreeBark.svg-d2ff9cfe7b5e10eac453ecdc2d09e3c6.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/details/TreeTop.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/TreeTop.svg-100a566bc33e4828877c2c4531e0c173.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/TreeTop.svg" dest_files=[ "res://.import/TreeTop.svg-100a566bc33e4828877c2c4531e0c173.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/details/arcade_back.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/arcade_back.png-6f8fcf0094df358dc9bb67b6c41e3b01.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/arcade_back.png" dest_files=[ "res://.import/arcade_back.png-6f8fcf0094df358dc9bb67b6c41e3b01.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/details/arcade_cabinet.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/arcade_cabinet.png-d4d2d5348ca70e1813734c835b502dd7.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/arcade_cabinet.png" dest_files=[ "res://.import/arcade_cabinet.png-d4d2d5348ca70e1813734c835b502dd7.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/details/arcade_front.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/arcade_front.png-46eccf5fe24155bf74b6cd6e35bab313.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/arcade_front.png" dest_files=[ "res://.import/arcade_front.png-46eccf5fe24155bf74b6cd6e35bab313.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/details/bench.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/bench.svg-ba1c2b5ec1936cdf2afbdc3c5d87a406.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/bench.svg" dest_files=[ "res://.import/bench.svg-ba1c2b5ec1936cdf2afbdc3c5d87a406.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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=0.6 ================================================ FILE: media/image/details/candle.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/candle.png-b3ab80775ac11fb9631de882a934d5f7.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/candle.png" dest_files=[ "res://.import/candle.png-b3ab80775ac11fb9631de882a934d5f7.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/details/circle.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/circle.svg-902f0a02432b7fd154485a76932a05fb.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/circle.svg" dest_files=[ "res://.import/circle.svg-902f0a02432b7fd154485a76932a05fb.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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=5.0 ================================================ FILE: media/image/details/circle100.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/circle100.png-d0c0fe5d0bc662944cbb980cdd3d9b00.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/circle100.png" dest_files=[ "res://.import/circle100.png-d0c0fe5d0bc662944cbb980cdd3d9b00.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/details/circle_half.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/circle_half.svg-a4fcf5d45ada3e96ca1ea21ca94c59da.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/circle_half.svg" dest_files=[ "res://.import/circle_half.svg-a4fcf5d45ada3e96ca1ea21ca94c59da.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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=5.0 ================================================ FILE: media/image/details/fence_pattern.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/fence_pattern.svg-ed8a7481d98d5b064eb65e9cfe9a7ea3.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/fence_pattern.svg" dest_files=[ "res://.import/fence_pattern.svg-ed8a7481d98d5b064eb65e9cfe9a7ea3.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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=0.5 ================================================ FILE: media/image/details/flame.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/flame.png-80ec48350312dad61dcdde06373285d8.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/flame.png" dest_files=[ "res://.import/flame.png-80ec48350312dad61dcdde06373285d8.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/details/lamppost.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/lamppost.svg-b4961c2308063ac71c25e770728e87a2.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/lamppost.svg" dest_files=[ "res://.import/lamppost.svg-b4961c2308063ac71c25e770728e87a2.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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=0.8 ================================================ FILE: media/image/details/pine_tree.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/pine_tree.png-e5647de305f24aceece208efee30a940.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/pine_tree.png" dest_files=[ "res://.import/pine_tree.png-e5647de305f24aceece208efee30a940.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=true flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/details/raindrop.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/raindrop.svg-57214b1845cff404066213ac96ff960b.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/raindrop.svg" dest_files=[ "res://.import/raindrop.svg-57214b1845cff404066213ac96ff960b.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/details/raindrop2.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/raindrop2.svg-971c87139cbd54c1ad38154d2967305a.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/raindrop2.svg" dest_files=[ "res://.import/raindrop2.svg-971c87139cbd54c1ad38154d2967305a.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/details/saguaro.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/saguaro.svg-adf69c3da322a84947b439019b0104e6.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/saguaro.svg" dest_files=[ "res://.import/saguaro.svg-adf69c3da322a84947b439019b0104e6.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=true flags/anisotropic=false flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/details/snowman.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/snowman.svg-9d57f10f001dc6e0ba91c24cfeb769af.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/snowman.svg" dest_files=[ "res://.import/snowman.svg-9d57f10f001dc6e0ba91c24cfeb769af.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/details/star.svg.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/star.svg-ad08e89d2e7255fb398a9d86e7b5a5a6.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/details/star.svg" dest_files=[ "res://.import/star.svg-ad08e89d2e7255fb398a9d86e7b5a5a6.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/gobot.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/gobot.png-b8da81f7ee08bcd83649056bdac7f23f.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/gobot.png" dest_files=[ "res://.import/gobot.png-b8da81f7ee08bcd83649056bdac7f23f.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/icon/android-icon192.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/android-icon192.png-8ced6154d62c44da16aa10ff020fc5cd.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/icon/android-icon192.png" dest_files=[ "res://.import/android-icon192.png-8ced6154d62c44da16aa10ff020fc5cd.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/icon/icon100.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/icon100.png-d0b301ea33d62d0e224ab87e46b3df42.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/icon/icon100.png" dest_files=[ "res://.import/icon100.png-d0b301ea33d62d0e224ab87e46b3df42.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/icon/icon128.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/icon128.png-3e35b2a0709d3cbe863a14fbdbf06d18.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/icon/icon128.png" dest_files=[ "res://.import/icon128.png-3e35b2a0709d3cbe863a14fbdbf06d18.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/icon/icon16.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/icon16.png-f2713bc9568271cc3e51a3ada41051ae.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/icon/icon16.png" dest_files=[ "res://.import/icon16.png-f2713bc9568271cc3e51a3ada41051ae.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/icon/icon200.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/icon200.png-d3fb16dde8ac6e09eba112102db45050.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/icon/icon200.png" dest_files=[ "res://.import/icon200.png-d3fb16dde8ac6e09eba112102db45050.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/icon/icon256.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/icon256.png-af3e823e703d377534f6d103e8c93965.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/icon/icon256.png" dest_files=[ "res://.import/icon256.png-af3e823e703d377534f6d103e8c93965.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/icon/icon32.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/icon32.png-94af2acc6454fcaa2130df79fde81447.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/icon/icon32.png" dest_files=[ "res://.import/icon32.png-94af2acc6454fcaa2130df79fde81447.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/icon/icon48.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/icon48.png-5bf80953a76662a2baed4bb865b2cdd6.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/icon/icon48.png" dest_files=[ "res://.import/icon48.png-5bf80953a76662a2baed4bb865b2cdd6.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/icon/icon64.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/icon64.png-392e00a41f360aba68e90feab4028689.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/icon/icon64.png" dest_files=[ "res://.import/icon64.png-392e00a41f360aba68e90feab4028689.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/icon/icon96.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/icon96.png-91de58d1f9e9f1982a28b27770695254.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/icon/icon96.png" dest_files=[ "res://.import/icon96.png-91de58d1f9e9f1982a28b27770695254.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/spike/spike.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/spike.png-e87ecdaed5d1b28d4d6aa9386cc495c9.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/spike/spike.png" dest_files=[ "res://.import/spike.png-e87ecdaed5d1b28d4d6aa9386cc495c9.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/spike/spike_tile.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/spike_tile.png-8ef06c306c35b56be6fe4ee31984114d.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/spike/spike_tile.png" dest_files=[ "res://.import/spike_tile.png-8ef06c306c35b56be6fe4ee31984114d.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/tiles/tile1_0.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile1_0.png-a4bfb829b247fa2215580fe9ed8d5ad8.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile1_0.png" dest_files=[ "res://.import/tile1_0.png-a4bfb829b247fa2215580fe9ed8d5ad8.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/tiles/tile1_1.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile1_1.png-147fc967267b83ed5d4b9f6f2d983fbe.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile1_1.png" dest_files=[ "res://.import/tile1_1.png-147fc967267b83ed5d4b9f6f2d983fbe.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/tiles/tile1_2.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile1_2.png-60f46437ffd3b467b2c75c1665fc83be.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile1_2.png" dest_files=[ "res://.import/tile1_2.png-60f46437ffd3b467b2c75c1665fc83be.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/tiles/tile1_3.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile1_3.png-119c33651d1b2c8eac8f41f13e907902.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile1_3.png" dest_files=[ "res://.import/tile1_3.png-119c33651d1b2c8eac8f41f13e907902.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/tiles/tile1_4.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile1_4.png-19991c3577eb7af7f7e69bb2cfbb0e3c.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile1_4.png" dest_files=[ "res://.import/tile1_4.png-19991c3577eb7af7f7e69bb2cfbb0e3c.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/tiles/tile2_0.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile2_0.png-cc6438e3f2eb26cc9d3a192f2aad87ac.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile2_0.png" dest_files=[ "res://.import/tile2_0.png-cc6438e3f2eb26cc9d3a192f2aad87ac.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile2_1.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile2_1.png-1b70b505f2f0e96cb9adac345dce8f75.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile2_1.png" dest_files=[ "res://.import/tile2_1.png-1b70b505f2f0e96cb9adac345dce8f75.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile2_2.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile2_2.png-ea8d52dc699c777a124e08c867bac9a3.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile2_2.png" dest_files=[ "res://.import/tile2_2.png-ea8d52dc699c777a124e08c867bac9a3.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile2_3.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile2_3.png-a5cee67c9fc1bac65d1c5e59776f9b74.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile2_3.png" dest_files=[ "res://.import/tile2_3.png-a5cee67c9fc1bac65d1c5e59776f9b74.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile2_4.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile2_4.png-07e735cc5848b92a39abb21018015597.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile2_4.png" dest_files=[ "res://.import/tile2_4.png-07e735cc5848b92a39abb21018015597.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile3_0.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile3_0.png-a886f9e6a59c810e616fca5bf9c1a6f7.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile3_0.png" dest_files=[ "res://.import/tile3_0.png-a886f9e6a59c810e616fca5bf9c1a6f7.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile3_1.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile3_1.png-229af686836e433e808b6b5914b3f1a1.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile3_1.png" dest_files=[ "res://.import/tile3_1.png-229af686836e433e808b6b5914b3f1a1.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile3_2.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile3_2.png-a3d5c4c8b5ea96d068516ce7db32c540.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile3_2.png" dest_files=[ "res://.import/tile3_2.png-a3d5c4c8b5ea96d068516ce7db32c540.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile3_3.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile3_3.png-1c401a6850bbab21a76ea180e34a98c8.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile3_3.png" dest_files=[ "res://.import/tile3_3.png-1c401a6850bbab21a76ea180e34a98c8.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile3_4.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile3_4.png-8bce74b1041196ce89ef93346c9e09bd.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile3_4.png" dest_files=[ "res://.import/tile3_4.png-8bce74b1041196ce89ef93346c9e09bd.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile4_0.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile4_0.png-0366f8d8cfc5a97b0ca2bc4d7146ddb9.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile4_0.png" dest_files=[ "res://.import/tile4_0.png-0366f8d8cfc5a97b0ca2bc4d7146ddb9.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile4_1.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile4_1.png-08650da59fd365f2db11d2b61d400e6a.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile4_1.png" dest_files=[ "res://.import/tile4_1.png-08650da59fd365f2db11d2b61d400e6a.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile4_2.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile4_2.png-6a069e5b7effcdb439b99493a984efcc.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile4_2.png" dest_files=[ "res://.import/tile4_2.png-6a069e5b7effcdb439b99493a984efcc.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile4_3.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile4_3.png-30a5a439a44e4d93c3b39b8f45e798c3.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile4_3.png" dest_files=[ "res://.import/tile4_3.png-30a5a439a44e4d93c3b39b8f45e798c3.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile4_4.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile4_4.png-b1a386e09b7c467e7f772dafa1dc2dc1.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile4_4.png" dest_files=[ "res://.import/tile4_4.png-b1a386e09b7c467e7f772dafa1dc2dc1.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile5_0.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile5_0.png-79e19e9c65011c50ee6dd714a71e6a85.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile5_0.png" dest_files=[ "res://.import/tile5_0.png-79e19e9c65011c50ee6dd714a71e6a85.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile5_1.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile5_1.png-acf392b8c0b52325b35819408f6d40cc.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile5_1.png" dest_files=[ "res://.import/tile5_1.png-acf392b8c0b52325b35819408f6d40cc.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile5_2.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile5_2.png-9c1997d33871874c75e58d14904e9624.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile5_2.png" dest_files=[ "res://.import/tile5_2.png-9c1997d33871874c75e58d14904e9624.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile5_3.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile5_3.png-e0312dbd4682938cadff893ffb6b50c8.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile5_3.png" dest_files=[ "res://.import/tile5_3.png-e0312dbd4682938cadff893ffb6b50c8.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile5_4.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile5_4.png-770d51fdc7227c57f5bc37f08ecb461d.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile5_4.png" dest_files=[ "res://.import/tile5_4.png-770d51fdc7227c57f5bc37f08ecb461d.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile6_0.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile6_0.png-0daaac866b433226f9f3fe58e7e7d488.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile6_0.png" dest_files=[ "res://.import/tile6_0.png-0daaac866b433226f9f3fe58e7e7d488.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile6_1.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile6_1.png-be8a4c5221a7416e7a9bbbe6fb149fdb.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile6_1.png" dest_files=[ "res://.import/tile6_1.png-be8a4c5221a7416e7a9bbbe6fb149fdb.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile6_2.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile6_2.png-82513df3a69f3ebf99de6a04dd29d736.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile6_2.png" dest_files=[ "res://.import/tile6_2.png-82513df3a69f3ebf99de6a04dd29d736.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile6_3.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile6_3.png-04bf94428c87826a46267a8e91820809.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile6_3.png" dest_files=[ "res://.import/tile6_3.png-04bf94428c87826a46267a8e91820809.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile6_4.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile6_4.png-3f13237b00bca2f41cbe5647b0320aba.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile6_4.png" dest_files=[ "res://.import/tile6_4.png-3f13237b00bca2f41cbe5647b0320aba.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile7_0.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile7_0.png-87858afa0854303b22dfce0e9ab3a410.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile7_0.png" dest_files=[ "res://.import/tile7_0.png-87858afa0854303b22dfce0e9ab3a410.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/tiles/tile7_1.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile7_1.png-58330cec1727779a8da4cd789312b088.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile7_1.png" dest_files=[ "res://.import/tile7_1.png-58330cec1727779a8da4cd789312b088.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/tiles/tile7_2.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile7_2.png-3025d7069c5b3e12031f7f9dbcc3aa83.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile7_2.png" dest_files=[ "res://.import/tile7_2.png-3025d7069c5b3e12031f7f9dbcc3aa83.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/tiles/tile7_3.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile7_3.png-9f4f0926f3c0b715c1d643b80d4cd0ec.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile7_3.png" dest_files=[ "res://.import/tile7_3.png-9f4f0926f3c0b715c1d643b80d4cd0ec.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/tiles/tile7_4.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile7_4.png-fd22f926e69b98a90899918718412cf6.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile7_4.png" dest_files=[ "res://.import/tile7_4.png-fd22f926e69b98a90899918718412cf6.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/tiles/tile_0.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile_0.png-4366a2c98a90a6c9086a442ea188e2b2.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile_0.png" dest_files=[ "res://.import/tile_0.png-4366a2c98a90a6c9086a442ea188e2b2.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile_1.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile_1.png-f6a4550ae53a177f50b3a6e98582fbb9.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile_1.png" dest_files=[ "res://.import/tile_1.png-f6a4550ae53a177f50b3a6e98582fbb9.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile_2.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile_2.png-39fe3b671eda9f7ae1370e2d803240a6.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile_2.png" dest_files=[ "res://.import/tile_2.png-39fe3b671eda9f7ae1370e2d803240a6.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile_3.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile_3.png-31bcf66f7f89440f66e1cace2556afd9.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile_3.png" dest_files=[ "res://.import/tile_3.png-31bcf66f7f89440f66e1cace2556afd9.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/tiles/tile_4.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/tile_4.png-08a78a661d74ec3b1cc6830c8afa72f7.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/tiles/tile_4.png" dest_files=[ "res://.import/tile_4.png-08a78a661d74ec3b1cc6830c8afa72f7.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 flags/filter=true flags/mipmaps=false flags/anisotropic=true flags/srgb=2 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true svg/scale=1.0 ================================================ FILE: media/image/white_square_100x.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/white_square_100x.png-954db02873b83e2b68e96a5f8d083e3e.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/white_square_100x.png" dest_files=[ "res://.import/white_square_100x.png-954db02873b83e2b68e96a5f8d083e3e.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: media/image/white_square_400x.png.import ================================================ [remap] importer="texture" type="StreamTexture" path="res://.import/white_square_400x.png-af243662f032a26370e52d8f4c36d39e.stex" metadata={ "vram_texture": false } [deps] source_file="res://media/image/white_square_400x.png" dest_files=[ "res://.import/white_square_400x.png-af243662f032a26370e52d8f4c36d39e.stex" ] [params] compress/mode=0 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 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 ================================================ FILE: project.godot ================================================ ; Engine configuration file. ; It's best edited using the editor UI and not directly, ; since the parameters that go here are not all obvious. ; ; Format: ; [section] ; section goes between [] ; param=value ; assign values to parameters config_version=4 _global_script_classes=[ { "base": "Node2D", "class": "Arrow", "language": "GDScript", "path": "res://src/actor/door/Arrow.gd" }, { "base": "KinematicBody2D", "class": "Box", "language": "GDScript", "path": "res://src/actor/Box.gd" }, { "base": "Node2D", "class": "Door", "language": "GDScript", "path": "res://src/actor/door/Door.gd" }, { "base": "Reference", "class": "EaseMover", "language": "GDScript", "path": "res://src/class/EaseMover.gd" }, { "base": "Node", "class": "MenuBase", "language": "GDScript", "path": "res://src/menu/MenuBase.gd" }, { "base": "Node2D", "class": "PaletteSwap", "language": "GDScript", "path": "res://src/detail/PaletteSwap.gd" }, { "base": "KinematicBody2D", "class": "Player", "language": "GDScript", "path": "res://src/actor/Player.gd" }, { "base": "CanvasItem", "class": "PolyShape", "language": "GDScript", "path": "res://src/class/shape/PolyShape.gd" }, { "base": "Resource", "class": "SaveDict", "language": "GDScript", "path": "res://src/class/SaveDict.gd" }, { "base": "Control", "class": "Scroll", "language": "GDScript", "path": "res://src/menu/options/scroll/Scroll.gd" }, { "base": "", "class": "SteamAPI", "language": "NativeScript", "path": "res://addons/steam_api/steam_api.gdns" }, { "base": "", "class": "SteamCallback", "language": "NativeScript", "path": "res://addons/steam_api/steam_callback.gdns" }, { "base": "", "class": "SteamFriends", "language": "NativeScript", "path": "res://addons/steam_api/steam_friends.gdns" }, { "base": "Node", "class": "SteamI", "language": "GDScript", "path": "res://addons/steam_api/steam_i.gd" }, { "base": "", "class": "SteamId", "language": "NativeScript", "path": "res://addons/steam_api/steam_id.gdns" }, { "base": "", "class": "SteamLeaderboard", "language": "NativeScript", "path": "res://addons/steam_api/steam_leaderboard.gdns" }, { "base": "", "class": "SteamLeaderboardEntries", "language": "NativeScript", "path": "res://addons/steam_api/steam_leaderboard_entries.gdns" }, { "base": "", "class": "SteamLeaderboardEntry", "language": "NativeScript", "path": "res://addons/steam_api/steam_leaderboard_entry.gdns" }, { "base": "", "class": "SteamLeaderboardFindResult", "language": "NativeScript", "path": "res://addons/steam_api/steam_find_leaderboard_result.gdns" }, { "base": "", "class": "SteamLeaderboardScoreUploaded", "language": "NativeScript", "path": "res://addons/steam_api/steam_leaderboard_uploaded.gdns" }, { "base": "", "class": "SteamLeaderboardScoresDownloaded", "language": "NativeScript", "path": "res://addons/steam_api/steam_leaderboard_scores_downloaded.gdns" }, { "base": "", "class": "SteamUser", "language": "NativeScript", "path": "res://addons/steam_api/steam_user.gdns" }, { "base": "", "class": "SteamUserStats", "language": "NativeScript", "path": "res://addons/steam_api/steam_user_stats.gdns" } ] _global_script_class_icons={ "Arrow": "", "Box": "", "Door": "", "EaseMover": "", "MenuBase": "", "PaletteSwap": "", "Player": "", "PolyShape": "", "SaveDict": "", "Scroll": "", "SteamAPI": "", "SteamCallback": "", "SteamFriends": "", "SteamI": "", "SteamId": "", "SteamLeaderboard": "", "SteamLeaderboardEntries": "", "SteamLeaderboardEntry": "", "SteamLeaderboardFindResult": "", "SteamLeaderboardScoreUploaded": "", "SteamLeaderboardScoresDownloaded": "", "SteamUser": "", "SteamUserStats": "" } [application] config/name="ROTA: Bend Gravity" config/description="ROTA: Bend Gravity by Harmony Monroe harmonymonroe.com" run/main_scene="res://src/menu/Splash.tscn" config/use_custom_user_dir=true config/custom_user_dir_name="ROTA-Harmony" config/project_settings_override="user://override.cfg" boot_splash/image="res://media/image/UI/harmony-monroe-square-white.png" boot_splash/bg_color=Color( 0, 0, 0, 1 ) config/icon="res://media/image/icon/icon256.png" config/windows_native_icon="res://media/image/icon/rota.ico" [autoload] Shared="*res://src/autoload/Shared.tscn" Cam="*res://src/autoload/Cam.tscn" UI="*res://src/autoload/UI.tscn" Wipe="*res://src/autoload/Wipe.tscn" CheatCode="*res://src/autoload/CheatCode.gd" Cutscene="*res://src/cutscene/Cutscene.tscn" MenuPause="*res://src/menu/MenuPause.tscn" MenuOptions="*res://src/menu/options/MenuOptions.tscn" MenuRemap="*res://src/menu/options/MenuRemap.tscn" MenuMakeover="*res://src/menu/MenuMakeover.tscn" Audio="*res://src/autoload/Audio.tscn" Clouds="*res://src/autoload/Clouds.tscn" TouchScreen="*res://src/autoload/touch_screen.tscn" Steam="*res://addons/steam_api/steam.gd" [display] window/size/width=1280 window/size/height=720 window/size/test_width=1920 window/size/test_height=1080 window/stretch/mode="2d" window/stretch/aspect="keep_height" [editor_plugins] enabled=PoolStringArray( "res://addons/steam_api/plugin.cfg" ) [input] 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":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":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":88,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } ui_select={ "deadzone": 0.5, "events": [ ] } ui_cancel={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777220,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":67,"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(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) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"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(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"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(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) ] } ui_up={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"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(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) ] } ui_down={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , 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) ] } 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": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777224,"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) ] } ui_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":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(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) ] } up={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"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(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) ] } down={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , 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) ] } left={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"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":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) ] } 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(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"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(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) ] } 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":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":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } grab={ "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":2,"pressure":0.0,"pressed":false,"script":null) ] } zoom={ "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(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) ] } reset={ "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":3,"pressure":0.0,"pressed":false,"script":null) ] } debug_makeover={ "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":16777235,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } debug_screenshot={ "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":16777224,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } debug_warp={ "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":16777236,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } debug_add_gem={ "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":16777223,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } debug_reset={ "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":16777220,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } [input_devices] pointing/emulate_touch_from_mouse=true [layer_names] 2d_physics/layer_1="solid" 2d_physics/layer_2="player" 2d_physics/layer_3="box" 2d_physics/layer_4="spike" 2d_physics/layer_5="detail" 2d_physics/layer_6="snowball" 2d_physics/layer_7="snowball_target" 2d_physics/layer_11="door" 2d_physics/layer_12="goal" [physics] common/enable_pause_aware_picking=true [rendering] environment/default_clear_color=Color( 0, 0.741176, 1, 1 ) environment/default_environment="res://default_env.tres" ================================================ FILE: readme.md ================================================ # ![icon](media/image/icon/icon48.png) ROTA: Bend Gravity Made with [Godot Engine](https://github.com/godotengine/godot) 3.6.1 / Gravity Bending Puzzle Platformer Available for Linux, Windows, Mac, Web & Android ! Play on Steam [store.steampowered.com/app/1993830/ROTA/](https://store.steampowered.com/app/1993830/ROTA/) Play on itch.io [harmonymonroe.itch.io/rota](https://harmonymonroe.itch.io/rota) (: ![main_capsule](media/image/assets/main_capsule.png) ## License The [Unlicense](https://unlicense.org/). See [LICENSE](LICENSE) for more information. This license does not include the addons/ folder. ## Steam Using [Godot-Steam-API](https://github.com/samsface/godot-steam-api) by [samsface](https://github.com/samsface/)! (: ## Screenshots ![shot1](media/image/assets/screens/thumb/1.png) ![shot2](media/image/assets/screens/thumb/2.png) ![shot3](media/image/assets/screens/thumb/3.png) ![shot4](media/image/assets/screens/thumb/4.png) ![shot5](media/image/assets/screens/thumb/5.png) ![shot6](media/image/assets/screens/thumb/6.png) ![shot7](media/image/assets/screens/thumb/7.png) ![shot8](media/image/assets/screens/thumb/8.png) ![shot9](media/image/assets/screens/thumb/9.png) ![shot10](media/image/assets/screens/thumb/10.png) ![shot11](media/image/assets/screens/thumb/11.png) ================================================ FILE: src/actor/Box.gd ================================================ tool extends KinematicBody2D class_name Box onready var collision_shape : CollisionShape2D = $CollisionShape2D onready var push_areas : Array = $PushAreas.get_children() onready var area_respawn := $RespawnArea onready var area := $Area2D onready var collision_sprite : CollisionShape2D = $Area2D/CollisionSprite onready var sprite : Node2D = $Sprites onready var box_sprite : Sprite = $Sprites/Box onready var audio_move := $Audio/Move onready var audio_land := $Audio/Land onready var audio_fallout := $Audio/Fallout onready var audio_respawn := $Audio/Respawn export var dir := 0 setget set_dir var dir_last := 0 var can_push := true export var can_spin := true setget set_can_spin var tex_push = preload("res://media/image/box/box_push.png") var tex_both = preload("res://media/image/box/box_both.png") var tile := 100.0 var move_from := Vector2.ZERO var turn_from := 0.0 var turn_to := 0.0 var start_dir := 0 var start_pos := Vector2.ZERO var is_floor := false var last_floor := false var is_respawn := false var is_push := false var push_x := -1 var is_hold := false var is_turn := false var pickup_angle := 12.0 onready var push_ease := EaseMover.new(0.2) onready var turn_ease := EaseMover.new(0.2) onready var respawn_ease := EaseMover.new(1.0) onready var pickup_ease := EaseMover.new(0.2) var velocity := 0.0 export var start_velocity := 100.0 export var gravity := 200.0 var is_move := false func _enter_tree(): if Engine.editor_hint: return Shared.boxes.append(self) func _exit_tree(): if Engine.editor_hint: return Shared.boxes.erase(self) func _ready(): set_can_spin() if Engine.editor_hint: return turn_ease.clock = 99 # snap to grid global_position = (Vector2.ONE * tile / 2) + (global_position / tile).floor() * tile # vars for respawn start_dir = dir start_pos = global_position # check floor is_floor = test_tile(dir, 1) last_floor = is_floor func _physics_process(delta): if Engine.editor_hint: return if is_respawn: if respawn_ease.is_complete and area_respawn.get_overlapping_bodies().size() == 0: is_respawn = false collision_shape.set_deferred("disabled", false) area.set_deferred("monitorable", true) audio_respawn.play() sprite.modulate.a = 1.0 elif is_push or is_turn or is_move or pickup_ease.is_less: pass # start movement elif !is_move: # get floor last_floor = is_floor is_floor = test_tile() if !is_floor and !is_hold: var move_count := 0 while !test_tile() and !Shared.is_outside_boundary(global_position): move_tile() move_count += 1 is_move = true velocity = start_velocity Audio.play(audio_move, 0.7, 1.3) func _process(delta): if is_respawn: sprite.scale = Vector2.ONE * respawn_ease.count(delta) elif is_push: var s = push_ease.count(delta) # lerp sprite and update collision_sprite sprite.position = move_from.linear_interpolate(Vector2.ZERO, s) collision_sprite.position = sprite.position sprite.rotation = lerp_angle(turn_to + deg2rad(12 * -push_x), turn_to, abs(0.5 - s) * 2.0) if push_ease.is_complete: is_push = false # turn clock elif is_turn: var s = turn_ease.count(delta) sprite.rotation = lerp_angle(turn_from, turn_to, s) sprite.scale = Vector2.ONE * lerp(0.8, 1.0, s) if turn_ease.is_complete: is_turn = false # pickup clock elif pickup_ease.is_less: sprite.scale = Vector2.ONE * lerp(1.1, 1.0, pickup_ease.count(delta)) # movement elif is_move: velocity += gravity * delta sprite.position = sprite.position.move_toward(Vector2.ZERO, velocity * delta) collision_sprite.position = sprite.position if sprite.position == Vector2.ZERO: is_move = false if Shared.is_outside_boundary(global_position): fall_out() else: Audio.play(audio_land, 0.7, 1.3) func set_dir(arg := dir): dir_last = dir dir = posmod(arg, 4) if is_instance_valid(sprite): turn_from = sprite.rotation turn_to = deg2rad(dir * 90) if turn_ease: turn_ease.clock = 0.0 is_turn = true if Engine.editor_hint: $Sprites.rotation = turn_to func set_can_spin(arg := can_spin): can_spin = arg if box_sprite: box_sprite.texture = tex_both if can_spin else tex_push func rot(vec : Vector2, _dir := dir) -> Vector2: _dir = posmod(_dir, 4) match _dir: 1: return Vector2(-vec.y, vec.x) 2: return Vector2(-vec.x, -vec.y) 3: return Vector2(vec.y, -vec.x) return vec func shrink_shape(shrink := true): collision_shape.shape.extents = Vector2(49, 49) if shrink else Vector2(50, 50) func test_tile(check_dir := dir, distance := 1) -> bool: var vec = rot(Vector2.DOWN * distance * tile, check_dir) shrink_shape() var result = test_move(transform, vec) shrink_shape(false) if !result: var check_pos = global_position + vec check_pos = Vector2(stepify(check_pos.x, 50), stepify(check_pos.y, 50)) for i in Shared.boxes: if i != self: if check_pos == i.global_position: result = true break return result func move_tile(move_dir := dir, distance := 1): var last_pos = global_position global_position += rot(Vector2.DOWN * distance * tile, move_dir) global_position = Vector2(stepify(global_position.x, 50), stepify(global_position.y, 50)) #print(name, ": ", last_pos, " - ", position) # move sprite sprite.position -= global_position - last_pos move_from = sprite.position # start push at first box in line func start_push(push_dir := 0, _push_x := 1): push_dir = posmod(push_dir, 4) var result = false var b = push_areas[posmod(push_dir + 2, 4)].get_overlapping_bodies() if b.size() > 0 and b[0].is_floor and b[0].dir == push_dir: result = b[0].start_push(push_dir, _push_x) else: result = push(push_dir, _push_x) return result # move boxes in line func push(push_dir := 0, _push_x := 1): push_dir = posmod(push_dir, 4) push_x = _push_x var result = false var b = push_areas[push_dir].get_overlapping_bodies() if b.size() == 0: if !test_tile(push_dir, 1): result = true elif b[0] != self and (b[0].is_floor or b[0].is_hold) and b[0].push(push_dir, _push_x): result = true if result: move_tile(push_dir, 1) is_push = true push_ease.clock = 0.0 return result func fall_out(): print(name, " outside boundary") if !is_respawn: is_respawn = true set_dir(start_dir) global_position = start_pos sprite.position = Vector2.ZERO turn_ease.clock = 0.0 respawn_ease.clock = 0.0 collision_shape.set_deferred("disabled", true) area.set_deferred("monitorable", false) sprite.scale = Vector2.ZERO sprite.modulate.a = 0.5 if !Wipe.is_wipe: audio_fallout.play() func pickup(): pickup_ease.clock = 0.0 ================================================ FILE: src/actor/Box.tscn ================================================ [gd_scene load_steps=11 format=2] [ext_resource path="res://media/image/box/box_both.png" type="Texture" id=1] [ext_resource path="res://src/actor/Box.gd" type="Script" id=2] [ext_resource path="res://media/audio/sfx/coin1.wav" type="AudioStream" id=3] [ext_resource path="res://media/audio/sfx/hit10.wav" type="AudioStream" id=4] [ext_resource path="res://media/audio/sfx/oneup2.wav" type="AudioStream" id=5] [ext_resource path="res://media/audio/sfx/fallout1.wav" type="AudioStream" id=6] [sub_resource type="RectangleShape2D" id=2] extents = Vector2( 50, 50 ) [sub_resource type="RectangleShape2D" id=4] extents = Vector2( 50, 50 ) [sub_resource type="RectangleShape2D" id=6] extents = Vector2( 30, 30 ) [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 49.9, 49.9 ) [node name="Box" type="KinematicBody2D" groups=["box"]] process_priority = -5 position = Vector2( 50, 50 ) z_index = 30 z_as_relative = false collision_layer = 5 script = ExtResource( 2 ) start_velocity = 750.0 gravity = 2000.0 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] visible = false shape = SubResource( 2 ) [node name="Sprites" type="Node2D" parent="."] [node name="Box" type="Sprite" parent="Sprites"] scale = Vector2( 0.25, 0.25 ) texture = ExtResource( 1 ) [node name="Area2D" type="Area2D" parent="."] visible = false collision_layer = 4 collision_mask = 0 [node name="CollisionBody" type="CollisionShape2D" parent="Area2D"] shape = SubResource( 4 ) [node name="CollisionSprite" type="CollisionShape2D" parent="Area2D"] shape = SubResource( 4 ) [node name="PushAreas" type="Node2D" parent="."] visible = false [node name="0" type="Area2D" parent="PushAreas"] position = Vector2( 0, 100 ) collision_layer = 0 collision_mask = 4 [node name="CollisionShape2D" type="CollisionShape2D" parent="PushAreas/0"] shape = SubResource( 6 ) [node name="1" type="Area2D" parent="PushAreas"] position = Vector2( -100, 0 ) collision_layer = 0 collision_mask = 4 [node name="CollisionShape2D" type="CollisionShape2D" parent="PushAreas/1"] shape = SubResource( 6 ) [node name="2" type="Area2D" parent="PushAreas"] position = Vector2( 0, -100 ) collision_layer = 0 collision_mask = 4 [node name="CollisionShape2D" type="CollisionShape2D" parent="PushAreas/2"] shape = SubResource( 6 ) [node name="3" type="Area2D" parent="PushAreas"] position = Vector2( 100, 0 ) collision_layer = 0 collision_mask = 4 [node name="CollisionShape2D" type="CollisionShape2D" parent="PushAreas/3"] shape = SubResource( 6 ) [node name="RespawnArea" type="Area2D" parent="."] visible = false collision_layer = 0 collision_mask = 6 [node name="CollisionShape2D" type="CollisionShape2D" parent="RespawnArea"] shape = SubResource( 1 ) [node name="Audio" type="Node2D" parent="."] [node name="Move" type="AudioStreamPlayer2D" parent="Audio"] stream = ExtResource( 3 ) bus = "SFX" [node name="Land" type="AudioStreamPlayer2D" parent="Audio"] stream = ExtResource( 4 ) volume_db = 4.0 bus = "SFX" [node name="Respawn" type="AudioStreamPlayer2D" parent="Audio"] stream = ExtResource( 5 ) volume_db = 4.0 bus = "SFX" [node name="Fallout" type="AudioStreamPlayer2D" parent="Audio"] stream = ExtResource( 6 ) volume_db = 4.0 bus = "SFX" ================================================ FILE: src/actor/Chat.gd ================================================ tool extends Node2D onready var bubble := $Bubble onready var label_back := $Bubble/Center/Back onready var label := $Bubble/Center/Label onready var rect := $Bubble/Rect onready var triangle := $Bubble/Triangle onready var shadows := $Bubble/Shadow.get_children() export (String, MULTILINE) var dialog := "I do adore the flowers" setget set_dialog export var is_editor := false export var is_show := false setget set_is_show export var panel_grow := Vector2(20, 17) export var show_range := Vector2(-10, -45) var panel_min := Vector2(35, 55) var cursor := 0 var read_clock := 0.0 var read_time := 2.0 var last_s := -1.0 var easy := EaseMover.new(0.05) var show_easy := EaseMover.new() var panel_easy := EaseMover.new(0.3) var arrow var key_up := false var key_hold := false func _ready(): Shared.connect("scene_before", self, "scene") func scene(): is_show = false show_easy.clock = 0.0 func _process(delta): if Engine.editor_hint and !is_editor: return var s = show_easy.count(delta, is_show) if s != last_s: modulate.a = s if bubble: bubble.position.y = lerp(show_range.x, show_range.y, s) last_s = s if rect and triangle: if panel_easy.clock < panel_easy.time: rect.size = panel_easy.move(delta, is_show) shadows[1].size = rect.size triangle.position.y = rect.size.y triangle.scale = Vector2.ONE * s shadows[0].transform = triangle.transform # input key_up = Input.is_action_pressed("ui_up") if key_hold: key_hold = key_up if is_show and s > 0.5: if cursor < dialog.length() and label_back and label: label_back.modulate.a = easy.count(delta) if easy.is_complete: easy.clock = 0 cursor += 1 label.visible_characters = cursor label_back.visible_characters = cursor + 1 label_back.modulate.a = 0 if !Engine.editor_hint and (cursor - 1 == 0 or dialog[cursor - 1] == " "): Audio.play("menu_cancel", 0.75, 1.5) elif (is_instance_valid(arrow) and !arrow.is_active and !Engine.editor_hint) or (key_up and !key_hold): is_show = false elif read_clock < read_time: read_clock += delta if read_clock >= read_time: is_show = false if !is_show: if is_instance_valid(arrow): arrow.is_locked = false func set_dialog(arg := dialog): dialog = arg cursor = 0 read_clock = 0.0 easy.clock = 0.0 if label and label_back and rect: label.text = dialog label.visible_characters = 0 label_back.text = dialog label_back.visible_characters = 1 label_back.modulate.a = 0 panel_easy.clock = 0.0 panel_easy.from = rect.size panel_easy.to = (label.get_font("font").get_string_size(dialog) / 2.0) + panel_grow panel_easy.to.x = max(panel_easy.to.x, panel_min.y) func set_is_show(arg := is_show): is_show = arg if is_show and Engine.editor_hint: set_dialog() func open(_dialog := dialog, _arrow := arrow, _gt := global_transform): if is_show: return is_show = true key_hold = true arrow = _arrow if arrow: arrow.is_locked = true if rect: rect.size = Vector2.ONE * panel_min.x global_transform = _gt self.dialog = _dialog Audio.play("menu_joy", 0.5, 0.8) ================================================ FILE: src/actor/Chat.tscn ================================================ [gd_scene load_steps=6 format=2] [ext_resource path="res://media/image/white_square_100x.png" type="Texture" id=1] [ext_resource path="res://src/actor/Chat.gd" type="Script" id=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=3] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=4] [sub_resource type="DynamicFont" id=3] size = 40 outline_color = Color( 0, 0, 0, 1 ) use_filter = true font_data = ExtResource( 3 ) [node name="Chat" type="Node2D"] modulate = Color( 1, 1, 1, 0 ) z_index = 71 z_as_relative = false script = ExtResource( 2 ) dialog = "aaa" is_editor = true [node name="Bubble" type="Node2D" parent="."] position = Vector2( 0, -10 ) [node name="Shadow" type="Node2D" parent="Bubble"] modulate = Color( 0, 0, 0, 0.501961 ) position = Vector2( 7, 10 ) [node name="Triangle" type="Polygon2D" parent="Bubble/Shadow"] position = Vector2( 0, 37.5 ) scale = Vector2( 1e-05, 1e-05 ) polygon = PoolVector2Array( -21.5, 0, 21.5, 0, 0, 40 ) [node name="Rect" type="Polygon2D" parent="Bubble/Shadow"] texture = ExtResource( 1 ) texture_offset = Vector2( 0, 50 ) texture_scale = Vector2( 0, 1 ) polygon = PoolVector2Array( 59, 0, 58.0598, 8.34453, 55.2863, 16.2706, 50.8187, 23.3809, 44.8809, 29.3187, 37.7706, 33.7863, 29.8445, 36.5598, 21.5, 37.5, -21.5, 37.5, -29.8445, 36.5598, -37.7706, 33.7863, -44.8809, 29.3187, -50.8187, 23.3809, -55.2863, 16.2706, -58.0598, 8.34453, -59, -3.27835e-06, -58.0598, -8.34453, -55.2863, -16.2706, -50.8187, -23.3809, -44.8809, -29.3187, -37.7706, -33.7863, -29.8445, -36.5598, -21.5, -37.5, 21.5, -37.5, 29.8445, -36.5598, 37.7706, -33.7863, 44.8809, -29.3187, 50.8187, -23.3809, 55.2863, -16.2706, 58.0598, -8.34453 ) script = ExtResource( 4 ) is_baked = false size = Vector2( 59, 37.5 ) radius = Plane( -2, -1, -1, -1 ) [node name="Triangle" type="Polygon2D" parent="Bubble"] position = Vector2( 0, 37.5 ) scale = Vector2( 1e-05, 1e-05 ) polygon = PoolVector2Array( -21.5, 0, 21.5, 0, 0, 40 ) [node name="Rect" type="Polygon2D" parent="Bubble"] texture = ExtResource( 1 ) texture_offset = Vector2( 0, 50 ) texture_scale = Vector2( 0, 1 ) polygon = PoolVector2Array( 59, 0, 58.0598, 8.34453, 55.2863, 16.2706, 50.8187, 23.3809, 44.8809, 29.3187, 37.7706, 33.7863, 29.8445, 36.5598, 21.5, 37.5, -21.5, 37.5, -29.8445, 36.5598, -37.7706, 33.7863, -44.8809, 29.3187, -50.8187, 23.3809, -55.2863, 16.2706, -58.0598, 8.34453, -59, -3.27835e-06, -58.0598, -8.34453, -55.2863, -16.2706, -50.8187, -23.3809, -44.8809, -29.3187, -37.7706, -33.7863, -29.8445, -36.5598, -21.5, -37.5, 21.5, -37.5, 29.8445, -36.5598, 37.7706, -33.7863, 44.8809, -29.3187, 50.8187, -23.3809, 55.2863, -16.2706, 58.0598, -8.34453 ) script = ExtResource( 4 ) is_baked = false size = Vector2( 59, 37.5 ) radius = Plane( -2, -1, -1, -1 ) [node name="Center" type="CenterContainer" parent="Bubble"] margin_right = 40.0 margin_bottom = 40.0 use_top_left = true [node name="Back" type="Label" parent="Bubble/Center"] modulate = Color( 1, 1, 1, 0 ) margin_left = -39.0 margin_top = -21.0 margin_right = 39.0 margin_bottom = 20.0 custom_colors/font_color = Color( 0, 0, 0, 1 ) custom_fonts/font = SubResource( 3 ) text = "aaa" align = 1 valign = 2 percent_visible = 1.33333 [node name="Label" type="Label" parent="Bubble/Center"] margin_left = -39.0 margin_top = -21.0 margin_right = 39.0 margin_bottom = 20.0 custom_colors/font_color = Color( 0, 0, 0, 1 ) custom_fonts/font = SubResource( 3 ) text = "aaa" align = 1 valign = 2 ================================================ FILE: src/actor/ChatTree.gd ================================================ extends Node onready var expression := Expression.new() export (String, MULTILINE) var expression_string := "false" export (String) var erase := "" export (int, "Off", "On", "Swap", "Push Front", "Push Back") var is_lines := 0 export (Array, String, MULTILINE) var lines := ["Lovely weather!"] export var is_greeting := false export var greeting := -1 export var is_queue := false export (String, MULTILINE) var queue_write := "" func _ready(): var error = expression.parse(expression_string, []) if error != OK: print(expression.get_error_text()) return var result = expression.execute([], Shared) if !expression.has_execute_failed() and result: var p = get_parent() if erase != "": var e = erase.split_floats(",", false) e.sort() e.invert() for i in e: p.lines.remove(int(i)) if is_lines > 0: if is_lines == 1: p.lines = lines elif is_lines == 2: for i in lines.size(): p.lines[i] = lines[i] elif is_lines > 2: p.lines = (lines + p.lines) if is_lines == 3 else (p.lines + lines) if is_greeting: p.greeting = greeting if is_queue: p.queue_write = queue_write ================================================ FILE: src/actor/Clock.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=1] [node name="Clock" type="Polygon2D"] self_modulate = Color( 1, 0.984314, 0, 1 ) antialiased = true polygon = PoolVector2Array( 25, 0, 24.1481, 6.47048, 21.6506, 12.5, 17.6777, 17.6777, 12.5, 21.6506, 6.47048, 24.1481, -1.09278e-06, 25, -6.47048, 24.1481, -12.5, 21.6506, -17.6777, 17.6777, -21.6506, 12.5, -24.1481, 6.47048, -25, -2.18557e-06, -24.1481, -6.47048, -21.6506, -12.5, -17.6777, -17.6777, -12.5, -21.6506, -6.47047, -24.1481, 2.98122e-07, -25, 6.47048, -24.1481, 12.5, -21.6506, 17.6777, -17.6777, 21.6506, -12.5, 24.1481, -6.47047 ) script = ExtResource( 1 ) radius = 25.0 points = 24 [node name="Fill" type="Polygon2D" parent="."] modulate = Color( 1, 0.8, 0, 1 ) polygon = PoolVector2Array( 20, 0, 18.4776, 7.65367, 14.1421, 14.1421, 7.65367, 18.4776, -8.74228e-07, 20, -7.65367, 18.4776, -14.1421, 14.1421, -18.4776, 7.65367, -20, -1.74846e-06, -18.4776, -7.65367, -14.1421, -14.1421, -7.65367, -18.4776, 2.38498e-07, -20, 7.65367, -18.4776, 14.1421, -14.1421, 18.4776, -7.65367 ) script = ExtResource( 1 ) radius = 20.0 [node name="Hand" type="Line2D" parent="."] points = PoolVector2Array( 0, -11, 0, 0, 7, 7 ) width = 6.5 default_color = Color( 1, 0.984314, 0, 1 ) joint_mode = 2 begin_cap_mode = 2 end_cap_mode = 2 round_precision = 5 ================================================ FILE: src/actor/Fade.gd ================================================ extends CanvasItem var fade = EaseMover.new() export var is_demo := false func _ready(): visible = Shared.is_demo if is_demo else true fade.show = false func _process(delta): modulate.a = fade.count(delta) func _on_Area2D_area_entered(area): fade.show = true func _on_Area2D_area_exited(area): fade.show = false ================================================ FILE: src/actor/Gem.tscn ================================================ [gd_scene format=2] [node name="Gem" type="Polygon2D"] color = Color( 1, 1, 0, 1 ) polygon = PoolVector2Array( -30, 0, 0, -30, 30, 0, 0, 30 ) [node name="Fill" type="Polygon2D" parent="."] color = Color( 1, 0.8, 0, 1 ) polygon = PoolVector2Array( -20, 0, 0, -20, 20, 0, 0, 20 ) ================================================ FILE: src/actor/Goal.gd ================================================ extends Node2D onready var sprites = $Sprites onready var area = $Area2D var shine_easy := EaseMover.new() var fade_easy := EaseMover.new() var turn_x := 1.0 var turn_easy := EaseMover.new(0.3) var target = null var is_collected := false func _enter_tree(): if Engine.editor_hint: return Shared.goal = self if !Shared.is_reload: Cutscene.is_show_goal = true CheatCode.connect("activate", self, "cheat_code") func _ready(): Cam.connect("turning", self, "set_rotation") if Shared.goals.has(Shared.map_name): var c = 0.0 sprites.modulate = Color(c,c,c, 0.2) func _process(delta): if shine_easy.clock > 0: sprites.scale = Vector2.ONE * lerp(1.0, 2.0, shine_easy.count(delta, false)) if fade_easy.clock > 0: var s = fade_easy.count(delta, false) sprites.scale = Vector2.ONE * lerp(0.0, 1.0, s) sprites.rotation = lerp(TAU * 0.3 * turn_x, 0.0, s) # follow target if is_instance_valid(target): var p = target.global_position if target == Shared.player: var s = turn_easy.count(delta, target.dir_x < 0, false) p += Vector2(lerp(-1.0, 1.0, ease(s, -0.7)) * 50, -30).rotated(target.sprites.rotation) global_position = global_position.linear_interpolate(p, 6.0 * delta) func cheat_code(cheat): if "konami" in cheat: is_collected = true Shared.map_clock = 99 Audio.play("gem_collect") func shine(is_audio := true): shine_easy.clock = shine_easy.time if is_audio: Audio.play("gem_show") ================================================ FILE: src/actor/Goal.tscn ================================================ [gd_scene load_steps=4 format=2] [ext_resource path="res://src/actor/Goal.gd" type="Script" id=1] [ext_resource path="res://src/actor/Gem.tscn" type="PackedScene" id=2] [sub_resource type="RectangleShape2D" id=4] extents = Vector2( 35, 35 ) [node name="Goal" type="Node2D" groups=["goal"]] process_priority = -1 z_index = 90 z_as_relative = false script = ExtResource( 1 ) __meta__ = { "_edit_horizontal_guides_": [ ] } [node name="Sprites" type="Node2D" parent="."] [node name="Gem" parent="Sprites" instance=ExtResource( 2 )] scale = Vector2( 1.2, 1.2 ) [node name="Area2D" type="Area2D" parent="."] visible = false collision_layer = 2048 collision_mask = 2 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] shape = SubResource( 4 ) ================================================ FILE: src/actor/Guide.gd ================================================ extends Node2D onready var sprite := $Sprite var box : Box = null var is_deploy := false var last_deploy := false var easy := EaseMover.new() var _delta := 1.0 / 60.0 func _ready(): visible = false Shared.connect("scene_changed", self, "set_box") func _process(delta): _delta = delta place() func set_box(b = null): is_deploy = is_instance_valid(b) if is_deploy: box = b place() func place(): easy.count(_delta, is_deploy) visible = easy.clock > 0 if visible: sprite.material.set_shader_param("scale_x", easy.smooth()) sprite.material.set_shader_param("scale_y", easy.smooth()) if is_instance_valid(box): rotation = box.sprite.rotation global_position = box.sprite.global_position scale.x = box.sprite.scale.x ================================================ FILE: src/actor/Hair.gd ================================================ tool extends Node2D export var width := 50.0 setget set_width export var end_scale := 0.75 setget set_end export var length = 25.0 export var sitting_angle = 15.0 export var point_count := 3 setget set_points export var vertices := 16 setget set_vertices export var gravity = 190.0 export var is_scale_x := true export var is_stiff := false export var dir_x := 1 export var offset_angle := 0.0 var gons = [] var last_pos := Vector2.ZERO var hair_end := Vector2.ZERO func _ready(): u() if Engine.editor_hint: return if !is_stiff: is_stiff = abs(sitting_angle) > 90.0 func u(): for i in get_children(): i.queue_free() gons = [] for p in point_count: var s = width * 0.5 * lerp(1.0, end_scale, p / float(point_count - 1)) var a = [] for i in vertices: a.append(s * Vector2.RIGHT.rotated(TAU * (float(i) / vertices))) var g = Polygon2D.new() g.polygon = a add_child(g) gons.append(g) func _process(delta): # angle var a = deg2rad((sitting_angle * dir_x)) + offset_angle if is_stiff: a += global_rotation - offset_angle # movement + gravity hair_end = to_local(last_pos + (Vector2.DOWN.rotated(a) * gravity * delta)) # keep length if hair_end.length() > length: hair_end = hair_end.normalized() * length last_pos = to_global(hair_end) # set points for i in gons.size(): gons[i].position = hair_end.normalized() * hair_end.length() * (float(i) / (gons.size() - 1)) func set_points(arg := point_count): point_count = max(2, arg) u() func set_vertices(arg := vertices): vertices = max(3, arg) u() func set_width(arg := width): width = arg u() func set_end(arg := end_scale): end_scale = arg u() func scale_x(arg): if is_scale_x: dir_x = arg func turn_angle(arg): offset_angle = arg ================================================ FILE: src/actor/Hair.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.gd" type="Script" id=1] [node name="Hair" type="Node2D"] script = ExtResource( 1 ) sitting_angle = 45.0 ================================================ FILE: src/actor/Mirror.gd ================================================ extends Node2D onready var arrow := $Arrow export var dir := 0 export var door_path : NodePath onready var door_node := get_node_or_null(door_path) onready var p = Shared.player onready var back_rect : Rect2 = $Back.get_rect() onready var rig := $Back/Center/Rig onready var rig_ease := EaseMover.new() onready var stage := $Stage onready var sky_mat : ShaderMaterial = $Back.material onready var sky_pal : Array = Clouds.sky_pal.duplicate() var from := [] var to := [] onready var lights := get_tree().get_nodes_in_group("light") var dist := Vector2.ZERO export var offset := Vector2(100, 0) var dir_x := 1.0 export var hide_distance := 50.0 func _ready(): MenuMakeover.connect("opened", self, "closed") arrow.dir = posmod(dir, 4) rig.global_rotation = 0 rig_ease.clock = rig_ease.time yield(get_tree().create_timer(3.0), "timeout") create_rig() func _process(delta): var s = rig_ease.count(delta) var x_scale := get_viewport_rect().size.x / 1280 var c_dist := abs(to_local(Cam.global_position).x / 75.0) rig.modulate.a = s stage.modulate.a = 1.0 - s stage.scale = Vector2.ONE * lerp((3.42 * x_scale) + c_dist, 1.0, s) for i in lights: i.self_modulate.a = s # sky palette var sps = sky_pal.size() var sky_step = posmod(Clouds.sky_step + (sps / 2.0) , sps) var sf = Clouds.step_frac for i in 2: sky_mat.set_shader_param("col" + str(i + 1), sky_pal[sky_step - 2 - i].linear_interpolate(sky_pal[sky_step - 1 - i], sf)) # animate for i in from.size(): if is_instance_valid(to[i]) and is_instance_valid(from[i]): to[i].transform = from[i].transform dist = to_local(p.global_position) rig.position = dist + (offset * dir_x) rig.visible = back_rect.grow(hide_distance).has_point(rig.position) if abs(dist.x) > 200: dir_x = -sign(dist.x) func create_rig(): for i in rig.get_children(): i.queue_free() var s = p.sprites.duplicate(DUPLICATE_USE_INSTANCING) s.get_node("SpriteArea").queue_free() s.modulate.a = 1 rig.add_child(s) from = [] to = [] var list = [p.sprites, p.spr_root, p.spr_body, p.spr_hand_l, p.spr_hand_r, p.spr_eyes] for i in Shared.get_all_children(p.hair_front): if i.is_in_group("mirror"): print("mirror: ", i) list.append(i) for i in list: var path = p.sprites.get_path_to(i) if s.has_node(path): from.append(i) to.append(s.get_node(path)) for n in ["Back", "Front"]: for i in Shared.get_all_children(s.get_node("Root/Body/Hair" + n)): for c in ["scale_x", "turn_angle"]: if i.has_method(c) and !p.is_connected(c, i, c): p.connect(c, i, c) func _on_Arrow_open(): MenuMakeover.is_open = true arrow.is_locked = true rig_ease.show = false func closed(arg := false): if arg: return arrow.is_locked = false rig_ease.show = true create_rig() if is_instance_valid(Shared.door_in): Shared.door_in.modulate.a = 1.0 Shared.door_in.arrow.is_locked = false ================================================ FILE: src/actor/Mirror.tscn ================================================ [gd_scene load_steps=6 format=2] [ext_resource path="res://src/actor/Mirror.gd" type="Script" id=1] [ext_resource path="res://src/actor/door/Arrow.tscn" type="PackedScene" id=2] [ext_resource path="res://src/shader/sky_screen.gdshader" type="Shader" id=3] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=4] [sub_resource type="ShaderMaterial" id=5] shader = ExtResource( 3 ) shader_param/col1 = Color( 0, 0.380392, 1, 1 ) shader_param/col2 = Color( 0, 0.921569, 1, 1 ) [node name="Mirror" type="Node2D"] process_priority = 10 z_index = -5 script = ExtResource( 1 ) offset = Vector2( 70, 0 ) hide_distance = 100.0 [node name="Arrow" parent="." instance=ExtResource( 2 )] col_size = Vector2( 75, 100 ) image_pos = Vector2( 0, -170 ) [node name="Back" type="ColorRect" parent="."] material = SubResource( 5 ) margin_left = -75.0 margin_top = -100.0 margin_right = 75.0 margin_bottom = 100.0 rect_clip_content = true [node name="Center" type="Node2D" parent="Back"] position = Vector2( 75, 100 ) [node name="Rig" type="Node2D" parent="Back/Center"] light_mask = 4 z_index = 2 [node name="Border" type="Line2D" parent="."] position = Vector2( -75, -100 ) points = PoolVector2Array( -7, 200, -7, -7, 157, -7, 157, 200 ) width = 15.0 default_color = Color( 1, 1, 0, 1 ) joint_mode = 2 begin_cap_mode = 2 end_cap_mode = 2 [node name="Stage" type="Polygon2D" parent="."] modulate = Color( 1, 1, 1, 0 ) light_mask = 0 material = SubResource( 5 ) z_index = 45 z_as_relative = false polygon = PoolVector2Array( 75, 100, -75, 100, -75, -100, 75, -100 ) script = ExtResource( 4 ) size = Vector2( 75, 100 ) [connection signal="open" from="Arrow" to="." method="_on_Arrow_open"] ================================================ FILE: src/actor/Player.gd ================================================ tool extends KinematicBody2D class_name Player onready var areas : Node2D = $Areas onready var hit_area : Area2D = $Areas/HitArea onready var collider_size : Vector2 = $CollisionShape2D.shape.extents onready var anim : AnimationPlayer = $AnimationPlayer onready var sprites := $Sprites onready var spr_root := $Sprites/Root onready var spr_body := $Sprites/Root/Body onready var spr_eyes := $Sprites/Root/Body/Eyes var spr_easy := EaseMover.new() signal show_up var door_exit var difference := Vector2.ZERO var last_pos := Vector2.ZERO var target_pos := Vector2.ZERO onready var spr_hands_parent := $Sprites/Hands onready var spr_hand_l := $Sprites/Hands/Left onready var spr_hand_r := $Sprites/Hands/Right onready var spr_hands := [spr_hand_l, spr_hand_r] onready var audio_walk := $Audio/Walk onready var audio_land := $Audio/Land export var dir := 0 setget set_dir onready var start_dir := dir onready var start_pos = global_position signal turn signal turn_angle signal turn_cam export var is_input := false var joy := Vector2.ZERO var joy_last := Vector2.ZERO var joy_q := Vector2.ZERO var joy_buffer := 0.1 var hold_x := 0.0 var hold_y := 0.0 var btn_jump := false var btnp_jump := false var hold_jump := 0.0 var jump_buffer := 0.3 var btn_push := false var btnp_push := false var is_move := true var is_walk := true var is_floor := false var velocity := Vector2.ZERO var dir_x := 1 setget set_dir_x signal scale_x signal scale_y var idle_dir := "idle" export var idle_anim := "idle" export var is_idle_flip := false var walk_speed := 350.0 var floor_accel := 12.0 var air_accel := 7.0 var is_jump := false var has_jumped := true var jump_height := 240.0 setget set_jump_height var jump_time := 0.6 setget set_jump_time var jump_minimum := 0.12 var jump_speed := 0.0 var jump_gravity := 0.0 var fall_gravity := 0.0 var jump_clock := 0.0 var air_clock := 0.0 var is_dead := false var dead_clock := 0.0 var dead_time := 0.7 var turn_ease := EaseMover.new(0.2) var turn_from := 0.0 var turn_to := 0.0 var is_hold := false var is_release := false var box var push_ease := EaseMover.new(0.2) var push_from := Vector2.ZERO var push_dir := 1 var hold_clock := 0.0 var hold_cooldown := 0.2 var is_goal := false var goal var goal_step := 0 var goal_times := [0.2, 0.3, 0.5] var goal_easy := EaseMover.new() var hand_positions := [Vector2.ZERO, Vector2.ZERO] var goal_start := Vector2.ZERO var goal_grab := Vector2.ZERO var squish_from := Vector2.ONE var squish_ease := EaseMover.new(0.5) var is_unpause := false var unpause_tick := 0 var release_clock := 0.0 var release_time := 0.2 onready var colors := {"hair": [$Sprites/Root/Body/HairBack, $Sprites/Root/Body/HairFront,], "skin": [$Sprites/Root/Body/Head, $Sprites/Hands], "fit": [$Sprites/Root/Body/Fit], "eye": [$Sprites/Root/Body/Eyes]} export(Array, Color) var palette := [] export var dye := {"hair": 0, "skin": 0, "fit": 0, "eye": 0} setget set_dye onready var hair_back := $Sprites/Root/Body/HairBack onready var hair_front := $Sprites/Root/Body/HairFront export (Array, String, FILE) var hair_backs := [] export (Array, String, FILE) var hair_fronts := [] export var hairstyle_back := 0 setget set_hair_back export var hairstyle_front := 0 setget set_hair_front onready var hat_node := $Sprites/Root/Body/Hat export (Array, String, FILE) var hats := [] export var hat := 0 setget set_hat var blink_ease := EaseMover.new(0.2) var blink_clock := 0.0 var blink_time := 10.0 var blink_range := Vector2(1, 20) export var is_npc := false export (Array, String, MULTILINE) var lines := ["Hello (=", "Lovely weather!", "I do adore the flowers"] export var greeting := -1 export var greeting_wait := Vector2(30, 45) var greeting_clock := 0.0 export (String, MULTILINE) var queue_write := "" export var chat_offset := Vector2(0, -110) setget set_chat_offset onready var arrow := get_node_or_null("Arrow") export var ready_z_index := 50 export var ready_dir_x := 0 var line := -1 var queue := [] var snowball_scene : PackedScene = preload("res://src/actor/Snowball.tscn") var snowballs = [] func _enter_tree(): if Engine.editor_hint: return if get_parent() == Shared: Shared.player = self get_tree().connect("physics_frame", self, "physics_frame") MenuPause.connect("opened", self, "pause") Shared.connect("scene_changed", self, "scene") Wipe.connect("start", self, "wipe_start") Cutscene.connect("playing", self, "cutscene_playing") func _ready(): set_hair_back() set_hair_front() set_dye() set_hat() set_chat_offset() if Engine.editor_hint: return solve_jump() if arrow: connect("turn", arrow, "set_dir") arrow.connect("open", self, "arrow_open") # create idle animiations facing left var l = anim.get_animation("idle").duplicate() for i in 3: l.bezier_track_set_key_value(2, i, -l.bezier_track_get_key_value(2, i)) anim.add_animation("idle_left", l) if !anim.has_animation(idle_anim): idle_anim = "idle" anim_flip(idle_anim) # randomize() # anim.play(idle_anim, 0.0) # anim.seek(2.0, true) if is_npc: z_index = min(ready_z_index, 45) spr_easy.clock = spr_easy.time var coy = chat_offset.y if hat == 1: coy = min(coy, -160) elif hairstyle_back in [6, 7] or hairstyle_front in [7]: coy = min(coy, -130) elif hairstyle_front == 10: coy = min(coy, -115) if idle_anim == "bench": coy -= 17 elif idle_anim == "tree_behind": coy = min(coy, -160) self.chat_offset.y = coy else: if arrow: arrow.is_locked = true arrow.monitoring = false arrow.monitorable = false func wipe_start(arg): if !is_npc: door_exit = null spr_easy.show = arg if arg: spr_easy.clock = 0.0 func scene(): door_exit = Shared.door_in if is_instance_valid(Shared.door_in) else null # move npc if is_npc: global_position = start_pos self.dir = start_dir # go to last door elif door_exit: global_position = door_exit.global_position self.dir = door_exit.dir #print(name, " pos: ", global_position, " dir: ", dir) velocity = Vector2.ZERO joy_last = Vector2.ZERO joy = Vector2.ZERO is_floor = false is_jump = true has_jumped = true air_clock = 0.0 is_dead = false sprites.position = Vector2.ZERO sprites.rotation = turn_to emit_signal("turn_angle", turn_to) turn_ease.clock = turn_ease.time # face left or right randomize() self.dir_x = sign(ready_dir_x) if ready_dir_x != 0 else 1 if randf() > 0.5 else -1 # snap to floor var v = Vector2.DOWN * 150 if test_move(transform, rot(v)): move(v) anim.play(idle_dir, 0.0) anim.seek(rand_range(0, anim.current_animation_length), true) else: anim.play("jump") func _physics_process(delta): if Engine.editor_hint: return if is_dead or (spr_easy.is_less or !spr_easy.show): return # input release_clock = max(release_clock - delta, 0) if is_input and !MenuPause.is_paused and !Cutscene.is_playing and !Wipe.is_wipe: joy_last = joy joy.x = round(Input.get_axis("left", "right")) joy.y = round(Input.get_axis("up", "down")) btnp_jump = Input.is_action_just_pressed("jump") btnp_push = Input.is_action_just_pressed("grab") # avoid jumping or grabbing when exiting menu if is_unpause: unpause_tick += 1 if unpause_tick > 1 and (btnp_jump or btnp_push): is_unpause = false if !is_unpause: btn_jump = Input.is_action_pressed("jump") and release_clock == 0 btn_push = Input.is_action_pressed("grab") # holding input hold_x = (hold_x + delta) if joy.x == joy_last.x and joy.x != 0 else 0.0 hold_y = (hold_y + delta) if joy.y == joy_last.y and joy.y != 0 else 0.0 hold_jump = (hold_jump + delta) if btn_jump else 0.0 # pickup goal if is_goal and is_instance_valid(goal): if goal_step == 0: move(goal_start.linear_interpolate(goal_grab, goal_easy.smooth()) - global_position, 0) # next step if goal_easy.is_complete: goal_easy.clock = 0.0 goal_step += 1 if goal_step < goal_times.size(): goal_easy.time = goal_times[goal_step] if goal_step == 2: goal.shine(false) # finished elif goal_step > 2: is_goal = false is_floor = false has_jumped = true release_anim() goal.z_index = 0 goal.target = self goal.turn_easy.clock = goal.turn_easy.time * 0.5 # holding box elif is_hold: if !is_release: # joy queue if joy.x != 0 and hold_x < joy_buffer: joy_q.x = joy.x hold_x = 1 elif joy.y != 0 and hold_y < joy_buffer: joy_q.y = joy.y hold_y = 1 # during push if push_ease.is_less: var smooth = push_ease.count(delta) var hold_pos = box.global_position + rot(Vector2(88 * -dir_x, 50 - collider_size.y)) var move_to = push_from.linear_interpolate(hold_pos, smooth) var diff = move_to - global_position move(diff, 0) # during box turn elif box.is_turn: pass # not pushing or turning else: # check floor is_floor = test_move(transform, rot(Vector2.DOWN * 50)) if !is_floor: walk_around(push_dir == 1) is_release = true # check distance elif global_position.distance_to(box.global_position) > 125: is_release = true # release button elif !btn_push: is_release = true # push / pull elif box.can_push and joy_q.x != 0: if dir_x == joy_q.x or !box.test_tile(dir - joy_q.x, 2): if box.start_push(dir - joy_q.x, joy_q.x): push_from = global_position push_ease.clock = 0 push_dir = joy_q.x Audio.play("player_push", 0.7, 1.3) #print("push successful") #else: # print("push failed") # turn box elif box.can_spin and joy_q.y != 0: box.dir += joy_q.y * -dir_x Audio.play("player_turn", 0.9, 1.3) joy_q = Vector2.ZERO # release box if is_release: box_release() # not holding else: # done turning and in control if turn_ease.is_complete: # dir_x if joy.x != 0: self.dir_x = joy.x # walking if is_walk: var target = joy.x * walk_speed var weight = floor_accel if is_floor else air_accel velocity.x = lerp(velocity.x, target, weight * delta) # on the floor if is_floor: # animation anim.playback_speed = 1.0 if joy.x == 0 else dir_x anim.play(idle_dir if joy.x == 0 else "walk") # hold cooldown if hold_clock < hold_cooldown: hold_clock = min(hold_clock + delta, hold_cooldown) # start jump if btn_jump and hold_jump < jump_buffer: is_floor = false anim.play("jump") if dir_x > 0: anim.advance(anim.current_animation_length / 2.0) is_jump = true has_jumped = true velocity.y = jump_speed jump_clock = 0.0 Audio.play("player_jump", 0.9, 1.1) squish_from = Vector2(0.7, 1.3) squish_ease.clock = 0.0 # start hold elif btn_push and hold_clock == hold_cooldown: var hb = hit_area.get_overlapping_bodies() if hb.size() > 0 and hb[0].is_in_group("box") and hb[0].is_floor: box = hb[0] print(name, " holding: ", box.name) is_hold = true is_release = false is_move = false velocity = Vector2.ZERO add_collision_exception_with(box) box.add_collision_exception_with(self) box.is_hold = true box.pickup() # dir_x double check var check_x = sprites.to_local(box.global_position).x > 0 self.dir_x = 1 if check_x else -1 push_from = global_position push_ease.clock = 0 push_dir = dir_x Shared.guide.set_box(box) # move box to first child var p = box.get_parent() p.move_child(box, 0) anim.stop() Audio.play("player_grab", 0.7, 1.3) # in the air else: # during jump if is_jump: jump_clock += delta if btn_jump: # keep jump gravity if bonk head on ceiling if velocity.y >= -1.0 and jump_clock > (jump_time / 2.0): is_jump = false #print("jump start: ", jump_start, " / jump end: ", position.y + velocity.y, " / distance: ", position.y - jump_start) # short jump elif jump_clock > jump_minimum: is_jump = false velocity.y *= 0.8 # not jumping else: # spin if !has_jumped: walk_around(test_move(transform, rot(Vector2(-25, 25)))) has_jumped = true is_floor = false # movement if is_move: # gravity velocity.y += (jump_gravity if is_jump else fall_gravity) * delta # move move(velocity * delta) # check boundary if !Wipe.is_wipe and Shared.is_outside_boundary(global_position): print(name, " outside boundary") die() # air clock if is_floor: if air_clock > 0.4: Audio.play(audio_land, 0.7, 1.1) squish_from = Vector2(1.3, 0.7) squish_ease.clock = 0.0 air_clock = 0.0 else: air_clock += delta if is_npc: if greeting_clock > 0: greeting_clock = max(0, greeting_clock - delta) func physics_frame(): last_pos = target_pos target_pos = global_position difference = last_pos - target_pos func _process(delta): if Engine.editor_hint: return # squash squish and stretch sprites.scale = squish_from.linear_interpolate(Vector2.ONE, squish_ease.count(delta)) # blink anim if blink_clock < blink_time: blink_clock += delta else: var be = blink_ease.count(delta) spr_eyes.scale.y = lerp(1.0, 0.1, be) if be == 1.0: blink_ease.show = false elif be == 0.0: blink_ease.show = true blink_clock = 0.0 blink_time = rand_range(blink_range.x, blink_range.y) # death animation if is_dead: sprites.position += rot(velocity) * delta sprites.rotate(deg2rad(240) * -dir_x * delta) velocity.y += fall_gravity * delta if dead_clock < dead_time: dead_clock += delta if dead_clock >= dead_time: Cutscene.is_playing = false Shared.reset() return # grow and shrink in and out of scene if spr_easy.is_less or !spr_easy.show: var sec = spr_easy.count(delta, spr_easy.show and !Wipe.is_intro) var dp = to_local(door_exit.global_position) if is_instance_valid(door_exit) else rot(Vector2(0, -25)) sprites.position = dp.linear_interpolate(Vector2.ZERO, sec) for i in [spr_hands_parent, spr_root]: i.rotation = lerp(TAU * 0.15 * -dir_x, 0.0, sec) i.scale = Vector2.ONE * lerp(0.0, 1.0, sec) if sec < 1.0: return else: emit_signal("show_up") # interpolate sprites.position = difference.linear_interpolate(Vector2.ZERO, Engine.get_physics_interpolation_fraction()) if Shared.is_interpolate else Vector2.ZERO if is_goal and is_instance_valid(goal): var s = goal_easy.count(delta) var offset = Vector2(20, 20) * goal.sprites.scale var p1 = goal.to_global(offset * Vector2(-1, 1)) var p2 = goal.to_global(offset) spr_hand_l.global_position = p1 spr_hand_r.global_position = p2 match goal_step: 0: spr_hand_l.global_position = hand_positions[0].linear_interpolate(p1, s) spr_hand_r.global_position = hand_positions[1].linear_interpolate(p2, s) 1: goal.global_position = goal_grab.linear_interpolate(global_position + rot(Vector2(0, -100)), s) return # hold animation if is_hold: # during push if push_ease.is_less: # wobble body var s = abs(0.5 - push_ease.smooth()) * 2.0 spr_root.rotation = lerp_angle(deg2rad(12 * -push_dir), 0, s) # body var s = 6.0 * delta spr_body.rotation = lerp_angle(spr_body.rotation, 0, s) spr_body.position.y = lerp(spr_body.position.y, 0, s) # hands var box_angle = turn_to var smooth = 12.0 * delta if box.is_turn or box.is_push: box_angle += box.sprite.rotation - (box.turn_from if box.is_turn else box.turn_to) smooth = 1.0 var box_edge = box.sprite.global_position - Vector2(50 * dir_x, 0).rotated(box_angle) # move hands for i in 2: var offset = Vector2(0, 20 * (-1 if sign(dir_x + 1) == i else 1)) var goto = box_edge + offset.rotated(box_angle) spr_hands[i].global_position = spr_hands[i].global_position.linear_interpolate(goto, smooth) else: if turn_ease.is_less: var s = turn_ease.count(delta) var r = lerp_angle(turn_from, turn_to, s) sprites.rotation = r emit_signal("turn_angle", r) ### Set Get func set_dir(arg := dir): dir = posmod(arg, 4) turn_to = deg2rad(dir * 90) turn_ease.clock = 0 turn_from = sprites.rotation if sprites else 0 if Engine.editor_hint: $Sprites.rotation = turn_to if areas: areas.rotation = turn_to emit_signal("turn", dir) emit_signal("turn_cam", turn_to) func set_dir_x(arg := dir_x): dir_x = -1.0 if arg < 0 else 1.0 areas.scale.x = dir_x var l = idle_anim + "_left" idle_dir = idle_anim if (dir_x < 0 if is_idle_flip else dir_x > 0) else (l if anim.has_animation(l) else "idle") emit_signal("scale_x", dir_x) func set_jump_height(arg): jump_height = arg solve_jump() func set_jump_time(arg): jump_time = arg solve_jump() # Sebastian Lague's formula func solve_jump(): jump_gravity = (2 * jump_height) / pow(jump_time, 2) jump_speed = -jump_gravity * jump_time fall_gravity = jump_gravity * 2.0 func set_dye(arg := dye): dye = arg for i in dye.keys(): dye[i] = posmod(dye[i], palette.size()) if colors and colors.has(i): for y in colors[i]: y.modulate = palette[dye[i]] func set_hair_back(arg := hairstyle_back): hairstyle_back = posmod(arg, hair_backs.size()) hairdo(hair_back, hair_backs, hairstyle_back) func set_hair_front(arg := hairstyle_front): hairstyle_front = posmod(arg, hair_fronts.size()) hairdo(hair_front, hair_fronts, hairstyle_front) func hairdo(node, array, style): if node: for i in node.get_children(): i.queue_free() if style > 0: var h = load(array[style]).instance() node.add_child(h) for i in h.get_children(): for c in ["scale_x", "turn_angle"]: if i.has_method(c) and !is_connected(c, i, c): connect(c, i, c) match c: "scale_x": i.scale_x(dir_x) "turn_angle": i.turn_angle(sprites.rotation) func set_hat(arg := hat): hat = posmod(arg, hats.size()) hairdo(hat_node, hats, hat) func set_chat_offset(arg := chat_offset): chat_offset = arg if arrow: arrow.image_pos = chat_offset ### Movement func rot(vec : Vector2, _dir := dir) -> Vector2: _dir = posmod(_dir, 4) match _dir: 1: return Vector2(-vec.y, vec.x) 2: return Vector2(-vec.x, -vec.y) 3: return Vector2(vec.y, -vec.x) return vec func move(_vel := Vector2.ZERO, _dir := dir): # Move X var move_x = rot(_vel * Vector2(1, 0), _dir) var is_x = test_move(transform, move_x) move_and_collide(move_x) # Wall if is_x: velocity.x = 0.0 # Move Y var move_y = rot(_vel * Vector2(0, 1), _dir) var is_y = test_move(transform, move_y) move_and_collide(move_y) if is_y: velocity.y = 0.0 # Floor is_floor = is_y and _vel.y > 0 if is_floor: has_jumped = false func walk_around(right := false): move_and_collide(rot(Vector2.DOWN)) self.dir += 1 if right else 3 velocity.x = (walk_speed if right else -walk_speed) * 0.72 Audio.play("player_around", 0.9, 1.3) ### Area func _on_BodyArea_area_entered(area): var p = area.get_parent() # pickup goal if !is_goal and p.is_in_group("goal") and !p.is_collected: area.set_deferred("monitorable", false) goal = p goal.is_collected = true goal.z_index = z_index + 1 goal_grab = goal.global_position goal_start = global_position goal_step = 0 goal_easy.time = goal_times[0] is_goal = true has_jumped = true is_floor = false velocity = Vector2.ZERO anim.stop() for i in spr_hands.size(): hand_positions[i] = spr_hands[i].global_position Audio.play("gem_collect") func _on_BodyArea_body_entered(body): if Wipe.is_wipe: return # hit spike if body.is_in_group("spike"): print("hit spike") die() func die(): if is_dead: return if is_npc: scene() return is_dead = true dead_clock = 0.0 Cutscene.is_playing = true for i in [MenuRemap, MenuOptions, MenuPause]: if i.is_open: i.is_open = false velocity = Vector2(-350 * dir_x, -800) if is_hold: box_release() anim.play("jump") Audio.play("player_spike") Audio.play("player_fallout") func box_release(): is_hold = false is_release = false is_move = true has_jumped = true hold_clock = 0.0 spr_root.rotation = 0 remove_collision_exception_with(box) box.remove_collision_exception_with(self) box.is_hold = false box.pickup() Shared.guide.set_box(null) release_anim() Audio.play("player_grab", 0.7, 1.3) release_clock = release_time func release_anim(): # set animation keys var rel = anim.get_animation("release") rel.bezier_track_set_key_value(0, 0, spr_body.position.x) rel.bezier_track_set_key_value(1, 0, spr_body.position.y) rel.bezier_track_set_key_value(2, 0, spr_body.rotation_degrees) var diff = spr_hand_l.position - spr_hand_r.position var is_left = (diff.x < 0) if abs(diff.x) > 1 else (diff.y > 0) == (dir_x > 0) var lh = 3 if is_left else 5 var rh = 5 if is_left else 3 rel.bezier_track_set_key_value(lh, 0, spr_hand_l.position.x) rel.bezier_track_set_key_value(lh + 1, 0, spr_hand_l.position.y) rel.bezier_track_set_key_value(rh, 0, spr_hand_r.position.x) rel.bezier_track_set_key_value(rh + 1, 0, spr_hand_r.position.y) anim.play("release") func anim_flip(_name := ""): if anim.has_animation(_name) and !anim.has_animation(_name + "_left"): var a = anim.get_animation(_name).duplicate() for t in a.get_track_count(): var p = str(a.track_get_path(t)) if "Left" in p: p = p.replace("Left", "Right") elif "Right" in p: p = p.replace("Right", "Left") a.track_set_path(t, p) if "position:x" in p or "rotation_degrees" in p: var c = a.track_get_key_count(t) #print(name , " ", p, " ", c) for k in c: a.bezier_track_set_key_value(t, k, -a.bezier_track_get_key_value(t, k)) anim.add_animation(_name + "_left", a) func throw_snowball(): var s = null for i in snowballs: if i.is_out: s = i break if !is_instance_valid(s): s = snowball_scene.instance() var p = get_parent() p.add_child(s) s.owner = p snowballs.append(s) s.throw((spr_hand_l if dir_x > 0 else spr_hand_r).global_position, s.throw_vel * Vector2(dir_x, 1), dir) #print(name, " throw snowball ", s) func enter_door(arg): door_exit = arg anim.stop() clear_input() if is_instance_valid(goal): goal.target = door_exit func pause(arg := false): if Shared.player == self: clear_input() if !arg: is_unpause = true unpause_tick = 0 func clear_input(): btn_jump = false btnp_jump = false btn_push = false btnp_push = false joy = Vector2.ZERO func cutscene_playing(arg := false): if arg and Shared.player == self: clear_input() func footstep_sound(): if !audio_walk.playing and !audio_land.playing: Audio.play(audio_walk, 1.5, 3.0) func arrow_open(): if queue.size() == 0: queue = range(lines.size()) queue.shuffle() queue.erase(line) greeting_clock = 0 if queue_write != "": var qw = Array(queue_write.split_floats(",", false)) for i in qw.size(): var b = int(qw.pop_back()) queue.erase(b) queue.push_front(b) if greeting_clock == 0 and line != greeting and greeting > -1 and greeting < lines.size(): queue.erase(greeting) queue.push_front(greeting) line = posmod(int(queue.pop_front()), lines.size()) Shared.chat.open(lines[line], arrow, Transform2D(dir * PI * 0.5, global_position + rot(chat_offset))) greeting_clock = rand_range(greeting_wait.x, greeting_wait.y) ================================================ FILE: src/actor/Player.tscn ================================================ [gd_scene load_steps=22 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://src/actor/Player.gd" type="Script" id=2] [ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=3] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=4] [ext_resource path="res://media/audio/sfx/player_land.wav" type="AudioStream" id=5] [ext_resource path="res://src/actor/door/Arrow.tscn" type="PackedScene" id=6] [sub_resource type="RectangleShape2D" id=2] extents = Vector2( 17, 17 ) [sub_resource type="RectangleShape2D" id=3] extents = Vector2( 40, 10 ) [sub_resource type="Animation" id=6] length = 0.001 tracks/0/type = "bezier" tracks/0/path = NodePath("Sprites/Root/Body:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( 0, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/1/type = "bezier" tracks/1/path = NodePath("Sprites/Root/Body:position:y") 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("Sprites/Root/Body:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "points": PoolRealArray( 0, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/3/type = "bezier" tracks/3/path = NodePath("Sprites/Hands/Left:position:x") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "points": PoolRealArray( -25, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/4/type = "bezier" tracks/4/path = NodePath("Sprites/Hands/Left:position:y") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "points": PoolRealArray( 5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/5/type = "bezier" tracks/5/path = NodePath("Sprites/Hands/Right:position:x") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "points": PoolRealArray( 25, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/6/type = "bezier" tracks/6/path = NodePath("Sprites/Hands/Right:position:y") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "points": PoolRealArray( 5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/7/type = "value" tracks/7/path = NodePath("Sprites: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": [ true ] } [sub_resource type="Animation" id=20] resource_name = "bench" loop = true tracks/0/type = "bezier" tracks/0/path = NodePath("Sprites/Root/Body:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( -6, -0.25, 0, 0.25, 0, 6, -0.25, 0, 0.25, 0, -6, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } tracks/1/type = "bezier" tracks/1/path = NodePath("Sprites/Root/Body:position:y") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "points": PoolRealArray( -17, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/2/type = "bezier" tracks/2/path = NodePath("Sprites/Root/Body:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "points": PoolRealArray( -10, -0.25, 0, 0.25, 0, 10, -0.25, 0, 0.25, 0, -10, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1.01 ) } tracks/3/type = "bezier" tracks/3/path = NodePath("Sprites/Hands/Left:position:x") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "points": PoolRealArray( -30, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/4/type = "bezier" tracks/4/path = NodePath("Sprites/Hands/Left:position:y") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "points": PoolRealArray( -10, -0.25, 0, 0.25, 0, -13, -0.25, 0, 0.25, 0, -10, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0.00999999, 0.5, 1 ) } tracks/5/type = "bezier" tracks/5/path = NodePath("Sprites/Hands/Right:position:x") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "points": PoolRealArray( 30, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/6/type = "bezier" tracks/6/path = NodePath("Sprites/Hands/Right:position:y") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "points": PoolRealArray( -13, -0.25, 0, 0.25, 0, -10, -0.25, 0, 0.25, 0, -13, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } [sub_resource type="Animation" id=17] resource_name = "handstand" loop = true tracks/0/type = "bezier" tracks/0/path = NodePath("Sprites/Root/Body:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( 0, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/1/type = "bezier" tracks/1/path = NodePath("Sprites/Root/Body:position:y") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "points": PoolRealArray( -45, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/2/type = "bezier" tracks/2/path = NodePath("Sprites/Root/Body:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "points": PoolRealArray( 175, -0.25, 0, 0.25, 0, 185, -0.25, 0, 0.25, 0, 175, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } tracks/3/type = "bezier" tracks/3/path = NodePath("Sprites/Hands/Left:position:x") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "points": PoolRealArray( -25, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/4/type = "bezier" tracks/4/path = NodePath("Sprites/Hands/Left:position:y") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "points": PoolRealArray( 10, -0.25, 0, 0.25, 0, 14, -0.25, 0, 0.25, 0, 10, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } tracks/5/type = "bezier" tracks/5/path = NodePath("Sprites/Hands/Right:position:x") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "points": PoolRealArray( 25, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/6/type = "bezier" tracks/6/path = NodePath("Sprites/Hands/Right:position:y") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "points": PoolRealArray( 14, -0.25, 0, 0.25, 0, 10, -0.25, 0, 0.25, 0, 14, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } [sub_resource type="Animation" id=5] resource_name = "idle" loop = true tracks/0/type = "bezier" tracks/0/path = NodePath("Sprites/Root/Body:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( 0, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/1/type = "bezier" tracks/1/path = NodePath("Sprites/Root/Body:position:y") 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("Sprites/Root/Body:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "points": PoolRealArray( -5, -0.25, 0, 0.25, 0, 5, -0.25, 0, 0.25, 0, -5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } tracks/3/type = "bezier" tracks/3/path = NodePath("Sprites/Hands/Left:position:x") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "points": PoolRealArray( -35, -0.25, 0, 0.25, 0, -25, -0.25, 0, 0.25, 0, -35, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } tracks/4/type = "bezier" tracks/4/path = NodePath("Sprites/Hands/Left:position:y") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "points": PoolRealArray( 5, -0.25, 0, 0.25, 0, 5, -0.25, 0, 0.25, 0, 5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } tracks/5/type = "bezier" tracks/5/path = NodePath("Sprites/Hands/Right:position:x") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "points": PoolRealArray( 35, -0.25, 0, 0.25, 0, 25, -0.25, 0, 0.25, 0, 35, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } tracks/6/type = "bezier" tracks/6/path = NodePath("Sprites/Hands/Right:position:y") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "points": PoolRealArray( 5, -0.25, 0, 0.25, 0, 5, -0.25, 0, 0.25, 0, 5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } [sub_resource type="Animation" id=15] resource_name = "idle2" length = 1.2 loop = true step = 0.05 tracks/0/type = "bezier" tracks/0/path = NodePath("Sprites/Root/Body:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( -5, -0.25, 0, 0.25, 0, 5, -0.25, 0, 0.25, 0, -5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.6, 1.2 ) } tracks/1/type = "bezier" tracks/1/path = NodePath("Sprites/Root/Body:position:y") 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, -1, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, -1, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2 ) } tracks/2/type = "bezier" tracks/2/path = NodePath("Sprites/Root/Body:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "points": PoolRealArray( -5, -0.25, 0, 0.25, 0, 5, -0.25, 0, 0.25, 0, -5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.6, 1.2 ) } tracks/3/type = "bezier" tracks/3/path = NodePath("Sprites/Hands/Left:position:x") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "points": PoolRealArray( -30, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/4/type = "bezier" tracks/4/path = NodePath("Sprites/Hands/Left:position:y") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "points": PoolRealArray( 0, -0.25, 0, 0.25, 0, 5, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.6, 1.2 ) } tracks/5/type = "bezier" tracks/5/path = NodePath("Sprites/Hands/Right:position:x") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "points": PoolRealArray( 30, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/6/type = "bezier" tracks/6/path = NodePath("Sprites/Hands/Right:position:y") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "points": PoolRealArray( 5, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.6, 1.2 ) } [sub_resource type="Animation" id=18] resource_name = "invisible" loop = true tracks/0/type = "value" tracks/0/path = NodePath("Sprites: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="Animation" id=7] resource_name = "jump" loop = true tracks/0/type = "bezier" tracks/0/path = NodePath("Sprites/Root/Body:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( 0, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/1/type = "bezier" tracks/1/path = NodePath("Sprites/Root/Body:position:y") 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("Sprites/Root/Body:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "points": PoolRealArray( 3, -0.25, 0, 0.25, 0, -3, -0.25, 0, 0.25, 0, 3, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } tracks/3/type = "bezier" tracks/3/path = NodePath("Sprites/Hands/Left:position:x") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "points": PoolRealArray( -35, -0.25, 0, 0.25, 0, -35, -0.25, 0, 0.25, 0, -35, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } tracks/4/type = "bezier" tracks/4/path = NodePath("Sprites/Hands/Left:position:y") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "points": PoolRealArray( -5, -0.25, 0, 0.25, 0, -15, -0.25, 0, 0.25, 0, -5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } tracks/5/type = "bezier" tracks/5/path = NodePath("Sprites/Hands/Right:position:x") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "points": PoolRealArray( 35, -0.25, 0, 0.25, 0, 35, -0.25, 0, 0.25, 0, 35, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } tracks/6/type = "bezier" tracks/6/path = NodePath("Sprites/Hands/Right:position:y") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "points": PoolRealArray( -15, -0.25, 0, 0.25, 0, -5, -0.25, 0, 0.25, 0, -15, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } [sub_resource type="Animation" id=16] resource_name = "ponder" length = 2.0 loop = true tracks/0/type = "bezier" tracks/0/path = NodePath("Sprites/Root/Body:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( 0, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/1/type = "bezier" tracks/1/path = NodePath("Sprites/Root/Body:position:y") 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("Sprites/Root/Body:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "points": PoolRealArray( -3, -0.25, 0, 0.25, 0, 3, -0.25, 0, 0.25, 0, -3, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 1, 2 ) } tracks/3/type = "bezier" tracks/3/path = NodePath("Sprites/Hands/Left:position:x") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "points": PoolRealArray( -19, -0.25, 0, 0.25, 0, -22, -0.25, 0, 0.25, 0, -19, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 1, 2 ) } tracks/4/type = "bezier" tracks/4/path = NodePath("Sprites/Hands/Left:position:y") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "points": PoolRealArray( 5, -0.25, 0, 0.25, 0, 3, -0.25, 0, 0.25, 0, 5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 1, 2 ) } tracks/5/type = "bezier" tracks/5/path = NodePath("Sprites/Hands/Right:position:x") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "points": PoolRealArray( 20, -0.25, 0, 0.25, 0, 22, -0.25, 0, 0.25, 0, 20, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 1, 2 ) } tracks/6/type = "bezier" tracks/6/path = NodePath("Sprites/Hands/Right:position:y") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "points": PoolRealArray( -10, -0.25, 0, 0.25, 0, -8, -0.25, 0, 0.25, 0, -10, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 1, 2 ) } [sub_resource type="Animation" id=9] resource_name = "release" length = 0.001 tracks/0/type = "bezier" tracks/0/path = NodePath("Sprites/Root/Body:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( 0, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/1/type = "bezier" tracks/1/path = NodePath("Sprites/Root/Body:position:y") 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("Sprites/Root/Body:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "points": PoolRealArray( 0, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/3/type = "bezier" tracks/3/path = NodePath("Sprites/Hands/Left:position:x") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "points": PoolRealArray( -25, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/4/type = "bezier" tracks/4/path = NodePath("Sprites/Hands/Left:position:y") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "points": PoolRealArray( 5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/5/type = "bezier" tracks/5/path = NodePath("Sprites/Hands/Right:position:x") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "points": PoolRealArray( 25, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/6/type = "bezier" tracks/6/path = NodePath("Sprites/Hands/Right:position:y") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "points": PoolRealArray( 5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } [sub_resource type="Animation" id=19] resource_name = "snowball" length = 3.3 loop = true tracks/0/type = "bezier" tracks/0/path = NodePath("Sprites/Root/Body:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( 0, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/1/type = "bezier" tracks/1/path = NodePath("Sprites/Root/Body:position:y") 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("Sprites/Root/Body:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "points": PoolRealArray( -5, -0.25, 0, 0.25, 0, 5, -0.25, 0, 0.25, 0, -5, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 2.7, 3.3 ) } tracks/3/type = "bezier" tracks/3/path = NodePath("Sprites/Hands/Left:position:x") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "points": PoolRealArray( 31, -0.25, 0, 0.25, 0, 31, -0.25, 0, 0.25, 0, 31, -0.25, 0, 0.25, 0, 31, -0.25, 0, 0.25, 0, 31, -0.25, 0, 0.25, 0, -32, -0.25, 0, 0.25, 0, 50, -0.25, 0, 0.25, 0, 31, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 2.3, 2.7, 3.3 ) } tracks/4/type = "bezier" tracks/4/path = NodePath("Sprites/Hands/Left:position:y") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "points": PoolRealArray( 7, -0.25, 0, 0.25, 0, 12, -0.25, 0, 0.25, 0, 7, -0.25, 0, 0.25, 0, 12, -0.25, 0, 0.25, 0, 7, -0.25, 0, 0.25, 0, 13, -0.25, 0, 0.25, 0, -21, -0.25, 0, 0.25, 0, 7, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 2.3, 2.7, 3.3 ) } tracks/5/type = "bezier" tracks/5/path = NodePath("Sprites/Hands/Right:position:x") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "points": PoolRealArray( 39, -0.25, 0, 0.25, 0, 39, -0.25, 0, 0.25, 0, 39, -0.25, 0, 0.25, 0, 39, -0.25, 0, 0.25, 0, 39, -0.25, 0, 0.25, 0, 50, -0.25, 0, 0.25, 0, 29, -0.25, 0, 0.25, 0, 39, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 2.3, 2.7, 3.3 ) } tracks/6/type = "bezier" tracks/6/path = NodePath("Sprites/Hands/Right:position:y") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "points": PoolRealArray( 12, -0.25, 0, 0.25, 0, 7, -0.25, 0, 0.25, 0, 12, -0.25, 0, 0.25, 0, 7, -0.25, 0, 0.25, 0, 12, -0.25, 0, 0.25, 0, -16, -0.25, 0, 0.25, 0, -6, -0.25, 0, 0.25, 0, 12, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 2.3, 2.7, 3.3 ) } tracks/7/type = "method" tracks/7/path = NodePath(".") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/imported = false tracks/7/enabled = true tracks/7/keys = { "times": PoolRealArray( 2.6 ), "transitions": PoolRealArray( 1 ), "values": [ { "args": [ ], "method": "throw_snowball" } ] } [sub_resource type="Animation" id=21] resource_name = "tree_behind" loop = true tracks/0/type = "bezier" tracks/0/path = NodePath("Sprites/Root/Body:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( 6, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/1/type = "bezier" tracks/1/path = NodePath("Sprites/Root/Body:position:y") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "points": PoolRealArray( -60, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/2/type = "bezier" tracks/2/path = NodePath("Sprites/Root/Body:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "points": PoolRealArray( 45, -0.25, 0, 0.25, 0, 35, -0.25, 0, 0.25, 0, 45, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0.0100001, 0.5, 1.02 ) } tracks/3/type = "bezier" tracks/3/path = NodePath("Sprites/Hands/Left:position:x") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "points": PoolRealArray( -20, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/4/type = "bezier" tracks/4/path = NodePath("Sprites/Hands/Left:position:y") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "points": PoolRealArray( -50, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/5/type = "bezier" tracks/5/path = NodePath("Sprites/Hands/Right:position:x") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "points": PoolRealArray( 20, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } tracks/6/type = "bezier" tracks/6/path = NodePath("Sprites/Hands/Right:position:y") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "points": PoolRealArray( -50, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0 ) } [sub_resource type="Animation" id=8] resource_name = "walk" loop = true step = 0.05 tracks/0/type = "bezier" tracks/0/path = NodePath("Sprites/Root/Body:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( 0, -0.2, 0, 0.2, 0, 0, -0.2, 0, 0.2, 0, 0, -0.2, 0, 0.2, 0, 0, -0.2, 0, 0.2, 0, 0, -0.2, 0, 0.2, 0 ), "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ) } tracks/1/type = "bezier" tracks/1/path = NodePath("Sprites/Root/Body:position:y") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "points": PoolRealArray( 0, -0.2, 0, 0.2, 0, -15, -0.2, 0, 0.2, 0, 0, -0.2, 0, 0.2, 0, -15, -0.2, 0, 0.2, 0, 0, -0.2, 0, 0.2, 0 ), "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ) } tracks/2/type = "bezier" tracks/2/path = NodePath("Sprites/Root/Body:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "points": PoolRealArray( 0, -0.05, 0, 0.05, 0, -12, -0.05, 0, 0.05, 0, 0, -0.05, 0, 0.05, 0, 12, -0.05, 0, 0.05, 0, 0, -0.05, 0, 0.05, 0 ), "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ) } tracks/3/type = "bezier" tracks/3/path = NodePath("Sprites/Hands/Left:position:x") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "points": PoolRealArray( -25, -0.1, 0, 0.1, 0, -30, -0.25, 0, 0.25, 0, -25, -0.1, 0, 0.1, 0, -25, -0.25, 0, 0.25, 0, -25, -0.1, 0, 0.1, 0 ), "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ) } tracks/4/type = "bezier" tracks/4/path = NodePath("Sprites/Hands/Left:position:y") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "points": PoolRealArray( 5, -0.1, 0, 0.1, 0, -10, -0.25, 0, 0.25, 0, 5, -0.1, 0, 0.1, 0, -25, -0.25, 0, 0.25, 0, 5, -0.1, 0, 0.1, 0 ), "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ) } tracks/5/type = "bezier" tracks/5/path = NodePath("Sprites/Hands/Right:position:x") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "points": PoolRealArray( 25, -0.1, 0, 0.1, 0, 25, -0.25, 0, 0.25, 0, 25, -0.1, 0, 0.1, 0, 30, -0.25, 0, 0.25, 0, 25, -0.1, 0, 0.1, 0 ), "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ) } tracks/6/type = "bezier" tracks/6/path = NodePath("Sprites/Hands/Right:position:y") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "points": PoolRealArray( 5, -0.1, 0, 0.1, 0, -25, -0.25, 0, 0.25, 0, 5, -0.1, 0, 0.1, 0, -10, -0.25, 0, 0.25, 0, 5, -0.1, 0, 0.1, 0 ), "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ) } tracks/7/type = "method" tracks/7/path = NodePath(".") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/imported = false tracks/7/enabled = true tracks/7/keys = { "times": PoolRealArray( 0, 0.5, 1 ), "transitions": PoolRealArray( 1, 1, 1 ), "values": [ { "args": [ ], "method": "footstep_sound" }, { "args": [ ], "method": "footstep_sound" }, { "args": [ ], "method": "footstep_sound" } ] } [sub_resource type="CapsuleShape2D" id=14] radius = 20.0 height = 30.0 [node name="Player" type="KinematicBody2D" groups=["player"]] z_index = 50 z_as_relative = false collision_layer = 2 script = ExtResource( 2 ) palette = [ Color( 1, 1, 1, 1 ), Color( 0.682353, 0.678431, 0.8, 1 ), Color( 0.4368, 0.4368, 0.52, 1 ), Color( 0, 0, 0, 1 ), Color( 0.478431, 0.25098, 0.423529, 1 ), Color( 0.741176, 0.407843, 0.505882, 1 ), Color( 1, 0.717647, 0.717647, 1 ), Color( 1, 0.866667, 0, 1 ), Color( 1, 0.686275, 0, 1 ), Color( 1, 0.509804, 0, 1 ), Color( 1, 0, 0, 1 ), Color( 1, 0.470588, 0.796078, 1 ), Color( 1, 0, 1, 1 ), Color( 0.623529, 0.219608, 1, 1 ), Color( 0, 0.486275, 1, 1 ), Color( 0, 1, 1, 1 ), Color( 0, 1, 0, 1 ), Color( 0.764706, 1, 0, 1 ), Color( 1, 1, 0, 1 ) ] dye = { "eye": 8, "fit": 16, "hair": 12, "skin": 5 } hair_backs = [ "", "res://src/actor/hair/back/Short.tscn", "res://src/actor/hair/back/Medium.tscn", "res://src/actor/hair/back/Long.tscn", "res://src/actor/hair/back/Braid.tscn", "res://src/actor/hair/back/Braids.tscn", "res://src/actor/hair/back/Afro.tscn" ] hair_fronts = [ "", "res://src/actor/hair/front/OneShort.tscn", "res://src/actor/hair/front/OneLong.tscn", "res://src/actor/hair/front/TwoShort.tscn", "res://src/actor/hair/front/TwoLong.tscn", "res://src/actor/hair/front/Bun.tscn", "res://src/actor/hair/front/Buns.tscn", "res://src/actor/hair/front/Mohawk.tscn", "res://src/actor/hair/front/FlatTop.tscn", "res://src/actor/hair/front/Bangs.tscn", "res://src/actor/hair/front/FlowerPetals.tscn" ] hairstyle_back = 5 hairstyle_front = 1 hats = [ "", "res://src/actor/hat/Candle.tscn", "res://src/actor/hat/FlowerPetals.tscn", "res://src/actor/hat/Carrot.tscn" ] [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource( 2 ) [node name="BodyArea" type="Area2D" parent="."] collision_layer = 3 collision_mask = 2184 [node name="CollisionShape2D" type="CollisionShape2D" parent="BodyArea"] shape = SubResource( 2 ) [node name="Areas" type="Node2D" parent="."] visible = false [node name="HitArea" type="Area2D" parent="Areas"] position = Vector2( 55, 0 ) collision_layer = 0 collision_mask = 4 [node name="CollisionShape2D" type="CollisionShape2D" parent="Areas/HitArea"] shape = SubResource( 3 ) [node name="Visible" type="VisibilityNotifier2D" parent="."] visible = false modulate = Color( 1, 0, 0, 1 ) rect = Rect2( -100, -100, 200, 200 ) script = ExtResource( 4 ) node_path = NodePath("../Sprites") [node name="Arrow" parent="." instance=ExtResource( 6 )] is_turn = true col_size = Vector2( 150, 50 ) col_pos = Vector2( 0, -33 ) image_pos = Vector2( 0, -110 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] autoplay = "RESET" playback_default_blend_time = 0.2 anims/RESET = SubResource( 6 ) anims/bench = SubResource( 20 ) anims/handstand = SubResource( 17 ) anims/idle = SubResource( 5 ) anims/idle2 = SubResource( 15 ) anims/invisible = SubResource( 18 ) anims/jump = SubResource( 7 ) anims/ponder = SubResource( 16 ) anims/release = SubResource( 9 ) anims/snowball = SubResource( 19 ) anims/tree_behind = SubResource( 21 ) anims/walk = SubResource( 8 ) next/jump = "jump" [node name="Sprites" type="Node2D" parent="."] [node name="Root" type="Node2D" parent="Sprites"] use_parent_material = true [node name="Body" type="Node2D" parent="Sprites/Root"] use_parent_material = true [node name="HairBack" type="Node2D" parent="Sprites/Root/Body"] modulate = Color( 1, 0, 1, 1 ) position = Vector2( 0, -25 ) [node name="Fit" type="Node2D" parent="Sprites/Root/Body"] modulate = Color( 0, 1, 0, 1 ) [node name="LegL" type="Polygon2D" parent="Sprites/Root/Body/Fit"] position = Vector2( -3, -14 ) rotation = 0.387463 polygon = PoolVector2Array( 5, 31, 4.33013, 33.5, 2.5, 35.3301, -2.18557e-07, 36, -2.5, 35.3301, -4.33013, 33.5, -5, 31, -5, 5, -4.33013, 2.5, -2.5, 0.669873, 5.96244e-08, 0, 2.5, 0.669873, 4.33013, 2.5, 5, 5 ) script = ExtResource( 1 ) size = Vector2( 5, 18 ) rect_offset = Vector2( 0, 18 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="LegR" type="Polygon2D" parent="Sprites/Root/Body/Fit"] position = Vector2( 3, -14 ) rotation = -0.387463 polygon = PoolVector2Array( 5, 31, 4.33013, 33.5, 2.5, 35.3301, -2.18557e-07, 36, -2.5, 35.3301, -4.33013, 33.5, -5, 31, -5, 5, -4.33013, 2.5, -2.5, 0.669873, 5.96244e-08, 0, 2.5, 0.669873, 4.33013, 2.5, 5, 5 ) script = ExtResource( 1 ) size = Vector2( 5, 18 ) rect_offset = Vector2( 0, 18 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="Torso" type="Polygon2D" parent="Sprites/Root/Body/Fit"] position = Vector2( 0, -14.5 ) polygon = PoolVector2Array( 7.6, 25, -7.6, 25, -5.55, 0, 5.55, 0 ) [node name="Head" type="Polygon2D" parent="Sprites/Root/Body"] modulate = Color( 0.741176, 0.407843, 0.505882, 1 ) position = Vector2( 0, -25 ) polygon = PoolVector2Array( 20, 0, 19.3185, 5.17638, 17.3205, 10, 14.1421, 14.1421, 10, 17.3205, 5.17638, 19.3185, -8.74228e-07, 20, -5.17638, 19.3185, -10, 17.3205, -14.1421, 14.1421, -17.3205, 10, -19.3185, 5.17638, -20, -1.74846e-06, -19.3185, -5.17638, -17.3205, -10, -14.1421, -14.1421, -10, -17.3205, -5.17638, -19.3185, 2.38498e-07, -20, 5.17638, -19.3185, 10, -17.3205, 14.1421, -14.1421, 17.3205, -10, 19.3185, -5.17638 ) script = ExtResource( 3 ) radius = 20.0 points = 24 [node name="Eyes" type="Node2D" parent="Sprites/Root/Body"] modulate = Color( 1, 0.686275, 0, 1 ) position = Vector2( 0, -25 ) [node name="Left" type="Polygon2D" parent="Sprites/Root/Body/Eyes"] position = Vector2( -10, 0 ) polygon = PoolVector2Array( 4, 3, 3.4641, 5, 2, 6.4641, -1.74846e-07, 7, -1.74846e-07, 7, -2, 6.4641, -3.4641, 5, -4, 3, -4, -3, -3.4641, -5, -2, -6.4641, 4.76995e-08, -7, 4.76995e-08, -7, 2, -6.4641, 3.4641, -5, 4, -3 ) script = ExtResource( 1 ) size = Vector2( 4, 7 ) radius = Plane( 4, -1, -1, -1 ) points = 4 [node name="Right" type="Polygon2D" parent="Sprites/Root/Body/Eyes"] position = Vector2( 10, 0 ) polygon = PoolVector2Array( 4, 3, 3.4641, 5, 2, 6.4641, -1.74846e-07, 7, -1.74846e-07, 7, -2, 6.4641, -3.4641, 5, -4, 3, -4, -3, -3.4641, -5, -2, -6.4641, 4.76995e-08, -7, 4.76995e-08, -7, 2, -6.4641, 3.4641, -5, 4, -3 ) script = ExtResource( 1 ) size = Vector2( 4, 7 ) radius = Plane( 4, -1, -1, -1 ) points = 4 [node name="HairFront" type="Node2D" parent="Sprites/Root/Body"] modulate = Color( 1, 0, 1, 1 ) position = Vector2( 0, -25 ) [node name="Hat" type="Node2D" parent="Sprites/Root/Body"] position = Vector2( 0, -25 ) [node name="Hands" type="Node2D" parent="Sprites"] modulate = Color( 0.741176, 0.407843, 0.505882, 1 ) z_index = 2 [node name="Left" type="Polygon2D" parent="Sprites/Hands"] use_parent_material = true position = Vector2( -25, 5 ) polygon = PoolVector2Array( 7.5, 0, 6.49519, 3.75, 3.75, 6.49519, -3.27835e-07, 7.5, -3.75, 6.49519, -6.49519, 3.75, -7.5, -6.55671e-07, -6.49519, -3.75, -3.75, -6.49519, 8.94366e-08, -7.5, 3.75, -6.49519, 6.49519, -3.75 ) script = ExtResource( 3 ) radius = 7.5 points = 12 [node name="Right" type="Polygon2D" parent="Sprites/Hands"] use_parent_material = true position = Vector2( 25, 5 ) polygon = PoolVector2Array( 7.5, 0, 6.49519, 3.75, 3.75, 6.49519, -3.27835e-07, 7.5, -3.75, 6.49519, -6.49519, 3.75, -7.5, -6.55671e-07, -6.49519, -3.75, -3.75, -6.49519, 8.94366e-08, -7.5, 3.75, -6.49519, 6.49519, -3.75 ) script = ExtResource( 3 ) radius = 7.5 points = 12 [node name="SpriteArea" type="Area2D" parent="Sprites"] visible = false collision_layer = 2 collision_mask = 0 [node name="CollisionShape2D" type="CollisionShape2D" parent="Sprites/SpriteArea"] position = Vector2( 0, -15 ) shape = SubResource( 14 ) [node name="Audio" type="Node2D" parent="."] [node name="Walk" type="AudioStreamPlayer2D" parent="Audio"] stream = ExtResource( 5 ) volume_db = -5.0 bus = "SFX" [node name="Land" type="AudioStreamPlayer2D" parent="Audio"] stream = ExtResource( 5 ) volume_db = 2.0 bus = "SFX" [connection signal="area_entered" from="BodyArea" to="." method="_on_BodyArea_area_entered"] [connection signal="body_entered" from="BodyArea" to="." method="_on_BodyArea_body_entered"] ================================================ FILE: src/actor/Snowball.gd ================================================ extends Area2D export var dir := 0 export var snow_gravity := Vector2(0, 120) export var throw_vel := Vector2(500, -50) export var velocity := Vector2.ZERO var term_vel := 1000 onready var polygon := $Polygon2D onready var audio_hit := $Audio/Hit onready var audio_throw := $Audio/Throw var is_hit := false var is_out := false var lifetime := 0.0 export var life_range := Vector2(0.1, 10.0) var throw_easy := EaseMover.new(0.1) var hit_easy := EaseMover.new() func _ready(): pass func _physics_process(delta): if is_out: return lifetime += delta if is_hit: polygon.scale = Vector2.ONE * (1.0 - hit_easy.count(delta)) if hit_easy.is_complete: is_out = true #print(name, " is out") else: velocity += snow_gravity * delta velocity.y = clamp(velocity.y, -term_vel, term_vel) global_position += rot(velocity * delta) polygon.scale = Vector2.ONE * lerp(0.5, 1.0, throw_easy.count(delta)) if lifetime > life_range.y: hit() func rot(vec : Vector2, _dir := dir) -> Vector2: _dir = posmod(_dir, 4) match _dir: 1: return Vector2(-vec.y, vec.x) 2: return Vector2(-vec.x, -vec.y) 3: return Vector2(vec.y, -vec.x) return vec func area_entered(area): if lifetime > life_range.x and (!area.get_collision_layer_bit(4) or area.get_collision_layer_bit(6)): hit() func body_entered(body): if lifetime > life_range.x: hit() func hit(): if !is_hit: is_hit = true hit_easy.clock = 0.0 Audio.play(audio_hit, 0.8, 1.2) func throw(from := Vector2.ZERO, vel := throw_vel, _dir := dir): global_position = from velocity = vel dir = _dir is_out = false is_hit = false throw_easy.clock = 0 lifetime = 0 polygon.scale = Vector2.ONE Audio.play(audio_throw, 0.8, 1.2) ================================================ FILE: src/actor/Snowball.tscn ================================================ [gd_scene load_steps=6 format=2] [ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=1] [ext_resource path="res://src/actor/Snowball.gd" type="Script" id=2] [ext_resource path="res://media/audio/sfx/piano_high.wav" type="AudioStream" id=3] [ext_resource path="res://media/audio/sfx/Randomize105.wav" type="AudioStream" id=4] [sub_resource type="CircleShape2D" id=1] [node name="Snowball" type="Area2D"] z_index = 10 z_as_relative = false collision_layer = 32 collision_mask = 71 script = ExtResource( 2 ) snow_gravity = Vector2( 0, 500 ) throw_vel = Vector2( 500, -200 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource( 1 ) [node name="Polygon2D" type="Polygon2D" parent="."] polygon = PoolVector2Array( 10, 0, 8.66025, 5, 5, 8.66025, -4.37114e-07, 10, -5, 8.66025, -8.66025, 5, -10, -8.74228e-07, -8.66025, -5, -5, -8.66025, 1.19249e-07, -10, 5, -8.66025, 8.66025, -5 ) script = ExtResource( 1 ) is_baked = false radius = 10.0 points = 12 [node name="Audio" type="Node2D" parent="."] [node name="Hit" type="AudioStreamPlayer2D" parent="Audio"] stream = ExtResource( 3 ) attenuation = 4.0 bus = "SFX" [node name="Throw" type="AudioStreamPlayer2D" parent="Audio"] stream = ExtResource( 4 ) attenuation = 4.0 bus = "SFX" [connection signal="area_entered" from="." to="." method="area_entered"] [connection signal="body_entered" from="." to="." method="body_entered"] ================================================ FILE: src/actor/Spike.gd ================================================ tool extends Node2D export var dir := 0 setget set_dir func set_dir(arg): dir = posmod(arg, 4) rotation_degrees = dir * 90 ================================================ FILE: src/actor/Spike.tscn ================================================ [gd_scene load_steps=7 format=2] [ext_resource path="res://media/image/spike/spike.png" type="Texture" id=2] [ext_resource path="res://src/actor/Spike.gd" type="Script" id=4] [ext_resource path="res://src/shader/offset_y.gdshader" type="Shader" id=5] [sub_resource type="Animation" id=1] resource_name = "Idle" loop = true tracks/0/type = "bezier" tracks/0/path = NodePath("Sprites/Left:material:shader_param/offset_y") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( 0.2, -0.3, 0, 0.3, 0, 0.345, -0.3, 0, 0.3, 0, 0.2, -0.3, 0, 0.3, 0 ), "times": PoolRealArray( 0, 0.5, 1 ) } tracks/1/type = "bezier" tracks/1/path = NodePath("Sprites/Right:material:shader_param/offset_y") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "points": PoolRealArray( 0.345, -0.3, 0, 0.3, 0, 0.2, -0.3, 0, 0.3, 0, 0.345, -0.3, 0, 0.3, 0 ), "times": PoolRealArray( 0.00999999, 0.5, 1.01 ) } [sub_resource type="ShaderMaterial" id=2] shader = ExtResource( 5 ) shader_param/offset_y = 0.2 shader_param/add_color = Color( 0.7, 0.7, 0.7, 1 ) [sub_resource type="ShaderMaterial" id=3] shader = ExtResource( 5 ) shader_param/offset_y = 0.345 shader_param/add_color = Color( 0.7, 0.7, 0.7, 1 ) [node name="Spike" type="Node2D" groups=["spike"]] script = ExtResource( 4 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] autoplay = "Idle" playback_speed = 0.7 anims/Idle = SubResource( 1 ) [node name="Sprites" type="Node2D" parent="."] position = Vector2( -50, -50 ) scale = Vector2( 0.25, 0.25 ) [node name="Left" type="Sprite" parent="Sprites"] material = SubResource( 2 ) texture = ExtResource( 2 ) centered = false [node name="Right" type="Sprite" parent="Sprites"] material = SubResource( 3 ) position = Vector2( 200, 0 ) texture = ExtResource( 2 ) centered = false ================================================ FILE: src/actor/door/Arrow.gd ================================================ tool extends Node2D class_name Arrow export var dir := 0 setget set_dir export var is_turn := false export var col_show := false setget set_col_show export var col_size := Vector2(40, 50) setget set_col_size export var col_pos := Vector2(0, 0) setget set_col_pos export var image_show := false setget set_image_show export var image_pos := Vector2(0, -95) setget set_image_pos onready var image := $Image onready var col_shape := $CollisionShape2D var player = null var body = null var is_active := false export var is_locked := false var arrow_easy := EaseMover.new(0.3) var open_easy := EaseMover.new() signal activate signal open func _ready(): set_col_show() set_col_size() set_col_pos() set_image_pos() if Engine.editor_hint: return self.image_show = false player = Shared.player func _physics_process(delta): if Engine.editor_hint: return # activate try_active() # image display arrow_easy.show = is_active and !is_locked and !MenuPause.is_paused and !Cutscene.is_playing and !Wipe.is_wipe and Shared.player.spr_easy.is_complete # open door open_easy.show = Input.is_action_pressed("up") and arrow_easy.show and player != null and !player.is_hold and player.dir == dir and player.is_floor func _process(delta): if Engine.editor_hint: return arrow_easy.count(delta) open_easy.count(delta) if open_easy.is_complete and !open_easy.is_last and Shared.arrow_track == self: emit_signal("open") func set_dir(arg := dir): dir = posmod(arg, 4) if is_turn: rotation_degrees = 90 * dir func set_col_show(arg := col_show): col_show = arg if col_shape: col_shape.visible = col_show func set_col_size(arg := col_size): col_size = arg if col_shape: col_shape.shape.extents = col_size func set_col_pos(arg := col_pos): col_pos = arg if col_shape: col_shape.position = col_pos func set_image_show(arg := image_show): image_show = arg if image: image.visible = image_show func set_image_pos(arg := image_pos): image_pos = arg if image: image.position = image_pos func _on_body_entered(_body): body = _body try_active() #print(get_parent().name, " entered ", body, " is_active ", is_active) func _on_body_exited(_body): #print(get_parent().name, " exited ", _body) body = null try_active() func try_active(): if (is_active and (body != player or player.dir != dir)) or (!is_active and body == player and player.dir == dir): is_active = !is_active emit_signal("activate") if is_active and Shared.arrow_track != self: Shared.arrow_track = self Shared.arrow.global_transform = image.global_transform ================================================ FILE: src/actor/door/Arrow.tscn ================================================ [gd_scene load_steps=5 format=2] [ext_resource path="res://src/actor/door/Arrow.gd" type="Script" id=1] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=2] [ext_resource path="res://media/image/UI/key_up_square.png" type="Texture" id=3] [sub_resource type="RectangleShape2D" id=1] resource_local_to_scene = true extents = Vector2( 40, 50 ) [node name="Arrow" type="Area2D" groups=["door"]] collision_layer = 1024 collision_mask = 2 script = ExtResource( 1 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] visible = false shape = SubResource( 1 ) [node name="Image" type="Node2D" parent="."] visible = false position = Vector2( 0, -95 ) [node name="Rect" type="Polygon2D" parent="Image"] scale = Vector2( 0.35, 0.35 ) texture = ExtResource( 3 ) texture_offset = Vector2( 100, 100 ) polygon = PoolVector2Array( 100, 40, 91.9615, 70, 70, 91.9615, 40, 100, -40, 100, -70, 91.9615, -91.9615, 70, -100, 40, -100, -40, -91.9615, -70, -70, -91.9615, -40, -100, 40, -100, 70, -91.9615, 91.9615, -70, 100, -40 ) script = ExtResource( 2 ) size = Vector2( 100, 100 ) radius = Plane( 60, -1, -1, -1 ) points = 4 [connection signal="body_entered" from="." to="." method="_on_body_entered"] [connection signal="body_exited" from="." to="." method="_on_body_exited"] ================================================ FILE: src/actor/door/Door.gd ================================================ tool extends Node2D class_name Door onready var arrow := $Arrow export var dir := 0 setget set_dir export(String, FILE) var scene_path := "" export var audio_range := Vector2(0.85, 1.15) export var colors : PoolColorArray = ["af00ff", "ff00e9", "fffb00", "ffcc00"] var open_easy := EaseMover.new() var open_close := 0 var is_cutscene := false var map_path := "" func _enter_tree(): if Engine.editor_hint: return Shared.doors.append(self) Shared.connect("scene_changed", self, "scene_changed") func _exit_tree(): if Engine.editor_hint: return Shared.doors.erase(self) func _ready(): if Engine.editor_hint: return # set is_locked if scene not found var f = File.new() arrow.is_locked = !f.file_exists(scene_path) f.close() arrow.connect("open", self, "enter_door") arrow.dir = dir map_path = scene_path.lstrip(Shared.worlds_path).rstrip(".tscn") if scene_path.begins_with(Shared.worlds_path) else "" func scene_changed(): if Shared.door_in == self: open_close = -1 open_easy.clock = open_easy.time func set_dir(arg): dir = posmod(arg, 4) rotation_degrees = dir * 90 func enter_door(): if is_cutscene: Cutscene.door_unlock.act(self) elif scene_path != "" and Shared.wipe_scene(scene_path, Shared.csfn, 0.5): Shared.player.enter_door(self) arrow.is_locked = true open_close = 1 open_easy.clock = 0.0 on_enter() Audio.play("door_open", audio_range.x, audio_range.y) Cam.start_zoom(0, false) func on_enter(): pass func on_close(): Audio.play("door_close", audio_range.x, audio_range.y) func open_count(delta): var w = Wipe.is_intro and open_close < 0 var s = open_easy.count(delta, open_close > 0 or w) if (open_easy.clock == 0.0 or open_easy.is_complete) and !w: open_close = 0 if open_easy.clock == 0.0: on_close() return s ================================================ FILE: src/actor/door/DoorBase.tscn ================================================ [gd_scene load_steps=3 format=2] [ext_resource path="res://src/actor/door/Door.gd" type="Script" id=1] [ext_resource path="res://src/actor/door/Arrow.tscn" type="PackedScene" id=2] [node name="Door" type="Node2D" groups=["door"]] z_index = -10 z_as_relative = false script = ExtResource( 1 ) [node name="Arrow" parent="." instance=ExtResource( 2 )] ================================================ FILE: src/actor/door/DoorBig.gd ================================================ tool extends Door onready var label := $Sprites/Control/Label onready var door_mat : ShaderMaterial = $Sprites/Door.material export var gem_count := 0 setget set_gem export var is_fade := false setget set_is_fade var fade_easy := EaseMover.new() var label_easy := EaseMover.new() var ring_clock := 0.0 func _ready(): set_gem() if Engine.editor_hint: return arrow.connect("activate", self, "activate") CheatCode.connect("activate", self, "cheat_code") if !arrow.is_locked: arrow.is_locked = Shared.gem_count < gem_count is_cutscene = gem_count > 0 and (arrow.is_locked or !Shared.maps_visited.has(map_path)) gem_color(!is_cutscene) label.modulate.a = 0.0 door_mat.set_shader_param("line", 0.0) func _process(delta): if Engine.editor_hint: return if open_close: var s = open_count(delta) door_mat.set_shader_param("line", lerp(0.0, 1.0, s)) if is_instance_valid(arrow): var l = label_easy.count(delta, arrow.is_active and is_cutscene) if !label_easy.is_last: label.modulate.a = l if is_fade: var f = fade_easy.count(delta) is_fade = !fade_easy.is_complete if door_mat: for i in 2: door_mat.set_shader_param(["gem_col", "gem_fill"][i], colors[i].linear_interpolate(colors[2 + i], f)) func set_gem(arg := gem_count): gem_count = max(arg, 0) var v = gem_count > 0 if is_instance_valid(label): label.text = str(gem_count) label.visible = v if door_mat: door_mat.set_shader_param("gem_size", 0.75 if v else 0.0) func set_is_fade(arg := is_fade): is_fade = arg fade_easy.clock = 0.0 if is_fade else fade_easy.time # unlock cheat func cheat_code(cheat): if "konami" in cheat and arrow.is_locked and arrow.is_active: arrow.is_locked = false Audio.play("gem_show", 0.5) print(name, " unlocked") func activate(): UI.up.show = arrow.is_active and is_cutscene func on_enter(): door_mat.set_shader_param("ring_offset", -door_mat.get_shader_param("ring_offset")) func gem_color(is_gold := false): if door_mat: for i in 2: door_mat.set_shader_param(["gem_col", "gem_fill"][i] , colors[(2 if is_gold else 0) + i]) ================================================ FILE: src/actor/door/DoorBig.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/actor/door/DoorBase.tscn" type="PackedScene" id=1] [ext_resource path="res://media/font/profile/DoorLabel.tres" type="DynamicFont" id=2] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=3] [ext_resource path="res://src/actor/door/DoorBig.gd" type="Script" id=4] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=5] [ext_resource path="res://src/shader/door_big.gdshader" type="Shader" id=7] [ext_resource path="res://media/image/box/round_rect100.png" type="Texture" id=8] [sub_resource type="ShaderMaterial" id=2] resource_local_to_scene = true shader = ExtResource( 7 ) shader_param/col_fill = Color( 0.898039, 0.615686, 0.341176, 1 ) shader_param/col_back = Color( 0, 0, 0, 1 ) shader_param/col_back2 = Color( 0.3, 0.3, 0.3, 1 ) shader_param/col_line = Color( 0.713726, 0.345098, 0.156863, 1 ) shader_param/line_width = 0.035 shader_param/line = 0.0 shader_param/ring = 0.3 shader_param/ring_offset = -1.5 shader_param/gem_size = 0.0 shader_param/gem_line = 0.667 shader_param/gem_offset = Vector2( 0, -0.1 ) shader_param/gem_col = Color( 0.686275, 0, 1, 1 ) shader_param/gem_fill = Color( 1, 0, 0.913725, 1 ) shader_param/knob_col = Color( 1, 1, 0, 1 ) shader_param/knob_offset = Vector2( 0.25, 0.65 ) shader_param/knob_size = 0.075 [node name="Door" instance=ExtResource( 1 )] script = ExtResource( 4 ) audio_range = Vector2( 0.7, 0.9 ) gem_count = 0 is_fade = false [node name="Visible" type="VisibilityNotifier2D" parent="." index="0"] visible = false modulate = Color( 1, 0, 0, 1 ) rect = Rect2( -100, -100, 200, 200 ) script = ExtResource( 3 ) node_path = NodePath("..") [node name="Arrow" parent="." index="1"] col_size = Vector2( 100, 100 ) image_pos = Vector2( 0, -150 ) [node name="Sprites" type="Node2D" parent="." index="2"] [node name="Door" type="Polygon2D" parent="Sprites" index="0"] material = SubResource( 2 ) position = Vector2( 1, 0 ) texture = ExtResource( 8 ) polygon = PoolVector2Array( 100, 100, -100, 100, -100, -50, -98.7464, -61.126, -95.0484, -71.6942, -89.0916, -81.1745, -81.1745, -89.0916, -71.6942, -95.0484, -61.126, -98.7464, -50, -100, 50, -100, 61.1261, -98.7464, 71.6942, -95.0484, 81.1745, -89.0916, 89.0916, -81.1745, 95.0484, -71.6942, 98.7464, -61.126, 100, -50 ) script = ExtResource( 5 ) size = Vector2( 100, 100 ) radius = Plane( 0, 0, 50, 50 ) [node name="Control" type="Control" parent="Sprites" index="1"] margin_left = -100.0 margin_top = -100.0 margin_right = 100.0 margin_bottom = 100.0 rect_clip_content = true [node name="Label" type="Label" parent="Sprites/Control" index="0"] visible = false margin_left = 25.0 margin_top = 15.0 margin_right = 175.0 margin_bottom = 165.0 custom_fonts/font = ExtResource( 2 ) text = "0" align = 1 valign = 1 ================================================ FILE: src/actor/door/DoorLittle.gd ================================================ tool extends Door onready var sprites := $Sprites onready var open := $Sprites/Open onready var door_mat : ShaderMaterial = $Sprites/Door.material onready var gem := $Sprites/Open/Gem onready var gem_fill := $Sprites/Open/Gem/Fill var is_gem := false var gem_easy := EaseMover.new() onready var clock := $Sprites/Open/Clock var is_clock := false var clock_easy := EaseMover.new() func _ready(): if Engine.editor_hint: return arrow.connect("activate", self, "activate") var m = scene_path.lstrip(Shared.worlds_path).rstrip(".tscn") clock.visible = Shared.goals.has(m) and Shared.goals[m] > 0 and Shared.speedruns.has(m) and Shared.goals[m] < Shared.speedruns[m] gem.visible = !clock.visible if "hub" in scene_path: gem.visible = false elif Shared.goals.has(m): gem_color(2) door_mat.set_shader_param("line", 1.0) func _process(delta): if Engine.editor_hint: return if open_close: var s = open_count(delta) door_mat.set_shader_param("line", lerp(0.9, 0.1, s)) var o = 1.0 - s open.scale.x = o open.visible = o > 0.01 elif is_gem: gem_easy.count(delta) gem.color = colors[1].linear_interpolate(colors[2], gem_easy.smooth()) gem_fill.color = colors[0].linear_interpolate(colors[3], gem_easy.smooth()) if gem_easy.clock == 0 or gem_easy.is_complete: is_gem = false elif is_clock: var c = clock_easy.count(delta) gem.rotation = TAU * 2 * c gem.scale = Vector2.ONE * lerp(1.0, 0.0, c) clock.rotation = -gem.rotation clock.scale = Vector2.ONE * lerp(0.0, 1.0, c) if clock_easy.is_complete: is_clock = false func activate(): Shared.speedrun_goal(scene_path, arrow.is_active) func on_enter(): Shared.collect_gem() door_mat.set_shader_param("ring_offset", -door_mat.get_shader_param("ring_offset")) func gem_color(arg := 0): gem.color = colors[arg] gem_fill.color = colors[arg + 1] func gem_fade(arg := true): is_gem = arg gem_easy.show = arg gem_easy.clock = 0 if arg else gem_easy.time ================================================ FILE: src/actor/door/DoorLittle.tscn ================================================ [gd_scene load_steps=11 format=2] [ext_resource path="res://src/actor/door/DoorBase.tscn" type="PackedScene" id=1] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=2] [ext_resource path="res://src/actor/door/DoorLittle.gd" type="Script" id=3] [ext_resource path="res://src/actor/Clock.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/Gem.tscn" type="PackedScene" id=5] [ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=6] [ext_resource path="res://media/image/box/round_rect100.png" type="Texture" id=7] [ext_resource path="res://src/shader/door.gdshader" type="Shader" id=8] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=9] [sub_resource type="ShaderMaterial" id=1] resource_local_to_scene = true shader = ExtResource( 8 ) shader_param/col1 = Color( 0.898039, 0.615686, 0.341176, 1 ) shader_param/col2 = Color( 0, 0, 0, 1 ) shader_param/col3 = Color( 0.3, 0.3, 0.3, 1 ) shader_param/line = 0.9 shader_param/is_flip = false shader_param/ring = 0.2 shader_param/ring_offset = -1.0 [node name="Door" instance=ExtResource( 1 )] script = ExtResource( 3 ) [node name="Visible" type="VisibilityNotifier2D" parent="." index="0"] visible = false modulate = Color( 1, 0, 0, 1 ) rect = Rect2( -40, -45, 80, 100 ) script = ExtResource( 9 ) node_path = NodePath("..") [node name="Sprites" type="Node2D" parent="." index="2"] [node name="Door" type="Polygon2D" parent="Sprites" index="0"] material = SubResource( 1 ) position = Vector2( 0, 5 ) texture = ExtResource( 7 ) texture_offset = Vector2( 50, 50 ) polygon = PoolVector2Array( 40, 50, -40, 50, -40, -30, -39.0211, -36.1803, -36.1803, -41.7557, -31.7557, -46.1803, -26.1803, -49.0211, -20, -50, 20, -50, 26.1803, -49.0211, 31.7557, -46.1803, 36.1803, -41.7557, 39.0211, -36.1803, 40, -30 ) script = ExtResource( 2 ) size = Vector2( 40, 50 ) radius = Plane( 0, 0, 20, 20 ) points = 6 [node name="Open" type="Node2D" parent="Sprites" index="1"] position = Vector2( -40, 0 ) [node name="Knob" type="Polygon2D" parent="Sprites/Open" index="0"] modulate = Color( 1, 1, 0, 1 ) position = Vector2( 65, 25 ) polygon = PoolVector2Array( 7.5, 0, 6.49519, 3.75, 3.75, 6.49519, -3.27835e-07, 7.5, -3.75, 6.49519, -6.49519, 3.75, -7.5, -6.55671e-07, -6.49519, -3.75, -3.75, -6.49519, 8.94366e-08, -7.5, 3.75, -6.49519, 6.49519, -3.75 ) script = ExtResource( 6 ) radius = 7.5 points = 12 [node name="Gem" parent="Sprites/Open" index="1" instance=ExtResource( 5 )] position = Vector2( 40, -5 ) color = Color( 0.686275, 0, 1, 1 ) [node name="Fill" parent="Sprites/Open/Gem" index="0"] color = Color( 1, 0, 0.913725, 1 ) [node name="Clock" parent="Sprites/Open" index="2" instance=ExtResource( 4 )] visible = false position = Vector2( 40, -5 ) [editable path="Sprites/Open/Gem"] ================================================ FILE: src/actor/door/DoorSpawn.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/door/DoorBase.tscn" type="PackedScene" id=1] [node name="Spawn" instance=ExtResource( 1 )] scene_path = "spawn" [node name="Arrow" parent="." index="0"] modulate = Color( 0, 1, 0, 1 ) z_index = 0 image_pos = Vector2( 0, 0 ) ================================================ FILE: src/actor/hair/back/Afro.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=2] [node name="Front" type="Node2D"] self_modulate = Color( 0, 0, 0, 1 ) [node name="Hair" parent="." instance=ExtResource( 2 )] position = Vector2( 0, -8 ) width = 70.0 end_scale = 0.95 length = 8.0 sitting_angle = 180.0 point_count = 6 vertices = 24 ================================================ FILE: src/actor/hair/back/Braid.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=2] [node name="Back" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 2 )] end_scale = 0.8 length = 1.0 vertices = 24 [node name="Hair2" parent="." instance=ExtResource( 2 )] position = Vector2( 0, -14 ) width = 20.0 end_scale = 0.8 length = 50.0 sitting_angle = 50.0 point_count = 6 ================================================ FILE: src/actor/hair/back/Braids.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=2] [node name="Back" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 2 )] end_scale = 0.8 length = 1.0 vertices = 24 [node name="Hair2" parent="." instance=ExtResource( 2 )] position = Vector2( -15, 0 ) width = 15.0 end_scale = 1.0 sitting_angle = 50.0 point_count = 4 is_scale_x = false [node name="Hair3" parent="." instance=ExtResource( 2 )] position = Vector2( 15, 0 ) width = 15.0 end_scale = 1.0 sitting_angle = -50.0 point_count = 4 is_scale_x = false ================================================ FILE: src/actor/hair/back/Long.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=1] [node name="Back" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 1 )] end_scale = 0.8 sitting_angle = 15.0 vertices = 24 ================================================ FILE: src/actor/hair/back/Medium.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=1] [node name="Back" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 1 )] end_scale = 0.8 length = 15.0 sitting_angle = 15.0 vertices = 24 ================================================ FILE: src/actor/hair/back/Short.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=1] [node name="Back" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 1 )] end_scale = 0.8 length = 7.0 sitting_angle = 15.0 vertices = 24 ================================================ FILE: src/actor/hair/front/Bangs.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=1] [node name="Front" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -20 ) width = 20.0 end_scale = 0.9 length = 5.0 sitting_angle = 25.0 point_count = 6 [node name="Hair2" parent="." instance=ExtResource( 1 )] position = Vector2( -11, -20 ) width = 20.0 end_scale = 0.9 length = 4.0 sitting_angle = 25.0 point_count = 6 [node name="Hair3" parent="." instance=ExtResource( 1 )] position = Vector2( 11, -20 ) width = 20.0 end_scale = 0.9 length = 4.0 sitting_angle = 25.0 point_count = 6 ================================================ FILE: src/actor/hair/front/Bun.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=1] [node name="Front" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -25 ) width = 20.0 end_scale = 0.9 length = 3.0 sitting_angle = 160.0 point_count = 6 ================================================ FILE: src/actor/hair/front/Buns.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=1] [node name="Front" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 1 )] position = Vector2( -19, -20 ) width = 20.0 end_scale = 0.9 length = 3.0 sitting_angle = 160.0 is_scale_x = false [node name="Hair2" parent="." instance=ExtResource( 1 )] position = Vector2( 19, -20 ) width = 20.0 end_scale = 0.9 length = 3.0 sitting_angle = -160.0 is_scale_x = false ================================================ FILE: src/actor/hair/front/FlatTop.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=1] [node name="Front" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -20 ) width = 20.0 end_scale = 0.9 length = 5.0 sitting_angle = 160.0 point_count = 6 [node name="Hair2" parent="." instance=ExtResource( 1 )] position = Vector2( -11, -20 ) width = 20.0 end_scale = 0.9 length = 5.0 sitting_angle = 160.0 point_count = 6 [node name="Hair3" parent="." instance=ExtResource( 1 )] position = Vector2( 11, -20 ) width = 20.0 end_scale = 0.9 length = 5.0 sitting_angle = 160.0 point_count = 6 ================================================ FILE: src/actor/hair/front/FlowerPetals.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=1] [node name="Front" type="Node2D"] [node name="FlowerPetals" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -25 ) scale = Vector2( 0.75, 0.75 ) z_index = 0 z_as_relative = true palette = 0 [node name="Visible" parent="FlowerPetals" index="1"] node_path = NodePath("") [node name="Images" parent="FlowerPetals" index="3"] modulate = Color( 1, 1, 1, 1 ) [editable path="FlowerPetals"] ================================================ FILE: src/actor/hair/front/Mohawk.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=1] [node name="Front" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -19.2 ) width = 20.0 sitting_angle = 180.0 point_count = 6 [node name="Hair2" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -19.2 ) z_index = -1 width = 20.0 length = 20.0 sitting_angle = 150.0 point_count = 6 [node name="Hair3" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -19.2 ) z_index = -1 width = 20.0 length = 15.0 sitting_angle = 120.0 point_count = 6 ================================================ FILE: src/actor/hair/front/OneLong.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=1] [node name="Front" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -19.2 ) width = 20.0 sitting_angle = 60.0 point_count = 6 ================================================ FILE: src/actor/hair/front/OneShort.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=1] [node name="Front" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -19.2 ) width = 20.0 length = 15.0 sitting_angle = 60.0 ================================================ FILE: src/actor/hair/front/TwoLong.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=1] [node name="Front" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 1 )] position = Vector2( -9, -20 ) width = 20.0 sitting_angle = 50.0 point_count = 6 is_scale_x = false [node name="Hair2" parent="." instance=ExtResource( 1 )] position = Vector2( 9, -20 ) width = 20.0 sitting_angle = -50.0 point_count = 6 is_scale_x = false ================================================ FILE: src/actor/hair/front/TwoShort.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=2] [node name="Front" type="Node2D"] [node name="Hair" parent="." instance=ExtResource( 2 )] position = Vector2( -9, -20 ) width = 20.0 length = 15.0 sitting_angle = 50.0 is_scale_x = false [node name="Hair2" parent="." instance=ExtResource( 2 )] position = Vector2( 9, -20 ) width = 20.0 length = 15.0 sitting_angle = -50.0 is_scale_x = false ================================================ FILE: src/actor/hat/Candle.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=1] [node name="Hat" type="Node2D"] [node name="Candle" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -13 ) scale = Vector2( 0.75, 0.75 ) z_index = 0 z_as_relative = true ================================================ FILE: src/actor/hat/Carrot.tscn ================================================ [gd_scene load_steps=3 format=2] [ext_resource path="res://src/actor/scale_x.gd" type="Script" id=1] [sub_resource type="Curve" id=1] _data = [ Vector2( 0, 1 ), 0.0, -0.5, 0, 1, Vector2( 1, 0.5 ), -0.5, 0.0, 1, 0 ] [node name="Hat" type="Node2D"] [node name="Line2D" type="Line2D" parent="."] position = Vector2( 0, 13 ) points = PoolVector2Array( 5, 0, 25, 0 ) width_curve = SubResource( 1 ) default_color = Color( 1, 0.686275, 0, 1 ) begin_cap_mode = 2 end_cap_mode = 2 script = ExtResource( 1 ) ================================================ FILE: src/actor/hat/FlowerPetals.tscn ================================================ [gd_scene load_steps=2 format=2] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=1] [node name="Hat" type="Node2D"] [node name="FlowerPetals" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -25 ) scale = Vector2( 0.75, 0.75 ) z_index = 0 z_as_relative = true palette = 0 ================================================ FILE: src/actor/scale_x.gd ================================================ extends Node2D func scale_x(arg): scale.x = arg ================================================ FILE: src/arcade/Arcade.gd ================================================ extends Node2D onready var player = Shared.player onready var node_joy := $CanvasLayer/Center/Control/Cabinet/Controls/Joystick onready var node_a := $CanvasLayer/Center/Control/Cabinet/Controls/Button/Control/Node2D onready var node_b := $CanvasLayer/Center/Control/Cabinet/Controls/Button2/Control/Node2D var joy := Vector2.ZERO var btn_a := false var btn_b := false var is_unpause := false func _ready(): MenuPause.connect("opened", self, "pause") player.is_input = false Cam.target_node = null Cam.target_pos = Vector2(1280, 720) * 0.5 func _exit_tree(): player.is_input = true Cam.target_node = player func _physics_process(delta): var m = MenuPause.is_paused joy.x = 0.0 if m else round(Input.get_axis("left", "right")) var a = Input.is_action_pressed("jump") var b = Input.is_action_pressed("grab") if is_unpause: is_unpause = a or b if !is_unpause: btn_a = a and !m btn_b = b and !m node_joy.rotation = lerp(node_joy.rotation, joy.x * deg2rad(15), delta * 30.0) node_a.position.y = lerp(node_a.position.y, float(btn_a) * 20, delta * 30.0) node_b.position.y = lerp(node_b.position.y, float(btn_b) * 20, delta * 30.0) func pause(arg := false): is_unpause = !arg ================================================ FILE: src/arcade/Arcade.tscn ================================================ [gd_scene load_steps=10 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=2] [ext_resource path="res://src/arcade/Arcade.gd" type="Script" id=3] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=5] [ext_resource path="res://src/arcade/ArcadeGame.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=7] [ext_resource path="res://src/shader/inside_round_rect.gdshader" type="Shader" id=8] [sub_resource type="ShaderMaterial" id=2] shader = ExtResource( 8 ) shader_param/radius = 0.15 shader_param/inside_color = Color( 0, 0, 0, 0 ) shader_param/outside_color = Color( 0, 0.631373, 0.94902, 1 ) [node name="Node2D" type="Node2D"] script = ExtResource( 3 ) [node name="Map" type="Node2D" parent="."] __meta__ = { "_edit_lock_": true } [node name="SolidTileMap" parent="Map" instance=ExtResource( 7 )] tile_data = PoolIntArray( -851982, -1073741824, 0, -851981, -1073741824, 0, -851980, -1073741824, 0, -851979, -1073741824, 0, -851978, -1073741824, 0, -786446, -1073741824, 0, -786442, -1073741824, 0, -720910, -1073741824, 0, -720906, -1073741824, 0, -655374, -1073741824, 0, -655370, -1073741824, 0, -589838, -1073741824, 0, -589837, -1073741824, 0, -589836, -1073741824, 0, -589835, -1073741824, 0, -589834, -1073741824, 0 ) detail = 4 [node name="SpikeMap" parent="Map" instance=ExtResource( 4 )] [node name="Actors" type="Node2D" parent="Map"] [node name="Door" parent="Map/Actors" instance=ExtResource( 5 )] position = Vector2( -1150, -1050 ) [node name="CanvasLayer" type="CanvasLayer" parent="."] layer = 5 [node name="Center" type="CenterContainer" parent="CanvasLayer"] anchor_right = 1.0 anchor_bottom = 1.0 [node name="Control" type="Control" parent="CanvasLayer/Center"] margin_left = 640.0 margin_top = 360.0 margin_right = 640.0 margin_bottom = 360.0 [node name="Cabinet" type="Node2D" parent="CanvasLayer/Center/Control"] [node name="Back" type="Polygon2D" parent="CanvasLayer/Center/Control/Cabinet"] color = Color( 0, 0.631373, 0.94902, 1 ) polygon = PoolVector2Array( 350, 360, -350, 360, -350, -360, 350, -360 ) script = ExtResource( 1 ) is_baked = false size = Vector2( 350, 360 ) [node name="Screen" type="Node2D" parent="CanvasLayer/Center/Control/Cabinet"] position = Vector2( 0, -70 ) scale = Vector2( 0.9, 0.9 ) [node name="Control" type="Control" parent="CanvasLayer/Center/Control/Cabinet/Screen"] margin_left = -300.0 margin_top = -300.0 margin_right = -260.0 margin_bottom = -260.0 rect_scale = Vector2( 0.5, 0.5 ) [node name="ColorRect" type="ColorRect" parent="CanvasLayer/Center/Control/Cabinet/Screen/Control"] margin_right = 1200.0 margin_bottom = 1200.0 rect_clip_content = true color = Color( 0, 0, 0, 1 ) [node name="ViewportContainer" type="ViewportContainer" parent="CanvasLayer/Center/Control/Cabinet/Screen/Control"] margin_right = 1200.0 margin_bottom = 1200.0 [node name="Viewport" type="Viewport" parent="CanvasLayer/Center/Control/Cabinet/Screen/Control/ViewportContainer"] size = Vector2( 1200, 1200 ) own_world = true transparent_bg = true handle_input_locally = false render_target_update_mode = 3 audio_listener_enable_2d = true [node name="Game" parent="CanvasLayer/Center/Control/Cabinet/Screen/Control/ViewportContainer/Viewport" instance=ExtResource( 6 )] [node name="Border" type="ColorRect" parent="CanvasLayer/Center/Control/Cabinet/Screen/Control"] material = SubResource( 2 ) margin_right = 1200.0 margin_bottom = 1200.0 rect_pivot_offset = Vector2( 2455.56, 1437.78 ) rect_clip_content = true [node name="Controls" type="Node2D" parent="CanvasLayer/Center/Control/Cabinet"] position = Vector2( 0, 310 ) [node name="Joystick" type="Node2D" parent="CanvasLayer/Center/Control/Cabinet/Controls"] position = Vector2( -180, 23 ) [node name="Polygon2D2" type="Polygon2D" parent="CanvasLayer/Center/Control/Cabinet/Controls/Joystick"] position = Vector2( 0, -50 ) color = Color( 0.392157, 0, 0.196078, 1 ) polygon = PoolVector2Array( 15, 50, 14.6239, 53.3378, 13.5145, 56.5083, 11.7275, 59.3523, 9.35235, 61.7275, 6.50826, 63.5145, 3.33781, 64.6239, -6.55671e-07, 65, -3.33781, 64.6239, -6.50826, 63.5145, -9.35235, 61.7275, -11.7275, 59.3523, -13.5145, 56.5083, -14.6239, 53.3378, -15, 50, -15, -50, -14.6239, -53.3378, -13.5145, -56.5083, -11.7275, -59.3523, -9.35234, -61.7275, -6.50826, -63.5145, -3.33782, -64.6239, 1.78873e-07, -65, 3.33782, -64.6239, 6.50826, -63.5145, 9.35235, -61.7275, 11.7275, -59.3523, 13.5145, -56.5083, 14.6239, -53.3378, 15, -50 ) script = ExtResource( 1 ) is_baked = false size = Vector2( 15, 65 ) radius = Plane( -2, -1, -1, -1 ) [node name="Polygon2D" type="Polygon2D" parent="CanvasLayer/Center/Control/Cabinet/Controls/Joystick"] position = Vector2( 0, -70 ) color = Color( 1, 0, 0, 1 ) polygon = PoolVector2Array( 50, 0, 46.194, 19.1342, 35.3553, 35.3553, 19.1342, 46.194, -2.18557e-06, 50, -19.1342, 46.194, -35.3553, 35.3553, -46.194, 19.1342, -50, -4.37114e-06, -46.194, -19.1342, -35.3553, -35.3553, -19.1342, -46.194, 5.96244e-07, -50, 19.1342, -46.194, 35.3553, -35.3553, 46.194, -19.1342 ) script = ExtResource( 2 ) [node name="Button" type="Node2D" parent="CanvasLayer/Center/Control/Cabinet/Controls"] position = Vector2( 30, 0 ) scale = Vector2( 1, 0.75 ) [node name="Polygon2D2" type="Polygon2D" parent="CanvasLayer/Center/Control/Cabinet/Controls/Button"] color = Color( 0.392157, 0, 0.196078, 1 ) polygon = PoolVector2Array( 50, 0, 46.194, 19.1342, 35.3553, 35.3553, 19.1342, 46.194, -2.18557e-06, 50, -19.1342, 46.194, -35.3553, 35.3553, -46.194, 19.1342, -50, -4.37114e-06, -46.194, -19.1342, -35.3553, -35.3553, -19.1342, -46.194, 5.96244e-07, -50, 19.1342, -46.194, 35.3553, -35.3553, 46.194, -19.1342 ) script = ExtResource( 2 ) [node name="Polygon2D" type="Polygon2D" parent="CanvasLayer/Center/Control/Cabinet/Controls/Button"] color = Color( 1, 0, 0, 1 ) polygon = PoolVector2Array( 40, 0, 36.9552, 15.3073, 28.2843, 28.2843, 15.3073, 36.9552, -1.74846e-06, 40, -15.3073, 36.9552, -28.2843, 28.2843, -36.9552, 15.3073, -40, -3.49691e-06, -36.9552, -15.3073, -28.2843, -28.2843, -15.3073, -36.9552, 4.76995e-07, -40, 15.3073, -36.9552, 28.2843, -28.2843, 36.9552, -15.3073 ) script = ExtResource( 2 ) is_baked = false radius = 40.0 [node name="Control" type="Control" parent="CanvasLayer/Center/Control/Cabinet/Controls/Button"] margin_left = -40.0 margin_top = -60.0 margin_right = 40.0 rect_clip_content = true [node name="Node2D" type="Node2D" parent="CanvasLayer/Center/Control/Cabinet/Controls/Button/Control"] [node name="Polygon2D3" type="Polygon2D" parent="CanvasLayer/Center/Control/Cabinet/Controls/Button/Control/Node2D"] position = Vector2( 40, 40 ) color = Color( 1, 0, 0, 1 ) polygon = PoolVector2Array( 40, 60, -40, 60, -40, -3.49691e-06, -38.9971, -8.90084, -36.0388, -17.3554, -31.2733, -24.9396, -24.9396, -31.2733, -17.3554, -36.0387, -8.90084, -38.9971, 4.76995e-07, -40, 8.90084, -38.9971, 17.3554, -36.0387, 24.9396, -31.2733, 31.2733, -24.9396, 36.0388, -17.3554, 38.9971, -8.90083, 40, 6.99382e-06 ) script = ExtResource( 1 ) is_baked = false size = Vector2( 40, 50 ) rect_offset = Vector2( 0, 10 ) radius = Plane( 0, 0, -2, -2 ) [node name="Button2" type="Node2D" parent="CanvasLayer/Center/Control/Cabinet/Controls"] position = Vector2( 180, 0 ) scale = Vector2( 1, 0.75 ) [node name="Polygon2D2" type="Polygon2D" parent="CanvasLayer/Center/Control/Cabinet/Controls/Button2"] color = Color( 0.392157, 0, 0.196078, 1 ) polygon = PoolVector2Array( 50, 0, 46.194, 19.1342, 35.3553, 35.3553, 19.1342, 46.194, -2.18557e-06, 50, -19.1342, 46.194, -35.3553, 35.3553, -46.194, 19.1342, -50, -4.37114e-06, -46.194, -19.1342, -35.3553, -35.3553, -19.1342, -46.194, 5.96244e-07, -50, 19.1342, -46.194, 35.3553, -35.3553, 46.194, -19.1342 ) script = ExtResource( 2 ) [node name="Polygon2D" type="Polygon2D" parent="CanvasLayer/Center/Control/Cabinet/Controls/Button2"] color = Color( 1, 0, 0, 1 ) polygon = PoolVector2Array( 40, 0, 36.9552, 15.3073, 28.2843, 28.2843, 15.3073, 36.9552, -1.74846e-06, 40, -15.3073, 36.9552, -28.2843, 28.2843, -36.9552, 15.3073, -40, -3.49691e-06, -36.9552, -15.3073, -28.2843, -28.2843, -15.3073, -36.9552, 4.76995e-07, -40, 15.3073, -36.9552, 28.2843, -28.2843, 36.9552, -15.3073 ) script = ExtResource( 2 ) is_baked = false radius = 40.0 [node name="Control" type="Control" parent="CanvasLayer/Center/Control/Cabinet/Controls/Button2"] margin_left = -40.0 margin_top = -60.0 margin_right = 40.0 rect_clip_content = true [node name="Node2D" type="Node2D" parent="CanvasLayer/Center/Control/Cabinet/Controls/Button2/Control"] [node name="Polygon2D3" type="Polygon2D" parent="CanvasLayer/Center/Control/Cabinet/Controls/Button2/Control/Node2D"] position = Vector2( 40, 40 ) color = Color( 1, 0, 0, 1 ) polygon = PoolVector2Array( 40, 60, -40, 60, -40, -3.49691e-06, -38.9971, -8.90084, -36.0388, -17.3554, -31.2733, -24.9396, -24.9396, -31.2733, -17.3554, -36.0387, -8.90084, -38.9971, 4.76995e-07, -40, 8.90084, -38.9971, 17.3554, -36.0387, 24.9396, -31.2733, 31.2733, -24.9396, 36.0388, -17.3554, 38.9971, -8.90083, 40, 6.99382e-06 ) script = ExtResource( 1 ) is_baked = false size = Vector2( 40, 50 ) rect_offset = Vector2( 0, 10 ) radius = Plane( 0, 0, -2, -2 ) ================================================ FILE: src/arcade/ArcadeCab.tscn ================================================ [gd_scene load_steps=12 format=2] [ext_resource path="res://src/actor/door/DoorBase.tscn" type="PackedScene" id=1] [ext_resource path="res://media/image/details/arcade_back.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Screen.gd" type="Script" id=3] [ext_resource path="res://media/image/details/arcade_front.png" type="Texture" id=4] [ext_resource path="res://src/arcade/AttractAudio.gd" type="Script" id=5] [ext_resource path="res://media/audio/sfx/sfx4.wav" type="AudioStream" id=6] [ext_resource path="res://media/audio/sfx/zap0.wav" type="AudioStream" id=7] [ext_resource path="res://media/audio/sfx/jump1.wav" type="AudioStream" id=8] [ext_resource path="res://media/audio/sfx/fallout2.wav" type="AudioStream" id=9] [ext_resource path="res://media/audio/sfx/key.wav" type="AudioStream" id=10] [ext_resource path="res://media/audio/sfx/oneup1.wav" type="AudioStream" id=11] [node name="ArcadeCab" instance=ExtResource( 1 )] scene_path = "res://src/arcade/Arcade.tscn" [node name="Arrow" parent="." index="0"] col_show = true col_size = Vector2( 120, 75 ) col_pos = Vector2( 0, -25 ) image_pos = Vector2( 0, -160 ) [node name="Image" type="Node2D" parent="." index="1"] [node name="Back" type="Sprite" parent="Image" index="0"] position = Vector2( 4, -30 ) scale = Vector2( 0.25, 0.25 ) texture = ExtResource( 2 ) [node name="Screen" type="Polygon2D" parent="Image" index="1"] position = Vector2( 6.5, -57.5 ) polygon = PoolVector2Array( 15.25, 7.625, 15.0588, 9.32172, 14.4949, 10.9334, 13.5865, 12.3791, 12.3791, 13.5865, 10.9334, 14.4949, 9.32172, 15.0588, 7.625, 15.25, -7.625, 15.25, -9.32172, 15.0588, -10.9334, 14.4949, -12.3791, 13.5865, -13.5865, 12.3791, -14.4949, 10.9334, -15.0588, 9.32172, -15.25, 7.625, -15.25, -7.625, -15.0588, -9.32172, -14.4949, -10.9334, -13.5865, -12.3791, -12.3791, -13.5865, -10.9334, -14.4949, -9.32172, -15.0588, -7.625, -15.25, 7.625, -15.25, 9.32172, -15.0588, 10.9334, -14.4949, 12.3791, -13.5865, 13.5865, -12.3791, 14.4949, -10.9334, 15.0588, -9.32172, 15.25, -7.625 ) script = ExtResource( 3 ) colors = PoolColorArray( 1, 1, 1, 1, 1, 0.372549, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0.156863, 0.466667, 1, 1, 0.796078, 0.235294, 1, 1, 1, 0, 0.843137, 1, 1, 0.686275, 0.686275, 1, 0.662745, 1, 0.662745, 1, 1, 0.992157, 0.596078, 1, 0.768627, 0.768627, 1, 1, 1, 0.568627, 1, 1 ) wait_range = Vector2( 0.1, 0.4 ) [node name="Front" type="Sprite" parent="Image" index="2"] position = Vector2( 4, -30 ) scale = Vector2( 0.25, 0.25 ) texture = ExtResource( 4 ) [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="." index="2"] volume_db = -2.0 max_distance = 1000.0 attenuation = 3.0 script = ExtResource( 5 ) list = [ ExtResource( 10 ), ExtResource( 9 ), ExtResource( 8 ), ExtResource( 6 ), ExtResource( 7 ), ExtResource( 7 ), ExtResource( 7 ), ExtResource( 11 ) ] wait = Vector2( 0.1, 0.4 ) ================================================ FILE: src/arcade/ArcadeGame.gd ================================================ extends Node2D onready var cam := $Camera2D onready var map_node := $Map onready var center_node := $UI/Control/Center onready var label_node := $UI/Control/Center/Label onready var wipe_mat : ShaderMaterial = $UI/Control/Wipe.material export var tile_size := 12.0 export(String, DIR) var folder := "" onready var maps : Array = Shared.list_all_files(folder) export var map := 0 setget set_map var map_ease := EaseMover.new(1.0, 0.01) var candies := [] export var room_size := 600.0 export var wrap_cam = 0 export var cam_speed := 100.0 var wrap_angle = 0.0 var delta_scale := 1.0 var btn_a := false var btn_b := false var is_unpause := false var candy_scene := load("res://src/arcade/Candy.tscn") onready var music : AudioStreamPlayer = Audio.dict["music_arcade"] func _ready(): MenuPause.connect("opened", self, "pause") scene() Audio.play("arcade_boot") yield(get_tree().create_timer(1.0), "timeout") music.play() shuffle_maps() func _exit_tree(): if music: music.stop() func _physics_process(delta): var m = MenuPause.is_paused var a = Input.is_action_pressed("jump") var b = Input.is_action_pressed("grab") if is_unpause: is_unpause = a or b if !is_unpause: btn_a = a and !m btn_b = b and !m var s = map_ease.count(delta) var f = map_ease.frac() if !map_ease.is_last: cam.zoom = Vector2.ONE * lerp(1.1, 3.0, s) cam.position = map_ease.from_lerp_to(s) center_node.rect_scale = Vector2.ONE * lerp(0.0, 2.5, s) wipe_mat.set_shader_param("radius", lerp(0.71, 0.0, ease(1.0 - f, 0.17))) if map_ease.is_complete: yield(get_tree(), "physics_frame") scene() if wrap_cam > 0: cam.position += Vector2.RIGHT.rotated(wrap_angle) * cam_speed * delta cam.position = Vector2(wrapf(cam.position.x, -room_size, room_size), wrapf(cam.position.y, -room_size, room_size)) map_ease.from = cam.position if map == 0 and (btn_a or btn_b) and !m and map_ease.clock == 0.0: win(true) func set_map(arg := map): map = max(0, arg) #print("map: ", map) if maps and label_node: var loop = floor(map / maps.size()) label_node.text = (str(loop + 1) + "-" if loop > 0 else "") + str(map % maps.size()) func wrap_tiles(_map): var tiles = _map.get_used_cells() for t in tiles: for x in [-1, 0, 1]: for y in [-1, 0, 1]: if !(x == 0 and y == 0) : var vec = t + (Vector2(x, y) * tile_size) _map.set_cell(vec.x, vec.y, 0) func win(arg := false): if candies.size() > 0 and !arg: return map_ease.show = true self.map += 1 Audio.play("arcade_win", 0.7, 1.1) func lose(): map_ease.show = true self.map -= 1 Audio.play("arcade_lose", 0.7, 1.1) func scene(): wrap_cam = floor(map / maps.size()) var c = clamp(wrap_cam - 1, 1.0, 5.0) cam_speed = c * 100 delta_scale = 1.0 + (clamp(wrap_cam - 1, 0.0, 5.0) * 0.2) if wrap_cam > 0: Shared.achieve("wrap_it_up") #print("wrap_cam: ", wrap_cam, " cam_speed: ", cam_speed, " delta_scale : ", delta_scale) randomize() wrap_angle = lerp(0.0, TAU, (randi() % 3) / 4.0) + (0.0 if wrap_cam < 2 else deg2rad(45.0)) #print(rad2deg(wrap_angle)) map_ease.from = Vector2.ZERO map_ease.show = false cam.position = Vector2.ZERO cam.zoom = Vector2.ONE * 1.1 for i in map_node.get_children(): i.queue_free() var goto = map % maps.size() if goto == 0: shuffle_maps() var m = load(maps[goto]).instance() map_node.add_child(m) for i in m.get_children(): if i.is_in_group("solid_map"): wrap_tiles(i) if i.is_in_group("back"): i.visible = false yield(get_tree(), "idle_frame") if wrap_cam > 2: var g = get_tree().get_nodes_in_group("candy") for i in g: var d = candy_scene.instance() d.position = i.position i.get_parent().add_child(d) d.dir_x = -i.dir_x func pause(arg := false): is_unpause = !arg func shuffle_maps(): var num = [] for i in 10: num.append([]) var m = Shared.list_all_files(folder) for i in m: num[int(i)].append(i) randomize() maps = [] for i in num: i.shuffle() for y in i: maps.append(y) ================================================ FILE: src/arcade/ArcadeGame.tscn ================================================ [gd_scene load_steps=8 format=2] [ext_resource path="res://src/arcade/maps/1.tscn" type="PackedScene" id=1] [ext_resource path="res://src/arcade/ArcadeGame.gd" type="Script" id=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=3] [ext_resource path="res://src/shader/wipe.gdshader" type="Shader" id=4] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=5] [sub_resource type="ShaderMaterial" id=2] shader = ExtResource( 4 ) shader_param/inside = Color( 1, 1, 1, 1 ) shader_param/line = Color( 0, 0, 0, 1 ) shader_param/outside = Color( 0, 0, 0, 0 ) shader_param/scale = 2.0 shader_param/offset = Vector2( 0, 0 ) shader_param/start_offset = Vector2( 0.5, 0.5 ) shader_param/radius = 0.126 shader_param/width = 0.0 [sub_resource type="DynamicFont" id=1] size = 170 outline_size = 17 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 3 ) [node name="Game" type="Node2D" groups=["arcade"]] script = ExtResource( 2 ) folder = "res://src/arcade/maps" [node name="Camera2D" type="Camera2D" parent="."] current = true zoom = Vector2( 1.1, 1.1 ) [node name="Map" type="Node2D" parent="."] [node name="Map" parent="Map" instance=ExtResource( 1 )] [node name="UI" type="CanvasLayer" parent="."] [node name="Control" type="Control" parent="UI"] margin_right = 1200.0 margin_bottom = 1200.0 [node name="Wipe" type="Sprite" parent="UI/Control"] material = SubResource( 2 ) texture = ExtResource( 5 ) centered = false region_enabled = true region_rect = Rect2( 0, 0, 1200, 1200 ) [node name="Back" type="ColorRect" parent="UI/Control"] visible = false anchor_right = 1.0 anchor_bottom = 1.0 color = Color( 0, 0, 0, 1 ) [node name="Center" type="CenterContainer" parent="UI/Control"] margin_left = 600.0 margin_top = 600.0 margin_right = 600.0 margin_bottom = 600.0 use_top_left = true [node name="Label" type="Label" parent="UI/Control/Center"] margin_left = -119.0 margin_top = -100.0 margin_right = 119.0 margin_bottom = 100.0 rect_min_size = Vector2( 200, 200 ) custom_colors/font_outline_modulate = Color( 0, 0, 0, 1 ) custom_fonts/font = SubResource( 1 ) text = "15" align = 1 valign = 1 ================================================ FILE: src/arcade/AttractAudio.gd ================================================ extends AudioStreamPlayer2D export(Array, AudioStream) var list : Array = [] export var wait := Vector2(0.1, 0.3) var clock = 0.0 func _ready(): randomize() func _process(delta): if !playing: clock -= delta if clock < 0: clock = rand_range(wait.x, wait.y) stream = list[randi() % list.size()] play() ================================================ FILE: src/arcade/Candy.gd ================================================ extends KinematicBody2D var dir_x := 0.0 export var speed := 100.0 var room_size := Vector2(600, 600) onready var image := $Sprites var spr_list := [] var walk_clock := 0.0 var is_dead := false var dead_ease := EaseMover.new() var is_floor := false var arcade var image_rot := 0.0 var delta_scale := 1.0 func _ready(): for i in get_tree().get_nodes_in_group("arcade"): arcade = i arcade.candies.append(self) delta_scale = arcade.delta_scale randomize() speed *= 1.0 + rand_range(-0.1, 0.1) if dir_x == 0.0: dir_x = -1.0 if randf() < 0.5 else 1.0 if test_move(transform, Vector2(0, 100)): move_and_collide(Vector2(0, 100)) func _exit_tree(): arcade.candies.erase(self) func _physics_process(delta): delta *= delta_scale #print(delta_scale) is_floor = test_move(transform, Vector2(0, 2.0)) if !is_dead: move_and_collide(Vector2(speed * dir_x, 0.0) * delta) if !is_floor: move_and_collide(Vector2(0, 10.0)) var tf = Transform2D(0.0, position + Vector2(dir_x * 20, 0.0)) if test_move(transform, Vector2(dir_x, 0.0)) or !test_move(tf, Vector2(0, 50)): dir_x = -dir_x # animation if is_dead: var e = ease(dead_ease.count(delta, true, false), 0.5) image.scale = Vector2.ONE * lerp(1.0, 0.0, e) image.rotation_degrees = image_rot + lerp(0.0, 240.0 * dir_x, e) else: walk_clock += delta image_rot = sin(walk_clock * 8.0) * 10.0 image.rotation_degrees = image_rot image.position.y = -abs(cos(walk_clock * 8.0) * 10.0) # wrap position.x = wrapf(position.x, -room_size.x, room_size.x) position.y = wrapf(position.y, -room_size.y, room_size.y) func die(): is_dead = true collision_layer = 0 arcade.candies.erase(self) arcade.win() dir_x = -1.0 if randf() < 0.5 else 1.0 ================================================ FILE: src/arcade/Candy.tscn ================================================ [gd_scene load_steps=5 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://src/arcade/Candy.gd" type="Script" id=2] [ext_resource path="res://src/arcade/Wrapper.gd" type="Script" id=3] [sub_resource type="RectangleShape2D" id=4] extents = Vector2( 30, 30 ) [node name="Candy" type="KinematicBody2D" groups=["candy"]] collision_layer = 2 script = ExtResource( 2 ) speed = 130.0 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource( 4 ) [node name="Sprites" type="Node2D" parent="."] [node name="Head" type="Polygon2D" parent="Sprites"] polygon = PoolVector2Array( 30, 20, 29.7493, 22.2252, 29.0097, 24.3388, 27.8183, 26.2349, 26.2349, 27.8183, 24.3388, 29.0097, 22.2252, 29.7493, 20, 30, -20, 30, -22.2252, 29.7493, -24.3388, 29.0097, -26.2349, 27.8183, -27.8183, 26.2349, -29.0097, 24.3388, -29.7493, 22.2252, -30, 20, -30, -2.62268e-06, -29.2478, -6.67563, -27.0291, -13.0165, -23.4549, -18.7047, -18.7047, -23.4549, -13.0165, -27.0291, -6.67563, -29.2478, 3.57746e-07, -30, 6.67563, -29.2478, 13.0165, -27.0291, 18.7047, -23.4549, 23.4549, -18.7047, 27.0291, -13.0165, 29.2478, -6.67563, 30, 5.24537e-06 ) script = ExtResource( 1 ) is_baked = false size = Vector2( 30, 30 ) radius = Plane( 10, 10, -2, -2 ) [node name="EyeL" type="Polygon2D" parent="Sprites/Head"] position = Vector2( -15, 0 ) color = Color( 0, 0, 0, 1 ) polygon = PoolVector2Array( 7, 5, 6.06218, 8.5, 3.5, 11.0622, -3.0598e-07, 12, -3.5, 11.0622, -6.06218, 8.5, -7, 5, -7, -5, -6.06218, -8.5, -3.5, -11.0622, 8.34742e-08, -12, 3.5, -11.0622, 6.06218, -8.5, 7, -5 ) script = ExtResource( 1 ) is_baked = false size = Vector2( 7, 12 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="EyeR" type="Polygon2D" parent="Sprites/Head"] position = Vector2( 15, 0 ) color = Color( 0, 0, 0, 1 ) polygon = PoolVector2Array( 7, 5, 6.06218, 8.5, 3.5, 11.0622, -3.0598e-07, 12, -3.5, 11.0622, -6.06218, 8.5, -7, 5, -7, -5, -6.06218, -8.5, -3.5, -11.0622, 8.34742e-08, -12, 3.5, -11.0622, 6.06218, -8.5, 7, -5 ) script = ExtResource( 1 ) is_baked = false size = Vector2( 7, 12 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="Wrapper" type="Node2D" parent="."] script = ExtResource( 3 ) image_path = NodePath("../Sprites") ================================================ FILE: src/arcade/Player.gd ================================================ extends KinematicBody2D onready var area := $Area2D onready var image := $Sprites onready var image_root := $Sprites/Root var joy := Vector2.ZERO var joy_last := Vector2.ZERO var btn_jump := false var jump_ease := EaseMover.new(0.15) var is_jump := false export var move_speed := 350.0 export var move_accel := 0.3 export var move_damp := 0.08 export var jump_speed := 620.0 export var hit_speed := 900.0 var room_size := Vector2(600, 600) export var gravity := 1500.0 export var term_vel := 4000.0 export var squish_jump := Vector2(0.5, 1.5) export var squish_land := Vector2(1.4, 0.6) export var land_time := 0.25 export var land_vel := 250.0 var squish_ease := EaseMover.new(0.3) var vel := Vector2.ZERO var vel_last := Vector2.ZERO var is_floor := false var walk_clock = 0.0 var dir_x := 1.0 var air_clock := 0.0 var is_input = true var is_dead := false var arcade var dead_ease := EaseMover.new() var unpause_tick := 0.0 var is_unpause := false func _ready(): MenuPause.connect("opened", self, "pause") for i in get_tree().get_nodes_in_group("arcade"): arcade = i if arcade.map == 0: is_input = false image_root.scale = Vector2.ZERO squish_ease.to = Vector2.ONE func _physics_process(delta): # input joy_last = joy if is_input and !MenuPause.is_paused: joy.x = round(Input.get_axis("left", "right")) joy.y = round(Input.get_axis("up", "down")) var j = Input.is_action_pressed("jump") or Input.is_action_pressed("grab") if !j: is_unpause = false if !is_unpause: btn_jump = j # is floor & air clock is_floor = test_move(transform, Vector2(0, 3)) if is_floor and air_clock > 0.0: var s = min(vel_last.y, land_vel) / land_vel squish_ease.from = Vector2.ONE.linear_interpolate(squish_land, ease(s, 2.2)) squish_ease.clock = 0.0 air_clock = 0.0 if is_floor else air_clock + delta # walking if joy.x == 0: vel.x = lerp(vel.x, 0.0, delta * 21.0) else: vel.x = clamp(vel.x + (move_speed * move_accel * joy.x), -move_speed, move_speed) dir_x = joy.x # jumping and gravity vel.y = clamp(vel.y + (gravity * delta), -term_vel, term_vel) if btn_jump and is_floor and !is_jump: is_jump = true Audio.play("arcade_jump", 0.9, 1.3) jump_ease.clock = 0.0 squish_ease.from = squish_jump squish_ease.clock = 0.0 if is_jump: vel.y = -jump_speed var s = jump_ease.count(delta) jump_ease.time = .16 is_jump = jump_ease.is_less and btn_jump if !is_dead: for i in area.get_overlapping_bodies(): if is_floor or (position.y > i.position.y - 25 and vel.y < 0.0): die() break else: i.die() vel.y = -hit_speed Audio.play("arcade_bell", 0.5, 1.3) Audio.play("arcade_hit", 0.8, 1.2) squish_ease.from = squish_land squish_ease.clock = 0.0 vel_last = vel vel = move_and_slide(vel) position.x = wrapf(position.x, -room_size.x, room_size.x) position.y = wrapf(position.y, -room_size.y, room_size.y) # body walk_clock = 0.0 if joy.x != joy_last.x else walk_clock + (delta * dir_x) if is_dead: var s = dead_ease.count(delta, true, false) image.scale = Vector2.ONE * lerp(1.5, 0.0, ease(s, 2.0)) image.rotation_degrees = lerp(dir_x * 9.0, dir_x * 360.0, ease(s, 2.0)) else: if is_floor: if joy.x == 0: image.rotation_degrees = sin(walk_clock * 4.0) * 5 image.position.y = -abs(cos(walk_clock * 4.0) * 5) else: image.rotation_degrees = sin(walk_clock * 10.0) * 20 image.position.y = -abs(sin(walk_clock * 10.0) * 20) else: image.rotation_degrees = (dir_x * 9) + sin(walk_clock * 9.0) * 3 image.position.y = lerp(image.position.y, 0, 10 * delta) # squish ease image_root.scale = squish_ease.move(delta) func die(): is_dead = true is_input = false vel.y = -jump_speed vel.x = move_speed * -dir_x joy.x = -dir_x arcade.lose() #Audio.play(audio_die, 0.8, 1.2) Audio.play("arcade_owie", 0.7, 1.1) func pause(arg := false): joy = Vector2.ZERO btn_jump = false is_unpause = !arg ================================================ FILE: src/arcade/Player.tscn ================================================ [gd_scene load_steps=7 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=2] [ext_resource path="res://src/arcade/Player.gd" type="Script" id=3] [ext_resource path="res://src/arcade/Wrapper.gd" type="Script" id=4] [sub_resource type="RectangleShape2D" id=3] extents = Vector2( 20, 34 ) [sub_resource type="RectangleShape2D" id=6] extents = Vector2( 20, 34 ) [node name="Player" type="KinematicBody2D"] collision_layer = 0 script = ExtResource( 3 ) jump_speed = 630.0 hit_speed = 800.0 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] scale = Vector2( 0.999999, 0.999999 ) shape = SubResource( 3 ) [node name="Area2D" type="Area2D" parent="."] collision_layer = 0 collision_mask = 2 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] shape = SubResource( 6 ) [node name="Sprites" type="Node2D" parent="."] position = Vector2( 6.10352e-05, 6.10352e-05 ) [node name="Root" type="Node2D" parent="Sprites"] position = Vector2( -6.10352e-05, 34.9999 ) [node name="Body" type="Node2D" parent="Sprites/Root"] position = Vector2( 0, -35 ) scale = Vector2( 0.7, 0.7 ) [node name="Head" type="Polygon2D" parent="Sprites/Root/Body"] position = Vector2( -6.10352e-05, -20.0001 ) polygon = PoolVector2Array( 30, 0, 27.7164, 11.4805, 21.2132, 21.2132, 11.4805, 27.7164, -1.31134e-06, 30, -11.4805, 27.7164, -21.2132, 21.2132, -27.7164, 11.4805, -30, -2.62268e-06, -27.7164, -11.4805, -21.2132, -21.2132, -11.4805, -27.7164, 3.57746e-07, -30, 11.4805, -27.7164, 21.2132, -21.2132, 27.7164, -11.4805 ) script = ExtResource( 2 ) is_baked = false radius = 30.0 [node name="EyeL" type="Polygon2D" parent="Sprites/Root/Body/Head"] position = Vector2( -15, 0 ) color = Color( 0, 0, 0, 1 ) polygon = PoolVector2Array( 7, 5, 6.06218, 8.5, 3.5, 11.0622, -3.0598e-07, 12, -3.5, 11.0622, -6.06218, 8.5, -7, 5, -7, -5, -6.06218, -8.5, -3.5, -11.0622, 8.34742e-08, -12, 3.5, -11.0622, 6.06218, -8.5, 7, -5 ) script = ExtResource( 1 ) is_baked = false size = Vector2( 7, 12 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="EyeR" type="Polygon2D" parent="Sprites/Root/Body/Head"] position = Vector2( 15, 0 ) color = Color( 0, 0, 0, 1 ) polygon = PoolVector2Array( 7, 5, 6.06218, 8.5, 3.5, 11.0622, -3.0598e-07, 12, -3.5, 11.0622, -6.06218, 8.5, -7, 5, -7, -5, -6.06218, -8.5, -3.5, -11.0622, 8.34742e-08, -12, 3.5, -11.0622, 6.06218, -8.5, 7, -5 ) script = ExtResource( 1 ) is_baked = false size = Vector2( 7, 12 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="Legs" type="Node2D" parent="Sprites/Root/Body"] position = Vector2( -6.10352e-05, 4.99993 ) [node name="Left" type="Polygon2D" parent="Sprites/Root/Body/Legs"] rotation = 0.523598 polygon = PoolVector2Array( 10, 40, 8.66025, 45, 5, 48.6603, -4.37114e-07, 50, -5, 48.6603, -8.66025, 45, -10, 40, -10, -8.74228e-07, -8.66025, -5, -5, -8.66025, 1.19249e-07, -10, 5, -8.66025, 8.66025, -5, 10, 1.74846e-06 ) script = ExtResource( 1 ) is_baked = false size = Vector2( 10, 30 ) rect_offset = Vector2( 0, 20 ) radius = Plane( -2, -2, -2, -2 ) points = 4 [node name="Middle" type="Polygon2D" parent="Sprites/Root/Body/Legs"] visible = false position = Vector2( 0, 18 ) polygon = PoolVector2Array( 10, 10, -10, 10, -10, -10, 10, -10 ) script = ExtResource( 1 ) is_baked = false size = Vector2( 10, 10 ) points = 4 [node name="Right" type="Polygon2D" parent="Sprites/Root/Body/Legs"] rotation = -0.523598 polygon = PoolVector2Array( 10, 40, 8.66025, 45, 5, 48.6603, -4.37114e-07, 50, -5, 48.6603, -8.66025, 45, -10, 40, -10, -8.74228e-07, -8.66025, -5, -5, -8.66025, 1.19249e-07, -10, 5, -8.66025, 8.66025, -5, 10, 1.74846e-06 ) script = ExtResource( 1 ) is_baked = false size = Vector2( 10, 30 ) rect_offset = Vector2( 0, 20 ) radius = Plane( -2, -2, -2, -2 ) points = 4 [node name="Wrapper" type="Node2D" parent="."] script = ExtResource( 4 ) image_path = NodePath("../Sprites/Root") ================================================ FILE: src/arcade/Screen.gd ================================================ extends Node2D export var colors : PoolColorArray = [] export var wait_range := Vector2(0.1, 0.6) var clock := 0.0 func _process(delta): clock -= delta if clock < 0: clock = rand_range(wait_range.x, wait_range.y) modulate = colors[randi() % colors.size()] ================================================ FILE: src/arcade/Wrapper.gd ================================================ extends Node2D export var image_path : NodePath = "" onready var image_node := get_node_or_null(image_path) var spr_list := [] var room_size := Vector2(600, 600) var vec = [] func _ready(): process_priority = 1 spr_list = [] for i in 8: var s = image_node.duplicate() add_child(s) spr_list.append(s) # mirrors vec = [] for x in [-1, 0, 1]: for y in [-1, 0, 1]: if !(x == 0 and y == 0): vec.append(Vector2(x, y)) func _physics_process(delta): if !is_instance_valid(image_node): return var sg = image_node.global_position var add = Vector2(room_size.x, room_size.y) * 2.0 for i in spr_list.size(): spr_list[i].scale = image_node.global_scale spr_list[i].rotation = image_node.global_rotation spr_list[i].global_position = sg + (add * vec[i]) ================================================ FILE: src/arcade/maps/0.tscn ================================================ [gd_scene load_steps=12 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=6] [ext_resource path="res://src/arcade/Wrapper.gd" type="Script" id=7] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [sub_resource type="DynamicFont" id=6] size = 230 extra_spacing_top = 5 extra_spacing_bottom = -15 font_data = ExtResource( 6 ) [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -327686, -1610612736, 0, -327685, -1610612736, 0, -327684, -1610612736, 0, -327683, -1610612736, 0, -327682, -1610612736, 0, -393215, -1610612736, 0, -393214, -1610612736, 0, -393213, -1610612736, 0, -393212, -1610612736, 0, -393211, -1610612736, 0, -262150, -1610612736, 0, -262149, -1610612736, 0, -262148, -1610612736, 0, -262147, -1610612736, 0, -262146, -1610612736, 0, -327679, -1610612736, 0, -327678, -1610612736, 0, -327677, -1610612736, 0, -327676, -1610612736, 0, -327675, -1610612736, 0, 196602, -1610612736, 0, 196603, -1610612736, 0, 131076, -1610612736, 0, 131077, -1610612736, 0, 262138, -1610612736, 0, 262139, -1610612736, 0, 262143, -1610612736, 0, 196608, -1610612736, 0, 196612, -1610612736, 0, 196613, -1610612736, 0, 327679, -1610612736, 0, 262144, -1610612736, 0 ) detail = 6 [node name="Wrapper" type="Node2D" parent="."] script = ExtResource( 7 ) image_path = NodePath("../Title") [node name="Title" type="Node2D" parent="."] position = Vector2( -600, -400 ) [node name="Label" type="Label" parent="Title"] margin_right = 1200.0 margin_bottom = 600.0 custom_fonts/font = SubResource( 6 ) text = "WRAP IT UP" align = 1 valign = 1 [node name="Player" parent="." groups=["start"] instance=ExtResource( 4 )] position = Vector2( 0, 250 ) [node name="Candy" parent="." instance=ExtResource( 3 )] position = Vector2( -450, 150 ) [node name="Candy3" parent="." instance=ExtResource( 3 )] position = Vector2( -350, 450 ) [node name="Candy4" parent="." instance=ExtResource( 3 )] position = Vector2( 200, 450 ) ================================================ FILE: src/arcade/maps/1.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -196609, 0, 0, -262144, 0, 0, -131073, 0, 0, -196608, 0, 0, -65537, 0, 0, -131072, 0, 0, -1, 0, 0, -65536, 0, 0, 65535, 0, 0, 0, 0, 0, 131066, 0, 0, 131067, 0, 0, 131068, 0, 0, 131069, 0, 0, 131070, 0, 0, 131071, 0, 0, 65536, 0, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 65541, 0, 0, 196602, 0, 0, 196603, 0, 0, 196604, 0, 0, 196605, 0, 0, 196606, 0, 0, 196607, 0, 0, 131072, 0, 0, 131073, 0, 0, 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0 ) detail = 6 [node name="Player" parent="." groups=["start"] instance=ExtResource( 4 )] position = Vector2( -350, 50 ) [node name="Candy" parent="." instance=ExtResource( 3 )] position = Vector2( 250, 50 ) ================================================ FILE: src/arcade/maps/2.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -196611, 0, 0, -196610, 0, 0, -196609, 0, 0, -262144, 0, 0, -262143, 0, 0, -262142, 0, 0, -131075, 0, 0, -131074, 0, 0, -131073, 0, 0, -196608, 0, 0, -196607, 0, 0, -196606, 0, 0, 196602, 0, 0, 196603, 0, 0, 196604, 0, 0, 196605, 0, 0, 196606, 0, 0, 131073, 0, 0, 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 262138, 0, 0, 262139, 0, 0, 262140, 0, 0, 262141, 0, 0, 262142, 0, 0, 196609, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 4 )] position = Vector2( 250, 50 ) [node name="Candy" parent="." instance=ExtResource( 3 )] position = Vector2( -350, 50 ) [node name="Candy2" parent="." instance=ExtResource( 3 )] position = Vector2( 50, -550 ) ================================================ FILE: src/arcade/maps/2a.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -131077, 0, 0, -131076, 0, 0, -131075, 0, 0, -131074, 0, 0, -131073, 0, 0, -196608, 0, 0, -65541, 0, 0, -65540, 0, 0, -65539, 0, 0, -65538, 0, 0, -65537, 0, 0, -131072, 0, 0, 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 4 )] position = Vector2( 0, -350 ) [node name="Candy" parent="." instance=ExtResource( 3 )] position = Vector2( -400, -350 ) [node name="Candy2" parent="." instance=ExtResource( 3 )] position = Vector2( 350, 150 ) ================================================ FILE: src/arcade/maps/2b.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -131076, 0, 0, -131075, 0, 0, -196606, 0, 0, -196605, 0, 0, -65540, 0, 0, -65539, 0, 0, -131070, 0, 0, -131069, 0, 0, 262143, 0, 0, 196608, 0, 0, 327679, 0, 0, 262144, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 4 )] position = Vector2( 0, 250 ) [node name="Candy" parent="." instance=ExtResource( 3 )] position = Vector2( -300, -350 ) [node name="Candy2" parent="." instance=ExtResource( 3 )] position = Vector2( 300, -350 ) ================================================ FILE: src/arcade/maps/3a.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -196608, 0, 0, -196607, 0, 0, -196606, 0, 0, -131072, 0, 0, -131071, 0, 0, -131070, 0, 0, -3, 0, 0, -2, 0, 0, -1, 0, 0, 65533, 0, 0, 65534, 0, 0, 65535, 0, 0, 131066, 0, 0, 131067, 0, 0, 131068, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 65541, 0, 0, 196602, 0, 0, 196603, 0, 0, 196604, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 4 )] position = Vector2( 350, 50 ) [node name="Candy" parent="." instance=ExtResource( 3 )] position = Vector2( -450, 50 ) [node name="Candy3" parent="." instance=ExtResource( 3 )] position = Vector2( -150, -150 ) [node name="Candy2" parent="." instance=ExtResource( 3 )] position = Vector2( 150, -350 ) ================================================ FILE: src/arcade/maps/3b.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=1] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=4] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 5 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 4 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 3 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -196611, 0, 0, -196610, 0, 0, -262143, 0, 0, -262142, 0, 0, -131075, 0, 0, -131074, 0, 0, -196607, 0, 0, -196606, 0, 0, 196603, 0, 0, 196604, 0, 0, 196607, 0, 0, 131072, 0, 0, 131075, 0, 0, 131076, 0, 0, 262139, 0, 0, 262140, 0, 0, 262143, 0, 0, 196608, 0, 0, 196611, 0, 0, 196612, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 1 )] position = Vector2( 200, -450 ) [node name="Candy" parent="." instance=ExtResource( 2 )] position = Vector2( -400, 150 ) [node name="Candy2" parent="." instance=ExtResource( 2 )] position = Vector2( 0, 150 ) [node name="Candy3" parent="." instance=ExtResource( 2 )] position = Vector2( 400, 150 ) ================================================ FILE: src/arcade/maps/3c.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -327681, 0, 0, -393216, 0, 0, -262145, 0, 0, -327680, 0, 0, -65539, 0, 0, -65538, 0, 0, -65537, 0, 0, -131072, 0, 0, -131071, 0, 0, -131070, 0, 0, -3, 0, 0, -2, 0, 0, -1, 0, 0, -65536, 0, 0, -65535, 0, 0, -65534, 0, 0, 196602, 0, 0, 196603, 0, 0, 196604, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 262138, 0, 0, 262139, 0, 0, 262140, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 327679, 0, 0, 262144, 0, 0, 393215, 0, 0, 327680, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 4 )] position = Vector2( 0, 350 ) [node name="Candy" parent="." instance=ExtResource( 3 )] position = Vector2( -450, 150 ) [node name="Candy2" parent="." instance=ExtResource( 3 )] position = Vector2( -150, -250 ) [node name="Candy3" parent="." instance=ExtResource( 3 )] position = Vector2( 150, -250 ) ================================================ FILE: src/arcade/maps/3d.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -131077, 0, 0, -131076, 0, 0, -131075, 0, 0, -196606, 0, 0, -196605, 0, 0, -196604, 0, 0, 262139, 0, 0, 262140, 0, 0, 262141, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 4 )] position = Vector2( 350, 250 ) [node name="Candy" parent="." instance=ExtResource( 3 )] position = Vector2( -350, -350 ) [node name="Candy2" parent="." instance=ExtResource( 3 )] position = Vector2( 400, -350 ) [node name="Candy3" parent="." instance=ExtResource( 3 )] position = Vector2( -400, 250 ) ================================================ FILE: src/arcade/maps/3e.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -327681, 0, 0, -393216, 0, 0, -262145, 0, 0, -327680, 0, 0, -196609, 0, 0, -262144, 0, 0, -131076, 0, 0, -131075, 0, 0, -131074, 0, 0, -131073, 0, 0, -196608, 0, 0, -65537, 0, 0, -131072, 0, 0, -1, 0, 0, -65536, 0, 0, 65535, 0, 0, 0, 0, 0, 131071, 0, 0, 65536, 0, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 327676, 0, 0, 327677, 0, 0, 327678, 0, 0, 327679, 0, 0, 262144, 0, 0, 262145, 0, 0, 262146, 0, 0, 262147, 0, 0, 393215, 0, 0, 327680, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 4 )] position = Vector2( 250, 350 ) [node name="Candy" parent="." instance=ExtResource( 3 )] position = Vector2( -250, 350 ) [node name="Candy2" parent="." instance=ExtResource( 3 )] position = Vector2( -300, -350 ) [node name="Candy3" parent="." instance=ExtResource( 3 )] position = Vector2( 300, 50 ) ================================================ FILE: src/arcade/maps/4a.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=1] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=4] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 5 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 4 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 3 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -196612, 0, 0, -196611, 0, 0, -196610, 0, 0, -131076, 0, 0, -131075, 0, 0, -131074, 0, 0, -196606, 0, 0, -196605, 0, 0, -65540, 0, 0, -65539, 0, 0, -65538, 0, 0, -131070, 0, 0, -131069, 0, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 196603, 0, 0, 196604, 0, 0, 131076, 0, 0, 262139, 0, 0, 262140, 0, 0, 196612, 0, 0, 262145, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 2 )] position = Vector2( -400, 150 ) [node name="Candy" parent="." instance=ExtResource( 1 )] position = Vector2( -300, -450 ) [node name="Candy2" parent="." instance=ExtResource( 1 )] position = Vector2( 250, 350 ) [node name="Candy3" parent="." instance=ExtResource( 1 )] position = Vector2( 350, 50 ) [node name="Candy4" parent="." instance=ExtResource( 1 )] position = Vector2( 300, -350 ) ================================================ FILE: src/arcade/maps/4b.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=1] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=4] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 5 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 4 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 3 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -131077, 0, 0, -131076, 0, 0, -131073, 0, 0, -196608, 0, 0, -196605, 0, 0, -196604, 0, 0, -65541, 0, 0, -65540, 0, 0, -65537, 0, 0, -131072, 0, 0, -131069, 0, 0, -131068, 0, 0, 262141, 0, 0, 262142, 0, 0, 262143, 0, 0, 196608, 0, 0, 196609, 0, 0, 196610, 0, 0, 327677, 0, 0, 327678, 0, 0, 327679, 0, 0, 262144, 0, 0, 262145, 0, 0, 262146, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 1 )] position = Vector2( -200, 250 ) [node name="Candy" parent="." instance=ExtResource( 2 )] position = Vector2( -400, -350 ) [node name="Candy2" parent="." instance=ExtResource( 2 )] position = Vector2( 0, -350 ) [node name="Candy3" parent="." instance=ExtResource( 2 )] position = Vector2( 400, -350 ) [node name="Candy4" parent="." instance=ExtResource( 2 )] position = Vector2( 200, 250 ) ================================================ FILE: src/arcade/maps/4c.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -393216, 0, 0, -393215, 0, 0, -131074, 0, 0, -131073, 0, 0, -6, 0, 0, -65531, 0, 0, 65530, 0, 0, 0, 0, 0, 1, 0, 0, 5, 0, 0, 262142, 0, 0, 262143, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 4 )] position = Vector2( -550, -150 ) [node name="Candy" parent="." instance=ExtResource( 3 )] position = Vector2( -100, 250 ) [node name="Candy2" parent="." instance=ExtResource( 3 )] position = Vector2( -100, -350 ) [node name="Candy3" parent="." instance=ExtResource( 3 )] position = Vector2( 100, -50 ) [node name="Candy4" parent="." instance=ExtResource( 3 )] position = Vector2( 100, 450 ) ================================================ FILE: src/arcade/maps/4d.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=1] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=4] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 5 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 4 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 3 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( 65530, 0, 0, 65531, 0, 0, 65532, 0, 0, 65533, 0, 0, 65534, 0, 0, 65535, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0, 131066, 0, 0, 131067, 0, 0, 131068, 0, 0, 131069, 0, 0, 131070, 0, 0, 131071, 0, 0, 65536, 0, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 65541, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -50 ) [node name="Candy" parent="." instance=ExtResource( 2 )] position = Vector2( -500, -50 ) [node name="Candy2" parent="." instance=ExtResource( 2 )] position = Vector2( -350, -50 ) [node name="Candy3" parent="." instance=ExtResource( 2 )] position = Vector2( 350, -50 ) [node name="Candy4" parent="." instance=ExtResource( 2 )] position = Vector2( 500, -50 ) ================================================ FILE: src/arcade/maps/5.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -327685, 0, 0, -327684, 0, 0, -327683, 0, 0, -393214, 0, 0, -393213, 0, 0, -393212, 0, 0, -196610, 0, 0, -196609, 0, 0, -262144, 0, 0, -262143, 0, 0, -6, 0, 0, -5, 0, 0, -2, 0, 0, -1, 0, 0, -65536, 0, 0, -65535, 0, 0, -65532, 0, 0, -65531, 0, 0, 65530, 0, 0, 65531, 0, 0, 65534, 0, 0, 65535, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 5, 0, 0, 262142, 0, 0, 262143, 0, 0, 196608, 0, 0, 196609, 0, 0, 393211, 0, 0, 393212, 0, 0, 393213, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 4 )] position = Vector2( 350, 450 ) [node name="Candy" parent="." instance=ExtResource( 3 )] position = Vector2( -350, 450 ) [node name="Candy2" parent="." instance=ExtResource( 3 )] position = Vector2( -50, 250 ) [node name="Candy3" parent="." instance=ExtResource( 3 )] position = Vector2( 0, -150 ) [node name="Candy4" parent="." instance=ExtResource( 3 )] position = Vector2( 100, -450 ) [node name="Candy5" parent="." instance=ExtResource( 3 )] position = Vector2( 500, -150 ) ================================================ FILE: src/arcade/maps/5a.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=1] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=4] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 5 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 4 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 3 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -262150, 0, 0, -262149, 0, 0, -327676, 0, 0, -327675, 0, 0, -196614, 0, 0, -196613, 0, 0, -262140, 0, 0, -262139, 0, 0, -196607, 0, 0, -196606, 0, 0, -196605, 0, 0, -131071, 0, 0, -131070, 0, 0, -131069, 0, 0, -1, 0, 0, -65536, 0, 0, 65535, 0, 0, 0, 0, 0, 131068, 0, 0, 131069, 0, 0, 131070, 0, 0, 196604, 0, 0, 196605, 0, 0, 196606, 0, 0, 262138, 0, 0, 262139, 0, 0, 196608, 0, 0, 196609, 0, 0, 196612, 0, 0, 196613, 0, 0, 327674, 0, 0, 327675, 0, 0, 262148, 0, 0, 262149, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 2 )] position = Vector2( 100, 250 ) [node name="Candy" parent="." instance=ExtResource( 1 )] position = Vector2( -500, 250 ) [node name="Candy2" parent="." instance=ExtResource( 1 )] position = Vector2( -250, 50 ) [node name="Candy3" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -150 ) [node name="Candy4" parent="." instance=ExtResource( 1 )] position = Vector2( 250, -350 ) [node name="Candy5" parent="." instance=ExtResource( 1 )] position = Vector2( 500, -550 ) ================================================ FILE: src/arcade/maps/5b.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -262149, 0, 0, -262148, 0, 0, -327677, 0, 0, -327676, 0, 0, -3, 0, 0, -2, 0, 0, -65535, 0, 0, -65534, 0, 0, 262139, 0, 0, 262140, 0, 0, 196611, 0, 0, 196612, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 4 )] position = Vector2( -200, -150 ) [node name="Candy" parent="." instance=ExtResource( 3 )] position = Vector2( -400, -550 ) [node name="Candy2" parent="." instance=ExtResource( 3 )] position = Vector2( 400, -550 ) [node name="Candy3" parent="." instance=ExtResource( 3 )] position = Vector2( -400, 250 ) [node name="Candy4" parent="." instance=ExtResource( 3 )] position = Vector2( 400, 250 ) [node name="Candy5" parent="." instance=ExtResource( 3 )] position = Vector2( 200, -150 ) ================================================ FILE: src/arcade/maps/6.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=4] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 3 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -327686, 0, 0, -327681, 0, 0, -393216, 0, 0, -393211, 0, 0, -262150, 0, 0, -327675, 0, 0, -131073, 0, 0, -196608, 0, 0, -65542, 0, 0, -65541, 0, 0, -65540, 0, 0, -65537, 0, 0, -131072, 0, 0, -131069, 0, 0, -131068, 0, 0, -131067, 0, 0, -6, 0, 0, -1, 0, 0, -65536, 0, 0, -65531, 0, 0, 65530, 0, 0, 65535, 0, 0, 0, 0, 0, 5, 0, 0, 131071, 0, 0, 65536, 0, 0, 262138, 0, 0, 196613, 0, 0, 327674, 0, 0, 327677, 0, 0, 327678, 0, 0, 327679, 0, 0, 262144, 0, 0, 262145, 0, 0, 262146, 0, 0, 262149, 0, 0, 393210, 0, 0, 393215, 0, 0, 327680, 0, 0, 327685, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 5 )] position = Vector2( 0, -350 ) [node name="Candy" parent="." instance=ExtResource( 4 )] position = Vector2( -450, -250 ) [node name="Candy2" parent="." instance=ExtResource( 4 )] position = Vector2( 450, -250 ) [node name="Candy3" parent="." instance=ExtResource( 4 )] position = Vector2( -200, 350 ) [node name="Candy4" parent="." instance=ExtResource( 4 )] position = Vector2( 0, 350 ) [node name="Candy5" parent="." instance=ExtResource( 4 )] position = Vector2( -550, 250 ) [node name="Candy6" parent="." instance=ExtResource( 4 )] position = Vector2( 200, 350 ) ================================================ FILE: src/arcade/maps/6a.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=4] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 3 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -196614, 0, 0, -196613, 0, 0, -196612, 0, 0, -262141, 0, 0, -262140, 0, 0, -262139, 0, 0, -65537, 0, 0, -131072, 0, 0, 65531, 0, 0, 65532, 0, 0, 65533, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 327676, 0, 0, 327677, 0, 0, 327678, 0, 0, 262145, 0, 0, 262146, 0, 0, 262147, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 5 )] position = Vector2( 0, -250 ) [node name="Candy" parent="." instance=ExtResource( 4 )] position = Vector2( -400, -450 ) [node name="Candy2" parent="." instance=ExtResource( 4 )] position = Vector2( -350, -50 ) [node name="Candy3" parent="." instance=ExtResource( 4 )] position = Vector2( 350, -50 ) [node name="Candy4" parent="." instance=ExtResource( 4 )] position = Vector2( -250, 350 ) [node name="Candy5" parent="." instance=ExtResource( 4 )] position = Vector2( 250, 350 ) [node name="Candy6" parent="." instance=ExtResource( 4 )] position = Vector2( 400, -450 ) ================================================ FILE: src/arcade/maps/7.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=4] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 3 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -262150, 0, 0, -262149, 0, 0, -262146, 0, 0, -262145, 0, 0, -327680, 0, 0, -327679, 0, 0, -327676, 0, 0, -327675, 0, 0, -65541, 0, 0, -65540, 0, 0, -65539, 0, 0, -65538, 0, 0, -131071, 0, 0, -131070, 0, 0, -131069, 0, 0, -131068, 0, 0, 131066, 0, 0, 131067, 0, 0, 131070, 0, 0, 131071, 0, 0, 65536, 0, 0, 65537, 0, 0, 65540, 0, 0, 65541, 0, 0, 327675, 0, 0, 327676, 0, 0, 327677, 0, 0, 327678, 0, 0, 262145, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 5 )] position = Vector2( 0, 50 ) [node name="Candy" parent="." instance=ExtResource( 4 )] position = Vector2( -500, -550 ) [node name="Candy2" parent="." instance=ExtResource( 4 )] position = Vector2( 0, -550 ) [node name="Candy3" parent="." instance=ExtResource( 4 )] position = Vector2( -300, -250 ) [node name="Candy4" parent="." instance=ExtResource( 4 )] position = Vector2( 300, -250 ) [node name="Candy5" parent="." instance=ExtResource( 4 )] position = Vector2( 500, 50 ) [node name="Candy6" parent="." instance=ExtResource( 4 )] position = Vector2( -300, 350 ) [node name="Candy7" parent="." instance=ExtResource( 4 )] position = Vector2( 300, 350 ) ================================================ FILE: src/arcade/maps/7a.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=4] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 1 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 3 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -262145, 0, 0, -327680, 0, 0, -131075, 0, 0, -131074, 0, 0, -196607, 0, 0, -196606, 0, 0, 131068, 0, 0, 131069, 0, 0, 131070, 0, 0, 131071, 0, 0, 65536, 0, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 327675, 0, 0, 327676, 0, 0, 327677, 0, 0, 327679, 0, 0, 262144, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 5 )] position = Vector2( 0, 350 ) [node name="Candy" parent="." instance=ExtResource( 4 )] position = Vector2( -200, -350 ) [node name="Candy2" parent="." instance=ExtResource( 4 )] position = Vector2( 200, -350 ) [node name="Candy3" parent="." instance=ExtResource( 4 )] position = Vector2( -300, 350 ) [node name="Candy4" parent="." instance=ExtResource( 4 )] position = Vector2( -250, 50 ) [node name="Candy5" parent="." instance=ExtResource( 4 )] position = Vector2( 250, 50 ) [node name="Candy6" parent="." instance=ExtResource( 4 )] position = Vector2( 0, -550 ) [node name="Candy7" parent="." instance=ExtResource( 4 )] position = Vector2( 300, 350 ) ================================================ FILE: src/arcade/maps/8.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/arcade/Candy.tscn" type="PackedScene" id=1] [ext_resource path="res://src/arcade/Player.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=4] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 5 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [node name="Map" type="Node2D"] [node name="Back" type="Polygon2D" parent="." groups=["back"]] color = Color( 1, 0, 0, 0.407843 ) polygon = PoolVector2Array( 600, 600, -600, 600, -600, -600, 600, -600 ) script = ExtResource( 4 ) __meta__ = { "_edit_lock_": true } size = Vector2( 600, 600 ) [node name="SolidTileMap" parent="." instance=ExtResource( 3 )] tile_set = SubResource( 2 ) tile_data = PoolIntArray( -327686, 0, 0, -393211, 0, 0, -262149, 0, 0, -262148, 0, 0, -327679, 0, 0, -327678, 0, 0, -327677, 0, 0, -327676, 0, 0, -196613, 0, 0, -196612, 0, 0, -262141, 0, 0, -262140, 0, 0, -131075, 0, 0, -131074, 0, 0, -65539, 0, 0, -65538, 0, 0, -1, 0, 0, -65536, 0, 0, 65535, 0, 0, 0, 0, 0, 65537, 0, 0, 65538, 0, 0, 131073, 0, 0, 131074, 0, 0, 262139, 0, 0, 262140, 0, 0, 262143, 0, 0, 196608, 0, 0, 196611, 0, 0, 196612, 0, 0, 327675, 0, 0, 327676, 0, 0, 262147, 0, 0, 262148, 0, 0, 393210, 0, 0, 327685, 0, 0 ) detail = 6 [node name="Player" parent="." instance=ExtResource( 2 )] position = Vector2( 0, 250 ) [node name="Candy" parent="." instance=ExtResource( 1 )] position = Vector2( -400, -550 ) [node name="Candy2" parent="." instance=ExtResource( 1 )] position = Vector2( -200, -350 ) [node name="Candy3" parent="." instance=ExtResource( 1 )] position = Vector2( 0, -150 ) [node name="Candy4" parent="." instance=ExtResource( 1 )] position = Vector2( 200, 50 ) [node name="Candy5" parent="." instance=ExtResource( 1 )] position = Vector2( 400, 250 ) [node name="Candy6" parent="." instance=ExtResource( 1 )] position = Vector2( 550, 450 ) [node name="Candy7" parent="." instance=ExtResource( 1 )] position = Vector2( -400, 250 ) [node name="Candy8" parent="." instance=ExtResource( 1 )] position = Vector2( 400, -550 ) ================================================ FILE: src/autoload/Audio.gd ================================================ extends Node export var is_refresh := false setget set_refresh var dict = {} onready var music_player := $Music/Music export (Array, AudioStream) var ost = [] var last_song := -1 var music_que = [] export var wait_range := Vector2(10, 90) var wait_clock := 0.0 var wait_time := 10.0 var music_ease := EaseMover.new(1.0, -1) func _ready(): music_player.connect("finished", self, "music_finished") set_refresh() randomize() wait_clock = 4.0 func play(arg = "menu_cursor", from := 1.0, to := -1.0, pos := 0.0): if arg is String and dict.has(arg): arg = dict[arg] if is_instance_valid(arg) and (arg is AudioStreamPlayer or arg is AudioStreamPlayer2D): arg.pitch_scale = from if to < 0 else rand_range(from, to) arg.play(pos) func _physics_process(delta): if wait_clock > 0: wait_clock -= delta if wait_clock <= 0: music_play() var s = music_ease.count(delta, !Shared.is_arcade) if !music_ease.is_last: var m = dict["music_music"] m.volume_db = lerp(-30.0, 0.0, s) if music_ease.clock == 0.0: m.stop() elif music_ease.last == 0.0 and !m.playing: m.play(m.get_playback_position()) func music_finished(): if !Shared.is_arcade: wait_clock = rand_range(wait_range.x, wait_range.y) print("music_finished, wait_clock: ", wait_clock) func music_play(): if music_que.empty(): music_que = range(ost.size()) music_que.erase(last_song) music_que.shuffle() last_song = music_que.pop_front() music_player.stream = ost[last_song] music_player.play() func set_refresh(arg := false): is_refresh = arg dict = {} for i in Shared.get_all_children(self): if i is AudioStreamPlayer or i is AudioStreamPlayer2D: dict[str(get_path_to(i)).to_lower().replace("/", "_")] = i print("Audio.dict refresh: ", dict.keys()) ================================================ FILE: src/autoload/Audio.tscn ================================================ [gd_scene load_steps=37 format=2] [ext_resource path="res://src/autoload/Audio.gd" type="Script" id=1] [ext_resource path="res://media/audio/sfx/coin1.wav" type="AudioStream" id=2] [ext_resource path="res://media/audio/sfx/btn0.wav" type="AudioStream" id=3] [ext_resource path="res://media/audio/sfx/Randomize105.wav" type="AudioStream" id=4] [ext_resource path="res://media/audio/sfx/shine_get.wav" type="AudioStream" id=5] [ext_resource path="res://media/audio/sfx/shine_sparkle.wav" type="AudioStream" id=6] [ext_resource path="res://media/audio/sfx/jump2.wav" type="AudioStream" id=7] [ext_resource path="res://media/audio/sfx/Randomize104.wav" type="AudioStream" id=8] [ext_resource path="res://media/audio/sfx/doorknob.wav" type="AudioStream" id=9] [ext_resource path="res://media/audio/sfx/ziherette1.wav" type="AudioStream" id=10] [ext_resource path="res://media/audio/sfx/jump4.wav" type="AudioStream" id=11] [ext_resource path="res://media/audio/sfx/portal0.wav" type="AudioStream" id=12] [ext_resource path="res://media/audio/sfx/sfx4.wav" type="AudioStream" id=13] [ext_resource path="res://media/audio/sfx/fallout3.wav" type="AudioStream" id=14] [ext_resource path="res://media/audio/sfx/jump3.wav" type="AudioStream" id=15] [ext_resource path="res://media/audio/sfx/slap2.wav" type="AudioStream" id=16] [ext_resource path="res://media/audio/sfx/player_land.wav" type="AudioStream" id=17] [ext_resource path="res://media/audio/sfx/player_jump.wav" type="AudioStream" id=18] [ext_resource path="res://media/audio/sfx/btn3.wav" type="AudioStream" id=19] [ext_resource path="res://media/audio/sfx/piano_high.wav" type="AudioStream" id=20] [ext_resource path="res://media/audio/music/ost1.mp3" type="AudioStream" id=21] [ext_resource path="res://media/audio/music/ost3.mp3" type="AudioStream" id=22] [ext_resource path="res://media/audio/music/ost4.mp3" type="AudioStream" id=23] [ext_resource path="res://media/audio/music/ost2.mp3" type="AudioStream" id=24] [ext_resource path="res://media/audio/sfx/guitar_pluck.wav" type="AudioStream" id=25] [ext_resource path="res://media/audio/sfx/hit0.wav" type="AudioStream" id=26] [ext_resource path="res://media/audio/sfx/door_squeak.wav" type="AudioStream" id=27] [ext_resource path="res://media/audio/sfx/door_close.wav" type="AudioStream" id=28] [ext_resource path="res://media/audio/sfx/key.wav" type="AudioStream" id=29] [ext_resource path="res://media/audio/sfx/fallout2.wav" type="AudioStream" id=30] [ext_resource path="res://media/audio/sfx/jump1.wav" type="AudioStream" id=31] [ext_resource path="res://media/audio/sfx/zap0.wav" type="AudioStream" id=32] [ext_resource path="res://media/audio/music/arcade2.mp3" type="AudioStream" id=33] [ext_resource path="res://media/audio/sfx/oneup1.wav" type="AudioStream" id=34] [ext_resource path="res://media/audio/music/ost6.mp3" type="AudioStream" id=35] [ext_resource path="res://media/audio/music/ost5.mp3" type="AudioStream" id=36] [node name="Audio" type="Node"] pause_mode = 2 script = ExtResource( 1 ) ost = [ ExtResource( 21 ), ExtResource( 24 ), ExtResource( 22 ), ExtResource( 23 ), ExtResource( 36 ), ExtResource( 35 ) ] wait_range = Vector2( 2, 5 ) [node name="Music" type="Node" parent="."] [node name="Music" type="AudioStreamPlayer" parent="Music"] stream = ExtResource( 21 ) bus = "Music" [node name="Arcade" type="AudioStreamPlayer" parent="Music"] stream = ExtResource( 33 ) volume_db = 4.0 bus = "Music" [node name="Menu" type="Node" parent="."] [node name="Cursor" type="AudioStreamPlayer" parent="Menu"] stream = ExtResource( 3 ) bus = "SFX" [node name="Accept" type="AudioStreamPlayer" parent="Menu"] stream = ExtResource( 4 ) bus = "SFX" [node name="Cancel" type="AudioStreamPlayer" parent="Menu"] stream = ExtResource( 2 ) bus = "SFX" [node name="Pause" type="AudioStreamPlayer" parent="Menu"] stream = ExtResource( 7 ) volume_db = -3.0 bus = "SFX" [node name="Joy" type="AudioStreamPlayer" parent="Menu"] stream = ExtResource( 7 ) bus = "SFX" [node name="Joy2" type="AudioStreamPlayer" parent="Menu"] stream = ExtResource( 8 ) bus = "SFX" [node name="Wipe" type="AudioStreamPlayer" parent="Menu"] stream = ExtResource( 12 ) bus = "SFX" [node name="Gem" type="Node" parent="."] pause_mode = 1 [node name="Collect" type="AudioStreamPlayer" parent="Gem"] stream = ExtResource( 5 ) bus = "SFX" [node name="Show" type="AudioStreamPlayer" parent="Gem"] stream = ExtResource( 6 ) bus = "SFX" [node name="Piano" type="AudioStreamPlayer" parent="Gem"] stream = ExtResource( 20 ) bus = "SFX" [node name="Socket" type="AudioStreamPlayer" parent="Gem"] stream = ExtResource( 25 ) bus = "SFX" [node name="Place" type="AudioStreamPlayer" parent="Gem"] stream = ExtResource( 26 ) bus = "SFX" [node name="Clock" type="Node" parent="."] [node name="Collect" type="AudioStreamPlayer" parent="Clock"] stream = ExtResource( 10 ) bus = "SFX" [node name="Door" type="Node" parent="."] [node name="Open" type="AudioStreamPlayer" parent="Door"] stream = ExtResource( 9 ) volume_db = 12.0 bus = "SFX" [node name="Close" type="AudioStreamPlayer" parent="Door"] stream = ExtResource( 28 ) bus = "SFX" [node name="Squeak" type="AudioStreamPlayer" parent="Door"] stream = ExtResource( 27 ) bus = "SFX" [node name="Cam" type="Node" parent="."] [node name="Zoom" type="AudioStreamPlayer" parent="Cam"] pause_mode = 2 stream = ExtResource( 11 ) bus = "SFX" [node name="Player" type="Node" parent="."] pause_mode = 1 [node name="Grab" type="AudioStreamPlayer" parent="Player"] stream = ExtResource( 19 ) bus = "SFX" [node name="Drop" type="AudioStreamPlayer" parent="Player"] stream = ExtResource( 13 ) bus = "SFX" [node name="Push" type="AudioStreamPlayer" parent="Player"] stream = ExtResource( 8 ) volume_db = -5.0 bus = "SFX" [node name="Turn" type="AudioStreamPlayer" parent="Player"] stream = ExtResource( 4 ) volume_db = -5.0 bus = "SFX" [node name="Jump" type="AudioStreamPlayer" parent="Player"] stream = ExtResource( 18 ) bus = "SFX" [node name="Land" type="AudioStreamPlayer" parent="Player"] stream = ExtResource( 17 ) bus = "SFX" [node name="FallOut" type="AudioStreamPlayer" parent="Player"] stream = ExtResource( 14 ) bus = "SFX" [node name="Spike" type="AudioStreamPlayer" parent="Player"] stream = ExtResource( 16 ) bus = "SFX" [node name="Around" type="AudioStreamPlayer" parent="Player"] stream = ExtResource( 15 ) volume_db = -7.0 bus = "SFX" [node name="Peek" type="AudioStreamPlayer" parent="Player"] stream = ExtResource( 13 ) volume_db = -7.0 bus = "SFX" [node name="Arcade" type="Node" parent="."] [node name="Win" type="AudioStreamPlayer" parent="Arcade"] stream = ExtResource( 29 ) bus = "SFX" [node name="Lose" type="AudioStreamPlayer" parent="Arcade"] stream = ExtResource( 30 ) bus = "SFX" [node name="Jump" type="AudioStreamPlayer" parent="Arcade"] stream = ExtResource( 31 ) bus = "SFX" [node name="Hit" type="AudioStreamPlayer" parent="Arcade"] stream = ExtResource( 13 ) bus = "SFX" [node name="Bell" type="AudioStreamPlayer" parent="Arcade"] stream = ExtResource( 32 ) bus = "SFX" [node name="Die" type="AudioStreamPlayer" parent="Arcade"] stream = ExtResource( 30 ) bus = "SFX" [node name="Owie" type="AudioStreamPlayer" parent="Arcade"] stream = ExtResource( 16 ) bus = "SFX" [node name="Boot" type="AudioStreamPlayer" parent="Arcade"] stream = ExtResource( 34 ) bus = "SFX" ================================================ FILE: src/autoload/Cam.gd ================================================ extends Camera2D signal turning(angle) var target_node setget set_target_node onready var target_pos := global_position var is_rotating := true var is_moving := true export var move_speed := 4.8 var screen_size := Vector2(1280, 720) export var turn_offset := Vector2.ZERO var turn_ease := EaseMover.new() var turn_from := 0.0 var turn_to := 0.0 var turn_sign := 1.0 var is_zoom := false var zoom_ease := EaseMover.new() var zoom_from := 1.0 var zoom_to := 1.0 export var zoom_min := 1.33 export var zoom_max := 2.5 var zoom_step := 0 var zoom_steps := 2 var rot_offset := Vector2.ZERO var is_pan := false var pan_ease := EaseMover.new(1.0) signal pan_complete signal moved onready var radial_canvas := $RadialBlur onready var radial_blur := $RadialBlur/ColorRect var is_blur := false var blur_scale = 1.0 func _enter_tree(): Shared.connect("scene_changed", self, "scene_changed") func _ready(): zoom = Vector2.ONE * zoom_min radial_canvas.visible = is_blur func _input(event): if event.is_action_pressed("zoom") and !MenuPause.is_paused and !Wipe.is_wipe and !Cutscene.is_playing and !MenuMakeover.is_open and "world" in Shared.csfn: start_zoom(zoom_step + 1) func _process(delta): # zoom if is_zoom: zoom = Vector2.ONE * lerp(zoom_from, zoom_to, zoom_ease.count(delta)) if zoom_ease.is_complete: is_zoom = false # rotation if is_rotating: if turn_ease.clock < turn_ease.time: rotation = lerp_angle(turn_from, turn_to, turn_ease.count(delta)) emit_signal("turning", rotation) if true and radial_blur: var w = abs(wrapf(turn_ease.smooth() * 2.0, -1.0, 1.0)) var t = lerp_angle(turn_from, turn_to, 1.0) - turn_from radial_blur.material.set_shader_param("blur_angle", t * blur_scale * delta * w) if is_pan: global_position = pan_ease.move(delta) if pan_ease.is_complete: emit_signal("pan_complete") #print("pan_complete") is_pan = false else: # track target if is_instance_valid(target_node): target_pos = target_node.global_position # position if is_moving: global_position = global_position.linear_interpolate(target_pos + turn_offset.rotated(rotation), move_speed * delta) emit_signal("moved") func set_target_node(arg): if is_instance_valid(target_node) and target_node.has_signal("turn_cam"): target_node.disconnect("turn_cam", self, "turn") target_node = arg if is_instance_valid(target_node) and target_node.has_signal("turn_cam"): target_node.connect("turn_cam", self, "turn") func turn(arg): turn_from = rotation turn_to = arg if turn_from != turn_to: turn_ease.clock = 0.0 turn_sign = 1.0 if turn_from < lerp_angle(turn_from, turn_to, 1.0) else -1.0 func start_zoom(arg := 0, is_audio := true, _zmin = zoom_min, _zmax = zoom_max): zoom_step = posmod(arg, zoom_steps + 1) is_zoom = true zoom_ease.clock = 0.0 zoom_from = zoom.x var frac = float(zoom_step) / zoom_steps zoom_to = lerp(_zmin, _zmax, frac) if is_audio: Audio.play("cam_zoom", 0.8, 1.2) func reset_zoom(): is_zoom = false zoom_step = 0 zoom = Vector2.ONE * zoom_min zoom_to = zoom_min func scene_changed(): if is_instance_valid(target_node): snap_to(target_node.global_position, target_node.turn_to) func snap_to(pos, turn): global_position = pos target_pos = pos turn_from = turn turn_to = turn rotation = turn turn_ease.clock = 99 reset_smoothing() force_update_scroll() force_update_transform() func pan(pos : Vector2): pan_ease.clock = 0 is_pan = true target_pos = pos pan_ease.from = global_position pan_ease.to = target_pos pan_ease.time = lerp(0.3, 1.0, clamp(pan_ease.from.distance_to(pan_ease.to) / 100.0, 0, 20) / 20) func blur(arg): is_blur = arg > 0 if radial_canvas: radial_canvas.visible = is_blur var a = posmod(arg, 8) blur_scale = [0.0, 0.5, 1.0, 2.0, 3.0, 5.0, 10.0, 70.0][a] var bsteps = [1.0, 3.0, 4.0, 8.0, 8.0, 8.0, 12.0, 20.0][a] if radial_blur: radial_blur.material.set_shader_param("steps", bsteps) ================================================ FILE: src/autoload/Cam.tscn ================================================ [gd_scene load_steps=4 format=2] [ext_resource path="res://src/autoload/Cam.gd" type="Script" id=1] [ext_resource path="res://src/shader/radial_blur_guy.gdshader" type="Shader" id=2] [sub_resource type="ShaderMaterial" id=2] shader = ExtResource( 2 ) shader_param/blur_angle = 0.0 shader_param/blur_offset = 1.0 shader_param/steps = 8.0 shader_param/aspect = 0.5625 [node name="Cam" type="Camera2D" groups=["game_camera"]] process_priority = 50 rotating = true current = true script = ExtResource( 1 ) [node name="RadialBlur" type="CanvasLayer" parent="."] layer = 5 [node name="ColorRect" type="ColorRect" parent="RadialBlur"] material = SubResource( 2 ) margin_left = 1.0 margin_right = 1281.0 margin_bottom = 720.0 ================================================ FILE: src/autoload/CheatCode.gd ================================================ extends Node var actions := [] var history := [] var codes := {"konami code": "up, up, down, down, left, right, left, right, grab, jump", "big hair": "up, right, down, left, up, right, down, left, up, left, down, right, up, left, down, right", "moon jump": "up, up, up, up, up, up, up, down, up, up, up, up, up, up, up, down", "collect": "up, up, up, down, left, left, left, right, grab, jump"} signal activate(cheat) func _ready(): for i in InputMap.get_actions(): if !i.begins_with("ui_"): actions.append(i) clear_history() func _input(event): if event.is_pressed() and !event.is_echo(): for i in actions: if event.is_action_pressed(i): add(i) func clear_history(): history.clear() for i in 20: history.append("") func add(arg): history.append(arg) history.remove(0) #print(history) for i in codes.keys(): if codes[i] in str(history): print("Cheat Code Activated: ", i) emit_signal("activate", i) clear_history() ================================================ FILE: src/autoload/Clouds.gd ================================================ tool extends Node2D export var is_editor := false setget set_is_editor export var day_clock := 0.0 export var day_time := 420.0 setget set_day_time export var day_scale := 1.0 setget set_day_scale export(Array, Color) var sky_pal = [Color("ffa300"), Color("00e0ff"), Color("0062ff"), Color("ac00ff"), Color("af00bf"), Color("250000")] setget set_sky_pal onready var sky_mat : ShaderMaterial = $BG/ColorRect.material var day_frac = 0.0 var sky_step := 0 var step_time := 1.0 var step_frac := 0.0 onready var canvas_mod := $CanvasModulate onready var hide := $Hide onready var particles := $Hide/Particles2D onready var center := $Sky/Center onready var clouds := $Sky/Center/Clouds onready var clouds1 := $Sky/Center/Clouds1 onready var clouds2 := $Sky/Center/Clouds2 onready var clouds_rain := $Sky/Center/CloudsRain onready var precip := $Precip onready var audio_rain := $AudioRain onready var stars := $Sky/Center/Stars onready var starfield := $Sky/Center/Starfield onready var star_orbit := $Sky/Center/Stars/Orbit onready var star_light := $Sky/Center/Stars/Orbit/Light2D onready var star_energy : float = star_light.energy onready var sun := $Sky/Center/Stars/Orbit/Sun onready var moon := $Sky/Center/Stars/Orbit/Moon onready var moon_mat : ShaderMaterial = moon.material export var orbit_distance := 650.0 export var cloud_speed := 1.0 var cloud_dir := 1.0 var length = 100.0 var cloud_rotation := 0.0 var star_rotation := 0.0 export var cloud_bonus_rings := 5 export var cloud_front_edge = 0.0 export var cloud_rain_range = Vector2(100, 400) export var snow_mat : ParticlesMaterial export var snow_tex : Texture export var rain_mat : ParticlesMaterial export var rain_tex : Texture var sun_frac := 0.5 var moon_frac := 0.5 export var is_rain := false setget set_is_rain var is_snow := false var rain_clock := 60.0 export var rain_range := Vector2(60, 240) export var dry_range := Vector2(60, 720) var precip_list = [] var solve_clock := 0.0 var solve_step := 1.0 var rain_ease := EaseMover.new(7.0) export var color_bright := Color.white export var color_dark := Color("bfbfbf") func _enter_tree(): if Engine.editor_hint: return Shared.connect("scene_changed", self, "scene") Cam.connect("moved", self, "cam_moved") func _ready(): star_light.enabled = !Engine.editor_hint if Engine.editor_hint: return set_sky_pal() hide.visible = false particles.emitting = false particles.visible = false randomize() day_clock = randf() * day_time moon_mat.set_shader_param("time_add", lerp(0.1, 0.9, randf())) yield(Shared, "scene_changed") self.is_rain = randf() < 0.3 func scene(): center.global_position = Shared.boundary_center precip.global_position = Shared.boundary_center length = Shared.boundary_rect.size.length() / 2.0 #print("x: ", Shared.boundary_rect.size.x / 2.0, " y: ", Shared.boundary_rect.size.y / 2.0, " length(): ", Shared.boundary_rect.size.length() / 2.0, " length: ", length) star_orbit.position = Vector2(length + orbit_distance, 0) moon.scale.x = -1 if randf() < 0.5 else 1.0 is_snow = "2A/" in Shared.csfn or "2C/" in Shared.csfn create_clouds() solve_clock = 0.0 if audio_rain: audio_rain.playing = is_rain and !is_snow and !Shared.is_arcade func _process(delta): if Engine.editor_hint and !is_editor: return day_clock = fposmod(day_clock + (delta * day_scale), day_time) day_frac = day_clock / day_time step_frac = fposmod(day_clock, step_time) / step_time sky_step = posmod((day_clock / step_time) + 2, sky_pal.size()) if Shared.is_arcade: return if sky_mat and moon_mat: for i in 2: for m in [sky_mat, moon_mat]: m.set_shader_param("col" + str(i + 1), sky_pal[sky_step - 2 - i].linear_interpolate(sky_pal[sky_step - 1 - i], step_frac)) if Engine.editor_hint: return # visible sun_frac = ease(abs(day_frac - 0.5) * 2.0, -9) moon_frac = 1.0 - sun_frac moon.scale = Vector2.ONE * lerp(0.5, 1.0, moon_frac) sun.scale = Vector2.ONE * lerp(0.8, 1.0, sun_frac) moon_mat.set_shader_param("sun_frac", sun_frac) starfield.modulate.a = moon_frac starfield.visible = moon_frac > 0 var mf = MenuMakeover.fade_ease canvas_mod.color = color_bright.linear_interpolate(color_dark, max(moon_frac - mf.smooth(), 0.0)) if !mf.is_last: star_light.energy = lerp(star_energy, 0.0, mf.smooth()) # rotation star_rotation = day_frac * TAU for i in [stars, starfield]: i.rotation = star_rotation cloud_rotation = fposmod(cloud_rotation + deg2rad(cloud_speed * delta * cloud_dir * day_scale), TAU) for i in [clouds, clouds1, clouds2, clouds_rain, precip]: i.rotation = cloud_rotation # rain var s = rain_ease.count(delta, is_rain and !is_snow and Shared.is_weather) if !rain_ease.is_last: audio_rain.volume_db = lerp(-20, 4.0, s) if rain_ease.clock == 0.0: audio_rain.stop() func cam_moved(): # parallax var par = Cam.global_position - Shared.boundary_center clouds.position = par * 0.15 clouds1.position = par * 0.3 clouds2.position = par * 0.6 starfield.position = par * 0.9 func _physics_process(delta): if Engine.editor_hint or Shared.is_arcade: return rain_clock -= delta * day_scale if rain_clock < 0: self.is_rain = !is_rain if is_rain: solve_clock -= delta * day_scale if solve_clock < 0: solve_clock += solve_step solve_fall() func set_is_editor(arg := is_editor): is_editor = arg if !is_editor: day_clock = 0.0 if sky_mat: sky_mat.set_shader_param("col1", sky_pal[0]) sky_mat.set_shader_param("col2", sky_pal[1]) func set_sky_pal(arg := sky_pal): sky_pal = arg set_day_time() func set_day_time(arg := day_time): day_time = abs(arg) step_time = day_time / max(sky_pal.size(), 1.0) func set_day_scale(arg := day_scale): day_scale = arg for i in precip_list: i.speed_scale = max(1.0, day_scale) func set_is_rain(arg := is_rain): is_rain = arg if Engine.editor_hint: return var vec = rain_range if is_rain else dry_range rain_clock = rand_range(vec.x, vec.y) if is_rain and audio_rain: audio_rain.play(audio_rain.get_playback_position()) #print("is_rain: ", is_rain, " audio: ", audio_rain, " precip_list: ", precip_list.size()) for i in precip_list: i.emitting = is_rain solve_fall() func set_is_weather(_visible := true): if _visible: for i in precip_list: i.visible = Shared.is_weather func create_clouds(): cloud_dir = (-1.0 if randf() > 0.5 else 1.0) * rand_range(0.6, 1.0) precip_list = [] var pi = 0 var pc = precip.get_children() var ps = pc.size() var layers = [[], [], [], []] for x in 0 if Shared.is_arcade else( (length / 50.0) + cloud_bonus_rings): for y in max(3, x): var angle = rand_range(0.0, TAU) var scl = Vector2.ONE * rand_range(0.25, 2.0) var dist = ((x + 2) * 200) + rand_range(0.0, 100.0) var pos = Vector2(dist, 0).rotated(angle) var edge = dist - (scl.x * 200.0) - length var way_back := randf() > 0.5 var is_front = edge > cloud_front_edge var is_precip = edge > cloud_rain_range.x and edge < cloud_rain_range.y if !is_precip and is_front: is_front = randf() > 0.5 var layer = 3 if is_precip else 0 if is_front else 2 if way_back else 1 var t = Transform2D(randf() * TAU, Vector2.ZERO) t = t.scaled(scl) t.origin = pos layers[layer].append(t) if is_precip: var p = null if pi < ps: p = pc[pi] pi += 1 else: p = particles.duplicate() precip.add_child(p) p.owner = precip p.amount = scl.x * (200 if is_snow else 100) p.texture = snow_tex if is_snow else rain_tex p.process_material = (snow_mat if is_snow else rain_mat).duplicate() p.process_material.emission_sphere_radius = scl.x * 150.0 p.process_material.emission_box_extents = Vector3(scl.x * 175.0, 100, 0) p.position = pos p.rotation = angle + (PI/2.0) p.visible = Shared.is_weather p.emitting = is_rain precip_list.append(p) # clouds for i in 4: var mesh = [clouds, clouds1, clouds2, clouds_rain][i].multimesh var c = layers[i].size() mesh.instance_count = c for x in c: mesh.set_instance_transform_2d(x, layers[i][x]) # particles if pi < ps: for a in range(max(pi, 0), ps): pc[a].visible = false pc[a].emitting = false func solve_fall(): for i in precip_list: var r = i.get_child(0) var rp = r.get_collision_point() var d = r.global_position.distance_to(rp) i.lifetime = (d / i.process_material.initial_velocity) ================================================ FILE: src/autoload/Clouds.tscn ================================================ [gd_scene load_steps=35 format=2] [ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=1] [ext_resource path="res://src/autoload/Clouds.gd" type="Script" id=2] [ext_resource path="res://src/class/shape/TreeTop.gd" type="Script" id=3] [ext_resource path="res://src/shader/moon.gdshader" type="Shader" id=4] [ext_resource path="res://media/image/box/round_rect100.png" type="Texture" id=5] [ext_resource path="res://media/image/details/raindrop2.svg" type="Texture" id=6] [ext_resource path="res://media/image/details/circle100.png" type="Texture" id=7] [ext_resource path="res://media/image/details/star.svg" type="Texture" id=8] [ext_resource path="res://media/audio/sfx/mixkit-light-rain-looping-1249.wav" type="AudioStream" id=9] [ext_resource path="res://media/image/details/circle.svg" type="Texture" id=10] [ext_resource path="res://src/shader/sky.gdshader" type="Shader" id=11] [ext_resource path="res://src/class/shape/Poly2Mesh.gd" type="Script" id=14] [sub_resource type="Gradient" id=12] offsets = PoolRealArray( 0, 0.05, 0.95, 1 ) colors = PoolColorArray( 1, 1, 1, 0, 1, 1, 1, 0.9, 1, 1, 1, 0.9, 1, 1, 1, 0 ) [sub_resource type="GradientTexture" id=11] gradient = SubResource( 12 ) [sub_resource type="Curve" id=14] _data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.1, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.956989, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] [sub_resource type="CurveTexture" id=15] curve = SubResource( 14 ) [sub_resource type="ParticlesMaterial" id=16] emission_shape = 1 emission_sphere_radius = 150.0 flag_disable_z = true direction = Vector3( 0, 1, 0 ) spread = 22.5 gravity = Vector3( 0, 0, 0 ) initial_velocity = 50.0 orbit_velocity = 0.0 orbit_velocity_random = 0.0 scale = 0.05 scale_random = 0.02 scale_curve = SubResource( 15 ) color_ramp = SubResource( 11 ) [sub_resource type="ParticlesMaterial" id=17] emission_shape = 1 emission_sphere_radius = 150.0 flag_disable_z = true direction = Vector3( 0, 1, 0 ) spread = 5.0 gravity = Vector3( 0, 0, 0 ) initial_velocity = 200.0 orbit_velocity = 0.0 orbit_velocity_random = 0.0 scale = 0.15 scale_random = 0.02 scale_curve = SubResource( 15 ) color = Color( 0, 0.909804, 1, 0.74902 ) color_ramp = SubResource( 11 ) [sub_resource type="ShaderMaterial" id=2] shader = ExtResource( 11 ) shader_param/col1 = Color( 1, 0.639216, 0, 1 ) shader_param/col2 = Color( 0, 0.878431, 1, 1 ) [sub_resource type="CanvasItemMaterial" id=18] blend_mode = 1 [sub_resource type="Curve" id=19] max_value = 2.0 _data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.1, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.457233, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.5, 2 ), 0.0, 0.0, 0, 0, Vector2( 0.55755, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.9, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] [sub_resource type="CurveTexture" id=5] curve = SubResource( 19 ) [sub_resource type="ParticlesMaterial" id=20] emission_shape = 1 emission_sphere_radius = 2200.0 flag_disable_z = true gravity = Vector3( 0, 0, 0 ) orbit_velocity = 0.0 orbit_velocity_random = 0.0 angle = 360.0 angle_random = 1.0 scale = 0.1 scale_random = 0.1 scale_curve = SubResource( 5 ) [sub_resource type="CanvasItemMaterial" id=26] blend_mode = 1 [sub_resource type="ArrayMesh" id=31] surfaces/0 = { "aabb": AABB( -200, -200, 0, 400, 400, 1e-05 ), "array_data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 81, 117, 28, 67, 60, 157, 129, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 67, 154, 30, 89, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 67, 154, 30, 89, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 67, 217, 38, 28, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 67, 217, 38, 28, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 67, 198, 61, 163, 193, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 67, 198, 61, 163, 193, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 67, 198, 61, 163, 65, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 67, 198, 61, 163, 65, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 67, 217, 38, 28, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 67, 217, 38, 28, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 67, 154, 30, 89, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 67, 154, 30, 89, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 79, 117, 28, 67, 69, 157, 129, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 79, 117, 28, 67, 69, 157, 129, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 100, 143, 33, 67, 240, 151, 169, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 100, 143, 33, 67, 240, 151, 169, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 7, 157, 32, 67, 146, 207, 210, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 7, 157, 32, 67, 146, 207, 210, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 67, 165, 175, 249, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 67, 165, 175, 249, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 222, 107, 13, 67, 222, 107, 13, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 222, 107, 13, 67, 222, 107, 13, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 166, 175, 249, 66, 72, 179, 25, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 166, 175, 249, 66, 72, 179, 25, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 146, 207, 210, 66, 7, 157, 32, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 146, 207, 210, 66, 7, 157, 32, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 241, 151, 169, 66, 100, 143, 33, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 241, 151, 169, 66, 100, 143, 33, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 59, 157, 129, 66, 81, 117, 28, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 59, 157, 129, 66, 81, 117, 28, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 154, 30, 89, 66, 91, 51, 46, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 154, 30, 89, 66, 91, 51, 46, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 216, 38, 28, 66, 140, 26, 60, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 216, 38, 28, 66, 140, 26, 60, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 193, 61, 163, 65, 188, 245, 68, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 193, 61, 163, 65, 188, 245, 68, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 204, 171, 18, 183, 0, 0, 72, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 204, 171, 18, 183, 0, 0, 72, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 202, 61, 163, 193, 188, 245, 68, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 202, 61, 163, 193, 188, 245, 68, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 217, 38, 28, 194, 140, 26, 60, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 217, 38, 28, 194, 140, 26, 60, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 156, 30, 89, 194, 91, 51, 46, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 156, 30, 89, 194, 91, 51, 46, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 69, 157, 129, 194, 80, 117, 28, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 69, 157, 129, 194, 80, 117, 28, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 240, 151, 169, 194, 100, 143, 33, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 240, 151, 169, 194, 100, 143, 33, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 146, 207, 210, 194, 7, 157, 32, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 146, 207, 210, 194, 7, 157, 32, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 164, 175, 249, 194, 72, 179, 25, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 164, 175, 249, 194, 72, 179, 25, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 222, 107, 13, 195, 222, 107, 13, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 222, 107, 13, 195, 222, 107, 13, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 195, 166, 175, 249, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 195, 166, 175, 249, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 7, 157, 32, 195, 146, 207, 210, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 7, 157, 32, 195, 146, 207, 210, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 100, 143, 33, 195, 242, 151, 169, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 100, 143, 33, 195, 242, 151, 169, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 81, 117, 28, 195, 59, 157, 129, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 81, 117, 28, 195, 59, 157, 129, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 195, 152, 30, 89, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 195, 152, 30, 89, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 195, 212, 38, 28, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 195, 212, 38, 28, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 195, 193, 61, 163, 65, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 195, 193, 61, 163, 65, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 72, 195, 204, 171, 146, 183, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 72, 195, 204, 171, 146, 183, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 195, 203, 61, 163, 193, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 195, 203, 61, 163, 193, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 195, 221, 38, 28, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 195, 221, 38, 28, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 195, 157, 30, 89, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 195, 157, 30, 89, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 80, 117, 28, 195, 67, 157, 129, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 80, 117, 28, 195, 67, 157, 129, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 100, 143, 33, 195, 240, 151, 169, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 100, 143, 33, 195, 240, 151, 169, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 8, 157, 32, 195, 144, 207, 210, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 8, 157, 32, 195, 144, 207, 210, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 195, 165, 175, 249, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 195, 165, 175, 249, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 223, 107, 13, 195, 221, 107, 13, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 223, 107, 13, 195, 221, 107, 13, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 166, 175, 249, 194, 72, 179, 25, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 166, 175, 249, 194, 72, 179, 25, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 147, 207, 210, 194, 6, 157, 32, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 147, 207, 210, 194, 6, 157, 32, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 243, 151, 169, 194, 99, 143, 33, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 243, 151, 169, 194, 99, 143, 33, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 60, 157, 129, 194, 81, 117, 28, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 60, 157, 129, 194, 81, 117, 28, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 156, 30, 89, 194, 91, 51, 46, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 156, 30, 89, 194, 91, 51, 46, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 221, 38, 28, 194, 139, 26, 60, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 221, 38, 28, 194, 139, 26, 60, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 193, 61, 163, 193, 188, 245, 68, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 193, 61, 163, 193, 188, 245, 68, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 148, 13, 32, 54, 0, 0, 72, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 148, 13, 32, 54, 0, 0, 72, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 195, 61, 163, 65, 188, 245, 68, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 195, 61, 163, 65, 188, 245, 68, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 214, 38, 28, 66, 140, 26, 60, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 214, 38, 28, 66, 140, 26, 60, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 156, 30, 89, 66, 91, 51, 46, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 156, 30, 89, 66, 91, 51, 46, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 66, 157, 129, 66, 80, 117, 28, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 66, 157, 129, 66, 80, 117, 28, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 240, 151, 169, 66, 100, 143, 33, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 240, 151, 169, 66, 100, 143, 33, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 144, 207, 210, 66, 8, 157, 32, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 144, 207, 210, 66, 8, 157, 32, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 163, 175, 249, 66, 73, 179, 25, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 163, 175, 249, 66, 73, 179, 25, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 220, 107, 13, 67, 224, 107, 13, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 220, 107, 13, 67, 224, 107, 13, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 67, 166, 175, 249, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 67, 166, 175, 249, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 6, 157, 32, 67, 147, 207, 210, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 6, 157, 32, 67, 147, 207, 210, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 98, 143, 33, 67, 243, 151, 169, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 98, 143, 33, 67, 243, 151, 169, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 81, 117, 28, 67, 60, 157, 129, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0 ), "array_index_data": PoolByteArray( ), "blend_shape_data": [ ], "format": 2194457, "index_count": 0, "primitive": 4, "skeleton_aabb": [ ], "vertex_count": 192 } [sub_resource type="MultiMesh" id=32] mesh = SubResource( 31 ) [sub_resource type="MultiMesh" id=27] mesh = SubResource( 31 ) [sub_resource type="CanvasItemMaterial" id=33] blend_mode = 1 [sub_resource type="ArrayMesh" id=34] surfaces/0 = { "aabb": AABB( -200, -200, 0, 400, 400, 1e-05 ), "array_data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 81, 117, 28, 67, 60, 157, 129, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 67, 154, 30, 89, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 67, 154, 30, 89, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 67, 217, 38, 28, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 67, 217, 38, 28, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 67, 198, 61, 163, 193, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 67, 198, 61, 163, 193, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 67, 198, 61, 163, 65, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 67, 198, 61, 163, 65, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 67, 217, 38, 28, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 67, 217, 38, 28, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 67, 154, 30, 89, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 67, 154, 30, 89, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 79, 117, 28, 67, 69, 157, 129, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 79, 117, 28, 67, 69, 157, 129, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 100, 143, 33, 67, 240, 151, 169, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 100, 143, 33, 67, 240, 151, 169, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 7, 157, 32, 67, 146, 207, 210, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 7, 157, 32, 67, 146, 207, 210, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 67, 165, 175, 249, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 67, 165, 175, 249, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 222, 107, 13, 67, 222, 107, 13, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 222, 107, 13, 67, 222, 107, 13, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 166, 175, 249, 66, 72, 179, 25, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 166, 175, 249, 66, 72, 179, 25, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 146, 207, 210, 66, 7, 157, 32, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 146, 207, 210, 66, 7, 157, 32, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 241, 151, 169, 66, 100, 143, 33, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 241, 151, 169, 66, 100, 143, 33, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 59, 157, 129, 66, 81, 117, 28, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 59, 157, 129, 66, 81, 117, 28, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 154, 30, 89, 66, 91, 51, 46, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 154, 30, 89, 66, 91, 51, 46, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 216, 38, 28, 66, 140, 26, 60, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 216, 38, 28, 66, 140, 26, 60, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 193, 61, 163, 65, 188, 245, 68, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 193, 61, 163, 65, 188, 245, 68, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 204, 171, 18, 183, 0, 0, 72, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 204, 171, 18, 183, 0, 0, 72, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 202, 61, 163, 193, 188, 245, 68, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 202, 61, 163, 193, 188, 245, 68, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 217, 38, 28, 194, 140, 26, 60, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 217, 38, 28, 194, 140, 26, 60, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 156, 30, 89, 194, 91, 51, 46, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 156, 30, 89, 194, 91, 51, 46, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 69, 157, 129, 194, 80, 117, 28, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 69, 157, 129, 194, 80, 117, 28, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 240, 151, 169, 194, 100, 143, 33, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 240, 151, 169, 194, 100, 143, 33, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 146, 207, 210, 194, 7, 157, 32, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 146, 207, 210, 194, 7, 157, 32, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 164, 175, 249, 194, 72, 179, 25, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 164, 175, 249, 194, 72, 179, 25, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 222, 107, 13, 195, 222, 107, 13, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 222, 107, 13, 195, 222, 107, 13, 67, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 195, 166, 175, 249, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 195, 166, 175, 249, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 7, 157, 32, 195, 146, 207, 210, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 7, 157, 32, 195, 146, 207, 210, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 100, 143, 33, 195, 242, 151, 169, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 100, 143, 33, 195, 242, 151, 169, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 81, 117, 28, 195, 59, 157, 129, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 81, 117, 28, 195, 59, 157, 129, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 195, 152, 30, 89, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 195, 152, 30, 89, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 195, 212, 38, 28, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 195, 212, 38, 28, 66, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 195, 193, 61, 163, 65, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 195, 193, 61, 163, 65, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 72, 195, 204, 171, 146, 183, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 72, 195, 204, 171, 146, 183, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 195, 203, 61, 163, 193, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 188, 245, 68, 195, 203, 61, 163, 193, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 195, 221, 38, 28, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 140, 26, 60, 195, 221, 38, 28, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 195, 157, 30, 89, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 91, 51, 46, 195, 157, 30, 89, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 80, 117, 28, 195, 67, 157, 129, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 80, 117, 28, 195, 67, 157, 129, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 100, 143, 33, 195, 240, 151, 169, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 100, 143, 33, 195, 240, 151, 169, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 8, 157, 32, 195, 144, 207, 210, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 8, 157, 32, 195, 144, 207, 210, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 195, 165, 175, 249, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 195, 165, 175, 249, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 223, 107, 13, 195, 221, 107, 13, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 223, 107, 13, 195, 221, 107, 13, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 166, 175, 249, 194, 72, 179, 25, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 166, 175, 249, 194, 72, 179, 25, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 147, 207, 210, 194, 6, 157, 32, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 147, 207, 210, 194, 6, 157, 32, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 243, 151, 169, 194, 99, 143, 33, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 243, 151, 169, 194, 99, 143, 33, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 60, 157, 129, 194, 81, 117, 28, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 60, 157, 129, 194, 81, 117, 28, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 156, 30, 89, 194, 91, 51, 46, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 156, 30, 89, 194, 91, 51, 46, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 221, 38, 28, 194, 139, 26, 60, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 221, 38, 28, 194, 139, 26, 60, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 193, 61, 163, 193, 188, 245, 68, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 193, 61, 163, 193, 188, 245, 68, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 148, 13, 32, 54, 0, 0, 72, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 148, 13, 32, 54, 0, 0, 72, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 195, 61, 163, 65, 188, 245, 68, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 195, 61, 163, 65, 188, 245, 68, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 214, 38, 28, 66, 140, 26, 60, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 214, 38, 28, 66, 140, 26, 60, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 156, 30, 89, 66, 91, 51, 46, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 156, 30, 89, 66, 91, 51, 46, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 66, 157, 129, 66, 80, 117, 28, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 66, 157, 129, 66, 80, 117, 28, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 240, 151, 169, 66, 100, 143, 33, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 240, 151, 169, 66, 100, 143, 33, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 144, 207, 210, 66, 8, 157, 32, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 144, 207, 210, 66, 8, 157, 32, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 163, 175, 249, 66, 73, 179, 25, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 163, 175, 249, 66, 73, 179, 25, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 220, 107, 13, 67, 224, 107, 13, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 220, 107, 13, 67, 224, 107, 13, 195, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 67, 166, 175, 249, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 72, 179, 25, 67, 166, 175, 249, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 6, 157, 32, 67, 147, 207, 210, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 6, 157, 32, 67, 147, 207, 210, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 98, 143, 33, 67, 243, 151, 169, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 98, 143, 33, 67, 243, 151, 169, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 81, 117, 28, 67, 60, 157, 129, 194, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0 ), "array_index_data": PoolByteArray( ), "blend_shape_data": [ ], "format": 2194457, "index_count": 0, "primitive": 4, "skeleton_aabb": [ ], "vertex_count": 192 } [sub_resource type="MultiMesh" id=25] instance_count = 1 mesh = SubResource( 34 ) transform_2d_array = PoolVector2Array( 1, 0, 0, 1, 0, 0 ) [sub_resource type="Curve" id=22] _data = [ Vector2( 0, 1 ), 0.0, -0.527273, 0, 1, Vector2( 1, 0.472727 ), -0.527273, 0.0, 1, 0 ] [sub_resource type="ShaderMaterial" id=4] shader = ExtResource( 4 ) shader_param/point = Vector2( 1.5, 0.5 ) shader_param/radius = 0.5 shader_param/outside_color = Color( 1, 1, 0, 1 ) shader_param/inside_color = Color( 0.1, 0.1, 0, 1 ) shader_param/sun_color = Color( 1, 0.866667, 0, 1 ) shader_param/col1 = Color( 0, 0.384314, 1, 1 ) shader_param/col2 = Color( 0.67451, 0, 1, 1 ) shader_param/sun_frac = 0.0 shader_param/time_scale = 0.003 shader_param/time_add = 0.5 [sub_resource type="CanvasItemMaterial" id=36] blend_mode = 1 [sub_resource type="MultiMesh" id=35] mesh = SubResource( 34 ) [node name="Clouds" type="Node2D"] z_index = -50 z_as_relative = false script = ExtResource( 2 ) day_clock = 225.0 orbit_distance = 400.0 cloud_bonus_rings = 2 snow_mat = SubResource( 16 ) snow_tex = ExtResource( 7 ) rain_mat = SubResource( 17 ) rain_tex = ExtResource( 6 ) color_dark = Color( 0.92, 0.92, 1, 1 ) [node name="BG" type="CanvasLayer" parent="."] layer = -5 [node name="ColorRect" type="ColorRect" parent="BG"] material = SubResource( 2 ) anchor_right = 1.0 anchor_bottom = 1.0 __meta__ = { "_edit_lock_": true } [node name="Sky" type="CanvasLayer" parent="."] layer = -4 follow_viewport_enable = true [node name="Center" type="Node2D" parent="Sky"] [node name="Starfield" type="Particles2D" parent="Sky/Center"] modulate = Color( 1, 1, 1, 0.5 ) material = SubResource( 18 ) amount = 1100 lifetime = 30.0 preprocess = 30.0 visibility_rect = Rect2( -3000, -3000, 6000, 6000 ) process_material = SubResource( 20 ) texture = ExtResource( 8 ) [node name="Clouds2" type="MultiMeshInstance2D" parent="Sky/Center"] modulate = Color( 1, 1, 1, 0.3 ) light_mask = 0 material = SubResource( 26 ) multimesh = SubResource( 32 ) [node name="Clouds1" type="MultiMeshInstance2D" parent="Sky/Center"] modulate = Color( 1, 1, 1, 0.3 ) light_mask = 0 material = SubResource( 26 ) multimesh = SubResource( 27 ) [node name="Clouds" type="MultiMeshInstance2D" parent="Sky/Center"] modulate = Color( 1, 1, 1, 0.8 ) light_mask = 0 material = SubResource( 33 ) multimesh = SubResource( 25 ) [node name="Stars" type="Node2D" parent="Sky/Center"] [node name="Orbit" type="Node2D" parent="Sky/Center/Stars"] position = Vector2( 500, 0 ) [node name="Sun" type="Node2D" parent="Sky/Center/Stars/Orbit"] [node name="Line2D" type="Line2D" parent="Sky/Center/Stars/Orbit/Sun"] points = PoolVector2Array( 75, 0, 100, 0 ) width = 30.0 width_curve = SubResource( 22 ) default_color = Color( 1, 1, 0, 1 ) joint_mode = 2 begin_cap_mode = 2 end_cap_mode = 2 round_precision = 5 [node name="Line2D2" type="Line2D" parent="Sky/Center/Stars/Orbit/Sun"] rotation = 0.785397 points = PoolVector2Array( 75, 0, 100, 0 ) width = 30.0 width_curve = SubResource( 22 ) default_color = Color( 1, 1, 0, 1 ) joint_mode = 2 begin_cap_mode = 2 end_cap_mode = 2 round_precision = 5 [node name="Line2D3" type="Line2D" parent="Sky/Center/Stars/Orbit/Sun"] rotation = 1.57079 points = PoolVector2Array( 75, 0, 100, 0 ) width = 30.0 width_curve = SubResource( 22 ) default_color = Color( 1, 1, 0, 1 ) joint_mode = 2 begin_cap_mode = 2 end_cap_mode = 2 round_precision = 5 [node name="Line2D4" type="Line2D" parent="Sky/Center/Stars/Orbit/Sun"] rotation = 2.35619 points = PoolVector2Array( 75, 0, 100, 0 ) width = 30.0 width_curve = SubResource( 22 ) default_color = Color( 1, 1, 0, 1 ) joint_mode = 2 begin_cap_mode = 2 end_cap_mode = 2 round_precision = 5 [node name="Line2D5" type="Line2D" parent="Sky/Center/Stars/Orbit/Sun"] rotation = 3.14159 points = PoolVector2Array( 75, 0, 100, 0 ) width = 30.0 width_curve = SubResource( 22 ) default_color = Color( 1, 1, 0, 1 ) joint_mode = 2 begin_cap_mode = 2 end_cap_mode = 2 round_precision = 5 [node name="Line2D6" type="Line2D" parent="Sky/Center/Stars/Orbit/Sun"] rotation = -2.3562 points = PoolVector2Array( 75, 0, 100, 0 ) width = 30.0 width_curve = SubResource( 22 ) default_color = Color( 1, 1, 0, 1 ) joint_mode = 2 begin_cap_mode = 2 end_cap_mode = 2 round_precision = 5 [node name="Line2D7" type="Line2D" parent="Sky/Center/Stars/Orbit/Sun"] rotation = -1.57081 points = PoolVector2Array( 75, 0, 100, 0 ) width = 30.0 width_curve = SubResource( 22 ) default_color = Color( 1, 1, 0, 1 ) joint_mode = 2 begin_cap_mode = 2 end_cap_mode = 2 round_precision = 5 [node name="Line2D8" type="Line2D" parent="Sky/Center/Stars/Orbit/Sun"] rotation = -0.785405 points = PoolVector2Array( 75, 0, 100, 0 ) width = 30.0 width_curve = SubResource( 22 ) default_color = Color( 1, 1, 0, 1 ) joint_mode = 2 begin_cap_mode = 2 end_cap_mode = 2 round_precision = 5 [node name="Moon" type="Polygon2D" parent="Sky/Center/Stars/Orbit"] light_mask = 0 material = SubResource( 4 ) rotation = 1.57079 scale = Vector2( 0.5, 0.5 ) texture = ExtResource( 5 ) texture_offset = Vector2( 100, 100 ) texture_scale = Vector2( 0.5, 0.5 ) polygon = PoolVector2Array( 100, 0, 92.3879, 38.2683, 70.7107, 70.7107, 38.2683, 92.3879, -4.37114e-06, 100, -38.2683, 92.388, -70.7107, 70.7107, -92.3879, 38.2683, -100, -8.74228e-06, -92.3879, -38.2683, -70.7107, -70.7107, -38.2684, -92.3879, 1.19249e-06, -100, 38.2684, -92.3879, 70.7107, -70.7107, 92.388, -38.2683 ) script = ExtResource( 1 ) radius = 100.0 [node name="Light2D" type="Light2D" parent="Sky/Center/Stars/Orbit"] enabled = false texture = ExtResource( 10 ) texture_scale = 20.0 color = Color( 1, 1, 0, 1 ) energy = 0.4 shadow_enabled = true shadow_buffer_size = 4096 shadow_gradient_length = 17.0 __meta__ = { "_edit_lock_": true } [node name="CloudsRain" type="MultiMeshInstance2D" parent="Sky/Center"] modulate = Color( 1, 1, 1, 0.8 ) light_mask = 0 material = SubResource( 36 ) multimesh = SubResource( 35 ) [node name="Precip" type="Node2D" parent="."] z_as_relative = false [node name="CanvasModulate" type="CanvasModulate" parent="."] [node name="AudioRain" type="AudioStreamPlayer" parent="."] stream = ExtResource( 9 ) volume_db = 4.0 bus = "Weather" [node name="Hide" type="Node2D" parent="."] [node name="Poly2Mesh" type="Node2D" parent="Hide"] visible = false script = ExtResource( 14 ) array_mesh = SubResource( 34 ) polygon_path = NodePath("Cloud") mesh_path = NodePath("../../Sky/Center/Clouds") [node name="Cloud" type="Polygon2D" parent="Hide/Poly2Mesh"] polygon = PoolVector2Array( 156.458, -64.8071, 174.201, -54.2799, 188.104, -39.0379, 196.96, -20.4052, 200, 0, 196.96, 20.4052, 188.104, 39.0379, 174.201, 54.2799, 156.458, 64.8072, 161.56, 84.7968, 160.613, 105.405, 153.7, 124.843, 141.421, 141.421, 124.843, 153.7, 105.405, 160.613, 84.7968, 161.56, 64.8071, 156.458, 54.2799, 174.201, 39.0379, 188.104, 20.4052, 196.96, -8.74228e-06, 200, -20.4052, 196.96, -39.0379, 188.104, -54.2799, 174.201, -64.8072, 156.458, -84.7968, 161.56, -105.405, 160.613, -124.843, 153.7, -141.421, 141.421, -153.7, 124.843, -160.613, 105.405, -161.56, 84.7968, -156.458, 64.8071, -174.201, 54.2799, -188.104, 39.0379, -196.96, 20.4052, -200, -1.74846e-05, -196.96, -20.4052, -188.104, -39.038, -174.201, -54.2799, -156.458, -64.8072, -161.56, -84.7968, -160.613, -105.405, -153.7, -124.843, -141.421, -141.421, -124.843, -153.7, -105.405, -160.613, -84.7968, -161.56, -64.8071, -156.458, -54.2799, -174.201, -39.038, -188.104, -20.4052, -196.96, 2.38498e-06, -200, 20.4052, -196.96, 39.0379, -188.104, 54.2799, -174.201, 64.8071, -156.458, 84.7968, -161.56, 105.405, -160.613, 124.843, -153.7, 141.421, -141.421, 153.7, -124.843, 160.613, -105.405, 161.56, -84.7968 ) script = ExtResource( 3 ) [node name="Particles2D" type="Particles2D" parent="Hide"] amount = 200 lifetime = 9.0 visibility_rect = Rect2( -400, -100, 800, 3000 ) process_material = SubResource( 17 ) texture = ExtResource( 6 ) [node name="RayCast2D" type="RayCast2D" parent="Hide/Particles2D"] enabled = true cast_to = Vector2( 0, 2000 ) ================================================ FILE: src/autoload/Music.gd ================================================ extends AudioStreamPlayer export (Array, AudioStream) var ost = [] var last_song := -1 var array = [] export var wait_range := Vector2(10, 90) var wait_clock := 0.0 var wait_time := 10.0 func _ready(): connect("finished", self, "finished") randomize() wait_clock = 4.0 func _physics_process(delta): if wait_clock > 0: wait_clock -= delta if wait_clock <= 0: play_song() func finished(): wait_clock = rand_range(wait_range.x, wait_range.y) func play_song(): if array.empty(): array = range(ost.size()) array.erase(last_song) array.shuffle() stream = ost[array[0]] last_song = array[0] array.remove(0) play() ================================================ FILE: src/autoload/Shared.gd ================================================ extends Node export var is_debug := false export var time_scale := 1.0 setget set_time_scale export var iterations := 60 setget set_iterations export var target_fps := 0.0 setget set_target_fps var splash_path := "res://src/menu/Splash.tscn" var title_path := "res://src/menu/MenuTitle.tscn" var worlds_path := "res://src/map/worlds/" var start_path := "res://src/map/worlds/0/1_start.tscn" var end_path := "res://src/map/worlds/0/2_end.tscn" onready var csfn := get_tree().current_scene.filename onready var last_scene := csfn onready var next_scene := csfn var map_name := "" var is_change := false var is_reload := false signal scene_before signal scene_changed var gem_count := 0 var goals := {} var clock_rank := 0 var maps_visited := [] enum SPEED {OFF, MAP, FILE, BOTH, TRADE} var clock_show := 0 var clock_alpha := 1.0 setget set_clock_alpha var clock_decimals := 2 var clock_best_color := [Color.white, Color("ffff00")] var speedruns := { "1/2": 11, "1/3": 17.5, "1/4": 17.5, "1/5": 13.5, "1/6": 16.5, "1/7": 17.5, "2/1": 16.5, "2/2": 23.5, "2/3": 19.5, "2/4": 25.5, "2/5": 27.5, "2A/1": 19, "2A/2": 26.5, "2A/4": 16.5, "2A/5": 40.5, "2A/6": 32.5, "2A/7": 28.5, "2B/1": 34, "2B/2": 41.5, "2B/3": 51.5, "2B/4": 36.5, "2B/5": 38, "2B/6": 46, "2C/1": 40, "2C/2": 30.5, "2C/3": 50, "2C/4": 39.5, "2C/5": 46, "2C/6": 75, "3/1": 25.5, "3/2": 27, "3/3": 28, "3/4": 37.5, "3/5": 28, "3/6": 38.5, "3/7": 30.5, "3A/1": 25, "3A/2": 28.5, "3A/3": 28.5, "3A/4": 53.5, "3A/5": 26.5, "3A/6": 53.5, "3B/1": 13, "3B/2": 55.5, "3B/3": 30.5, "3B/4": 43.5, "3B/5": 36.5, "3B/6": 42.5, "3B/7": 50.5, "3B/8": 76.5, } var boxes := [] var doors := [] onready var guide := $GuideLayer/Guide var player var door_in var goal var is_arcade := false var is_title := false var save_slot := -1 var save_dict := {0: {}, 1: {}, 2: {}} signal slot_erased(arg) var save_time := 0.0 var map_clock := 0.0 var auto_save_clock := 0.0 var auto_save_time := 60.0 var default_keys := {} var is_gamepad := false signal gamepad_input(arg) var volume = [100, 100, 100, 100] var win_size := Vector2(1280, 720) var win_sizes := [Vector2(640, 360), Vector2(960, 540), Vector2(1280, 720), Vector2(1680, 720), Vector2(1600, 900), Vector2(2100, 900), Vector2(1920, 1080), Vector2(2560, 1080), Vector2(2560, 1440), Vector2(3440, 1440), Vector2(3840, 2160), Vector2(5160, 2160)] var radial_blur = 0 setget set_radial_blur var light_enabled := 1 setget set_light_enabled var shadow_enabled := 1 setget set_shadow_enabled var shadow_buffer := 2 setget set_shadow_buffer var is_weather := true setget set_is_weather var is_interpolate := true setget set_is_interpolate var is_touch := false setget set_is_touch var is_demo := false var boundary_rect := Rect2() var boundary_center := Vector2.ZERO onready var boundary_node := $Boundary onready var arrow := $ArrowLayer/Arrow onready var arrow_mat : ShaderMaterial = $ArrowLayer/Arrow/Rect.material var arrow_track = null onready var chat := $ArrowLayer/Chat var margin_x = 20 setget set_margin_x var margin_y = 20 setget set_margin_y func _ready(): Wipe.connect("complete", self, "wipe_complete") boundary_node.visible = false for i in [1, 2, 3]: set_volume(i, 50) # get default key binds for i in InputMap.get_actions(): default_keys[i] = InputMap.get_action_list(i) load_options() load_data() load_keys() # setup window if OS.window_fullscreen: Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN) else: if OS.window_size in win_sizes: win_size = OS.window_size # center window set_window_size() # demo check var f = File.new() var fe = f.file_exists("res://src/map/worlds/2A/0_hub.tscn") f.close() is_demo = !fe yield(get_tree(), "idle_frame") set_radial_blur() set_light_enabled() set_shadow_enabled() set_shadow_buffer() set_is_weather() set_is_interpolate() set_is_touch() func _input(event): if event is InputEventKey and event.pressed and !event.is_echo(): if event.scancode == KEY_F11: toggle_fullscreen() # gamepad signal if event.is_pressed(): var g = is_gamepad if is_gamepad and event is InputEventKey: is_gamepad = false elif !is_gamepad and (event is InputEventJoypadButton or event is InputEventJoypadMotion): is_gamepad = true if g != is_gamepad: emit_signal("gamepad_input", is_gamepad) print("gamepad_input: ", is_gamepad) if is_debug: for i in ["screenshot", "warp", "makeover", "add_gem", "reset"]: var p = event.is_action_pressed("debug_" + i) if !p: continue match i: "screenshot": burst_screenshot(15) "warp": wipe_scene("res://src/map/worlds/0/0_hub.tscn") "makeover": MenuMakeover.is_open = !MenuMakeover.is_open "add_gem": gem_count += 1 UI.gem_text(gem_count) "reset": reset() func _physics_process(delta): # auto save auto_save_clock += delta if auto_save_clock > auto_save_time: auto_save_clock = 0.0 save_data() func _process(delta): # recorded time save_time += delta if !get_tree().paused and !Wipe.is_wipe and !Cutscene.is_playing and player.spr_easy.is_complete: map_clock += delta # clock label UI.clock_file.text = time_string(save_time, clock_decimals) UI.clock_map.text = time_string(map_clock, clock_decimals) # arrows if is_instance_valid(arrow_track): arrow.modulate.a = arrow_track.arrow_easy.smooth() arrow_mat.set_shader_param("fill_y", arrow_track.open_easy.smooth()) func time_string(t := 0.0, dec = 2, is_min := false, is_hour := false): # time var s_hour = str(int(t) / 3600) + ":" if is_hour or t > 3600 else "" var s_min = str((int(t) / 60) % 60).pad_zeros(2 if s_hour else 0) + ":" if is_min or t > 60 else "" var s_sec = str(fmod(t, 60)).pad_zeros(2).pad_decimals(dec) return s_hour + s_min + s_sec func wipe_scene(arg, last := csfn, delay := 0.0): var f = File.new() var fe = f.file_exists(arg) f.close() if !is_change and fe: is_change = true if arg != csfn: last_scene = last next_scene = arg Wipe.start(false, delay) return true return false func wipe_complete(arg): if is_change: change_scene() Wipe.start(true) func reset(): wipe_scene(csfn) func change_scene(): is_change = false boxes.clear() arrow.modulate.a = 0.0 emit_signal("scene_before") is_reload = next_scene == csfn if is_reload: get_tree().reload_current_scene() else: csfn = next_scene map_name = csfn.right(worlds_path.length()).replace(".tscn", "") if csfn.begins_with(worlds_path) else "" is_arcade = "arcade" in csfn is_title = csfn == title_path get_tree().change_scene(next_scene) Cam.reset_zoom() #print("map_name: ", map_name, " csfn: ", csfn) if map_name != "" and !maps_visited.has(map_name): maps_visited.append(map_name) save_data() try_achievement() map_clock = 0.0 yield(get_tree(), "idle_frame") for y in 3: for i in doors: if y == 2 or (y == 0 and i.scene_path == last_scene) or i.scene_path == "spawn": door_in = i print("door_in = ", i) break if is_instance_valid(door_in): break speedrun_goal(csfn, map_name != "" and not "hub" in map_name) set_boundary() TouchScreen.set_game(map_name != "" or is_arcade) emit_signal("scene_changed") func set_boundary(): var start = Vector2.ONE * 900 var end = Vector2.ONE * -900 for i in get_tree().get_nodes_in_group("solid_map"): for c in i.get_used_cells(): start.x = min(start.x, c.x) start.y = min(start.y, c.y) end.x = max(end.x, c.x) end.y = max(end.y, c.y) boundary_center = (start.linear_interpolate(end, 0.5) + (Vector2.ONE * 0.5)) * 100.0 boundary_rect.size = ((end - start) + Vector2.ONE) * 100.0 boundary_rect.position = boundary_center - (boundary_rect.size / 2.0) boundary_node.rect_size = boundary_rect.size boundary_node.rect_position = boundary_rect.position #print(map_name, " start: ", start, " end: ", end, " boundary_center: ", boundary_center, " boundary_rect.size: ", boundary_rect.size, " get_area: ", boundary_rect.get_area()) func is_outside_boundary(pos, margin := 10.0): return boundary_rect != Rect2() and !boundary_rect.grow(margin * 100).has_point(pos) func toggle_fullscreen(): OS.window_fullscreen = !OS.window_fullscreen Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN if OS.window_fullscreen else Input.MOUSE_MODE_VISIBLE) if !OS.window_fullscreen: set_window_size() func set_window_size(arg : Vector2 = win_size): win_size = arg # specific fix for borderless fullscreen var b = OS.window_borderless and win_size == OS.get_screen_size() OS.window_size = win_size + Vector2(2 if b else 0, 0) OS.window_position = Vector2(-1, 0) if b else (OS.get_screen_size() * 0.5) - (OS.window_size * 0.5) func burst_screenshot(count := 30, viewport := get_tree().root): var dir := Directory.new() if !dir.dir_exists("user://snap"): dir.make_dir("user://snap") var images = [] for i in count: var image = viewport.get_texture().get_data() image.flip_y() images.append(image) yield(get_tree(), "idle_frame") var d = OS.get_datetime() d.erase("dst") var s = "" for i in (d.values()): s += str(i) + " " for i in images.size(): images[i].save_png("user://snap/" + s + "snap" + str(i) + ".png") yield(get_tree(), "idle_frame") ### Useful funcs func get_all_children(n, a := []): if is_instance_valid(n): a.append(n) for i in n.get_children(): a = get_all_children(i, a) return a func rot(vec : Vector2, _dir : int) -> Vector2: _dir = posmod(_dir, 4) match _dir: 1: return Vector2(-vec.y, vec.x) 2: return Vector2(-vec.x, -vec.y) 3: return Vector2(vec.y, -vec.x) return vec ### Gems func collect_gem(): if is_instance_valid(goal) and goal.is_collected: goal.fade_easy.clock = goal.fade_easy.time goal.turn_x = Shared.player.dir_x var is_collect = !goals.has(map_name) var is_faster = !is_collect and map_clock < goals[map_name] if is_collect or is_faster: goals[map_name] = map_clock gem_count = goals.size() var last_clock = clock_rank clock_rank = collect_clocks() var is_clock = clock_rank > last_clock save_data() Cutscene.is_collect = is_collect Cutscene.is_clock = is_clock Cutscene.is_faster = !is_collect and !is_clock #print("is_collect: ", Cutscene.is_collect, " is_clock: ", Cutscene.is_clock) func collect_clocks(g := goals): var c = 0 for i in g.keys(): if g[i] != 0 and speedruns.has(i) and g[i] < speedruns[i]: c += 1 return c func speedrun_goal(scene_path := csfn, _show := true): if not "hub" in scene_path and scene_path.begins_with(worlds_path): UI.clock_ease.show = _show and clock_show > 0 var m = scene_path.lstrip(worlds_path).rstrip(".tscn") UI.clock_best.visible = goals.has(m) if UI.clock_best.visible: var g = goals[m] UI.clock_best.text = "Best: " + time_string(g, 2) UI.clock_best.modulate = clock_best_color[int(goals[m] > 0 and goals[m] < speedruns[m])] UI.clock_goal.visible = speedruns.has(m) if UI.clock_goal.visible: UI.clock_goal.text = "Goal: " + time_string(speedruns[m], 2) ### Options func set_volume(bus = 0, vol = 0): volume[bus] = clamp(vol, 0, 100) AudioServer.set_bus_volume_db(bus, linear2db(volume[bus] / 100.0)) #print("volume[", bus, "] ",AudioServer.get_bus_name(bus) ," : ", volume[bus]) func set_radial_blur(arg := radial_blur): radial_blur = arg Cam.blur(radial_blur) func set_light_enabled(arg := light_enabled): light_enabled = arg #print("light_enabled: ", light_enabled) if is_instance_valid(Clouds.star_light): Clouds.star_light.enabled = bool(light_enabled) func set_shadow_enabled(arg := shadow_enabled): shadow_enabled = arg if is_instance_valid(Clouds.star_light): Clouds.star_light.shadow_enabled = bool(shadow_enabled) func set_shadow_buffer(arg := shadow_buffer): shadow_buffer = arg if is_instance_valid(Clouds.star_light): Clouds.star_light.shadow_buffer_size = [1024, 2048, 4096, 8192, 16384][shadow_buffer % 5] func set_is_weather(arg := is_weather): is_weather = bool(arg) Clouds.set_is_weather() func set_is_interpolate(arg := is_interpolate): is_interpolate = bool(arg) func set_is_touch(arg := is_touch): is_touch = bool(arg) TouchScreen.visible = is_touch func set_clock_alpha(arg := clock_alpha): clock_alpha = clamp(arg, 0, 1) if is_instance_valid(UI.clock): UI.clock.modulate.a = clock_alpha func set_time_scale(arg := time_scale): time_scale = arg Engine.time_scale = time_scale func set_iterations(arg := iterations): iterations = max(1, arg) Engine.iterations_per_second = iterations func set_target_fps(arg := target_fps): target_fps = abs(arg) #print("target_fps: ", target_fps) Engine.target_fps = target_fps func set_margin_x(arg := margin_x): margin_x = abs(arg) TouchScreen.margin(margin_x, margin_y) func set_margin_y(arg := margin_y): margin_y = abs(arg) TouchScreen.margin(margin_x, margin_y) ### Exit Game func quit(): save_data() save_options() get_tree().quit() func _notification(what): if what == MainLoop.NOTIFICATION_WM_QUIT_REQUEST: quit() ### Files and Directory Funcs ### func list_folder(path, include_extension := true): var dir = Directory.new() if dir.open(path) != OK: print("list_folder(): '", path, "' not found") return var list = [] dir.list_dir_begin(true) var fname = dir.get_next() while fname != "": list.append(fname if include_extension else fname.split(".")[0]) fname = dir.get_next() dir.list_dir_end() return list func list_all_files(path, is_ext := true): var folders = [path] var files = [] while !folders.empty(): var s = folders.pop_back() var ex = list_folders_and_files(s, is_ext) folders.append_array(ex[0]) files.append_array(ex[1]) return files func list_folders_and_files(path, is_ext := true): var dir = Directory.new() if dir.open(path) != OK: print("list_folders_and_files(): '", path, "' not found") return dir.list_dir_begin(true) var fname = dir.get_next() var files := [] var folders := [] while fname != "": var s = dir.get_current_dir() + "/" + (fname if is_ext else fname.split(".")[0]) folders.append(s) if dir.current_is_dir() else files.append(s) fname = dir.get_next() dir.list_dir_end() return [folders, files] func file_save(path : String, content : String): var file = File.new() file.open(path, File.WRITE) file.store_string(content) file.close() func file_save_json(path : String, dict : Dictionary): var j = JSON.print(dict, "\t") file_save(path, j) func file_load(path : String) -> String: var content = "" var file = File.new() if file.file_exists(path): file.open(path, File.READ) content = file.get_as_text() file.close() return content func file_load_json_dict(path : String): var d := {} var j = file_load(path) if j != "": var p = JSON.parse(j) if typeof(p.result) == TYPE_DICTIONARY: d = p.result return d func save_data(): if save_slot < 0: return auto_save_clock = 0.0 var s = save_dict[save_slot] s["time"] = int(save_time) if "worlds" in csfn and "worlds" in last_scene: s["csfn"] = csfn s["last_scene"] = last_scene s["goals"] = goals.duplicate() s["dye"] = player.dye.duplicate() s["hair"] = [player.hairstyle_back, player.hairstyle_front] maps_visited.sort() s["maps_visited"] = maps_visited.duplicate() for i in s.keys(): if not i in "time, csfn, last_scene, goals, dye, hair, maps_visited": s.erase(i) file_save_json("user://save_data.json", save_dict) func load_data(): var d = file_load_json_dict("user://save_data.json") # convert keys to int for i in d.keys(): save_dict[int(i)] = d[i] func erase_slot(arg := 0): save_dict[arg] = {} MenuMakeover.preset() emit_signal("slot_erased", arg) func load_slot(arg := 0): save_slot = clamp(arg, 0, 2) print("Shared.save_slot: ", save_slot) var s = save_dict[save_slot] if s.has("csfn"): next_scene = s["csfn"] if s.has("last_scene"): last_scene = s["last_scene"] goals = {} # open new saves if s.has("goals"): goals = s["goals"].duplicate() # convert old saves elif s.has("goals_collected"): for i in s["goals_collected"]: goals[i.lstrip(worlds_path).rstrip(".tscn")] = 0.0 # gems gem_count = goals.size() UI.gem_text(gem_count, false) clock_rank = collect_clocks() UI.rank_text(clock_rank, false) if s.has("time"): save_time = s["time"] maps_visited = s["maps_visited"].duplicate() if s.has("maps_visited") else [] else: Cutscene.is_start_game = true next_scene = start_path last_scene = start_path goals = {} gem_count = 0 UI.gem_text(gem_count, false) clock_rank = 0 UI.rank_text(clock_rank, false) save_time = 0.0 maps_visited = [] return wipe_scene(next_scene, last_scene) func load_slot_style(arg := 0): var s = save_dict[clamp(arg, 0, 2)] if s.has("dye") and s.has("hair"): player.dye = s["dye"].duplicate() player.hairstyle_back = s["hair"][0] player.hairstyle_front = s["hair"][1] else: MenuMakeover.preset() func save_options(): var o := {} o["sounds"] = int(volume[1] / 10) o["music"] = int(volume[2] / 10) o["weather"] = int(volume[3] / 10) o["mouse"] = int(Input.mouse_mode == Input.MOUSE_MODE_VISIBLE) o["radial_blur"] = int(radial_blur) o["is_interpolate"] = int(is_interpolate) o["light_enabled"] = int(light_enabled) o["shadow_enabled"] = int(shadow_enabled) o["shadow_buffer"] = int(shadow_buffer) o["is_weather"] = int(is_weather) o["clock_show"] = int(clock_show) o["clock_alpha"] = float(clock_alpha) o["clock_decimals"] = int(clock_decimals) o["is_touch"] = int(is_touch) file_save_json("user://options.json", o) # override var s = "[display/window]\n\n" if win_size != Vector2(1280, 720): s += "size/test_width=" + str(win_size.x) + "\n" s += "size/test_height=" + str(win_size.y) + "\n" s += "size/borderless=" + str(OS.window_borderless).to_lower() + "\n" s += "size/fullscreen=" + str(OS.window_fullscreen).to_lower() + "\n" s += "vsync/use_vsync=" + str(OS.vsync_enabled).to_lower() + "\n" file_save("user://override.cfg", s) func load_options(): var d = file_load_json_dict("user://options.json") if d.has("sounds"): set_volume(1, int(d["sounds"]) * 10) if d.has("music"): set_volume(2, int(d["music"]) * 10) if d.has("weather"): set_volume(3, int(d["weather"]) * 10) if d.has("mouse"): Input.mouse_mode = Input.MOUSE_MODE_VISIBLE if int(d["mouse"]) else Input.MOUSE_MODE_HIDDEN if d.has("radial_blur"): self.radial_blur = int(d["radial_blur"]) if d.has("is_interpolate"): self.is_interpolate = int(d["is_interpolate"]) if d.has("light_enabled"): self.light_enabled = int(d["light_enabled"]) if d.has("shadow_enabled"): self.shadow_enabled = int(d["shadow_enabled"]) if d.has("shadow_buffer"): self.shadow_buffer = int(d["shadow_buffer"]) if d.has("is_weather"): self.is_weather = int(d["is_weather"]) if d.has("clock_show"): clock_show = int(d["clock_show"]) if d.has("clock_alpha"): clock_alpha = float(d["clock_alpha"]) if d.has("clock_decimals"): clock_decimals = int(d["clock_decimals"]) if d.has("is_touch"): is_touch = bool(d["is_touch"]) func save_keys(path := "user://keys.tres"): var s_keys = SaveDict.new() for a in InputMap.get_actions(): s_keys.dict[a] = InputMap.get_action_list(a) ResourceSaver.save(path, s_keys) func load_keys(path := "user://keys.tres"): if !ResourceLoader.exists(path): return var r = load(path) if r is SaveDict: for a in r.dict.keys(): if InputMap.has_action(a): InputMap.action_erase_events(a) for e in r.dict[a]: InputMap.action_add_event(a, e) ### Steam ### func try_achievement(): var map := "" match csfn: "res://src/map/worlds/1/0_hub.tscn": map = "grass1" "res://src/map/worlds/2/0_hub.tscn": map = "stone1" "res://src/map/worlds/3/0_hub.tscn": map = "cacti1" "res://src/map/worlds/2A/0_hub.tscn": map = "snow1" "res://src/map/worlds/3A/0_hub.tscn": map = "grass2" "res://src/map/worlds/2B/0_hub.tscn": map = "stone2" "res://src/map/worlds/3B/0_hub.tscn": map = "cacti2" "res://src/map/worlds/2C/0_hub.tscn": map = "snow2" if map != "": achieve(map) if gem_count > 0: achieve("gem1") if gem_count > 49: achieve("gem50") if clock_rank > 0: achieve("clock1") if clock_rank > 49: achieve("clock50") if csfn == end_path and save_time < 3600: achieve("speedrun") func achieve(arg := ""): if arg != "" and Steam.is_init(): Steam.set_achievement(arg) ### Demo ### func store_page(): if Steam.is_init: Steam.friends.activate_game_overlay_to_store(1993830, Steam.OverlayToStoreFlag.None) else: OS.shell_open("https://store.steampowered.com/app/1993830/ROTA/") ================================================ FILE: src/autoload/Shared.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/autoload/Shared.gd" type="Script" id=1] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=2] [ext_resource path="res://src/shader/door_arrow.gdshader" type="Shader" id=3] [ext_resource path="res://media/image/UI/key_up_square.png" type="Texture" id=4] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=5] [ext_resource path="res://src/actor/Chat.tscn" type="PackedScene" id=6] [ext_resource path="res://src/shader/guide.gdshader" type="Shader" id=7] [ext_resource path="res://media/image/box/box_push.png" type="Texture" id=8] [ext_resource path="res://media/image/white_square_100x.png" type="Texture" id=9] [ext_resource path="res://src/actor/Guide.gd" type="Script" id=10] [ext_resource path="res://media/image/box/treads.png" type="Texture" id=11] [sub_resource type="ShaderMaterial" id=16] shader = ExtResource( 7 ) shader_param/height = 3.0 shader_param/fade_height = 1.5 shader_param/scale_x = 0.7 shader_param/scale_y = 1.0 shader_param/time_scale = 0.5 shader_param/tread_mask = ExtResource( 11 ) shader_param/box_mask = ExtResource( 8 ) [sub_resource type="ShaderMaterial" id=1] shader = ExtResource( 3 ) shader_param/fill_y = 0.35 shader_param/is_flip = true shader_param/is_descent = false [node name="Shared" type="Node"] pause_mode = 2 script = ExtResource( 1 ) [node name="Player" parent="." instance=ExtResource( 2 )] pause_mode = 1 [node name="Boundary" type="ColorRect" parent="."] visible = false modulate = Color( 1, 1, 1, 0.298039 ) margin_left = -150.0 margin_top = -150.0 margin_right = 150.0 margin_bottom = 150.0 [node name="GuideLayer" type="CanvasLayer" parent="."] layer = 2 follow_viewport_enable = true [node name="Guide" type="Node2D" parent="GuideLayer"] process_priority = 100 light_mask = 0 script = ExtResource( 10 ) [node name="Sprite" type="Sprite" parent="GuideLayer/Guide"] material = SubResource( 16 ) texture = ExtResource( 9 ) offset = Vector2( 0, 150 ) region_enabled = true region_rect = Rect2( 0, 0, 100, 300 ) [node name="ArrowLayer" type="CanvasLayer" parent="."] layer = 3 follow_viewport_enable = true [node name="Arrow" type="Node2D" parent="ArrowLayer"] position = Vector2( -200, -200 ) [node name="Rect" type="Polygon2D" parent="ArrowLayer/Arrow"] material = SubResource( 1 ) scale = Vector2( 0.35, 0.35 ) texture = ExtResource( 4 ) texture_offset = Vector2( 100, 100 ) polygon = PoolVector2Array( 100, 40, 97.0634, 58.541, 88.541, 75.2671, 75.2671, 88.541, 58.541, 97.0634, 40, 100, -40, 100, -58.541, 97.0634, -75.2671, 88.541, -88.541, 75.2671, -97.0634, 58.541, -100, 40, -100, -40, -97.0634, -58.541, -88.541, -75.2671, -75.2671, -88.541, -58.541, -97.0634, -40, -100, 40, -100, 58.541, -97.0634, 75.2671, -88.541, 88.541, -75.2671, 97.0634, -58.541, 100, -40 ) script = ExtResource( 5 ) size = Vector2( 100, 100 ) radius = Plane( 60, -1, -1, -1 ) points = 6 [node name="Chat" parent="ArrowLayer" instance=ExtResource( 6 )] position = Vector2( -481, -210 ) ================================================ FILE: src/autoload/UI.gd ================================================ extends CanvasLayer onready var gem_label : Label = $Center/Control/Top/Labels/Control/Center/Label onready var clock_label : Label = $Center/Control/Down/Labels/Control/Center/Label onready var color_rect := $Center/Control/ColorRect var gem_easy = EaseMover.new() onready var gem_centers = $Center/Control/Top/Labels/Control.get_children() onready var gem_labels = [$Center/Control/Top/Labels/Control/Center/Label, $Center/Control/Top/Labels/Control/Center2/Label] onready var gem_labels_node := $Center/Control/Top/Labels var rank_easy = EaseMover.new() onready var rank_centers = $Center/Control/Down/Labels/Control.get_children() onready var rank_labels = [$Center/Control/Down/Labels/Control/Center/Label, $Center/Control/Down/Labels/Control/Center2/Label] onready var rank_labels_node := $Center/Control/Down/Labels var up = EaseMover.new() var down = EaseMover.new() var keys = EaseMover.new() onready var clock := $Center/Control/Clock onready var clock_file := $Center/Control/Clock/File onready var clock_map := $Center/Control/Clock/Map onready var clock_down := $Center/Control/Clock/Down onready var clock_best := $Center/Control/Clock/Down/Best onready var clock_goal := $Center/Control/Clock/Down/Goal onready var clock_ease := EaseMover.new() func _ready(): Shared.connect("scene_changed", self, "scene_changed") gem_label.text = str(Shared.gem_count) up.node = $Center/Control/Top up.to = up.node.rect_position up.from = up.to - Vector2(0, 120) up.show = false down.node = $Center/Control/Down down.to = down.node.rect_position down.from = down.to + Vector2(0, 120) down.show = false keys.node = $Center/Control/Keys keys.to = keys.node.rect_position keys.from = keys.to + Vector2(0, 80) keys.show = false scene_changed() clock.modulate.a = Shared.clock_alpha func _process(delta): var p = MenuPause.is_open up.move(delta, up.show or (p and Shared.gem_count > 0)) down.move(delta, down.show or (p and Shared.clock_rank > 0)) keys.move(delta) if !gem_easy.is_complete: gem_count(delta, gem_easy, gem_centers, gem_labels_node) if !rank_easy.is_complete: gem_count(delta, rank_easy, rank_centers, rank_labels_node, 1.0) clock_down.modulate.a = clock_ease.count(delta, clock_ease.show and !(MenuPause.is_paused and !MenuPause.is_open)) func scene_changed(override := false): up.clock = 0.0 var m = Shared.map_name != "" or override var h = "hub" in Shared.map_name var b = Shared.clock_show == Shared.SPEED.BOTH var t = Shared.clock_show == Shared.SPEED.TRADE clock_file.visible = m and ((t and h) or (b or Shared.clock_show == Shared.SPEED.FILE)) clock_map.visible = m and !h and (t or b or Shared.clock_show == Shared.SPEED.MAP) clock_ease.show = m and !h and Shared.clock_show > 0 func menu_keys(accept := "", cancel := ""): var c = $Center/Control/Keys/List.get_children() # accept var is_a = accept != "" c[0].visible = is_a # label c[0].text = accept c[1].visible = is_a # key # cancel var is_c = cancel != "" c[2].visible = is_c # spacer c[3].visible = is_c # label c[3].text = cancel c[4].visible = is_c # key func gem_text(arg := 0, is_animate := true, _easy := gem_easy, _labels := gem_labels, _labels_node := gem_labels_node): _easy.clock = 0.0 if is_animate else (_easy.time * 0.99) _easy.from.x = _labels_node.rect_min_size.x _easy.to.x = str(arg).length() * 62 if arg > 0 else 0.0 yield(get_tree(), "idle_frame") for i in 2: var a = arg - i var s = str(a) if a > 0 else "" _labels[1 - i].text = s func rank_text(arg := 0, is_animate := true): gem_text(arg, is_animate, rank_easy, rank_labels, rank_labels_node) func gem_count(delta, _easy, _centers, _labels_node, _scale = -1): var s = _easy.count(delta) _labels_node.rect_min_size = _easy.from_lerp_to(s) var vec = [Vector2.ZERO, Vector2(0, 120 * _scale)] var scl = [Vector2.ONE, Vector2.ONE * 0.33] for i in 2: var gc = _centers[i] gc.rect_scale = scl[i].linear_interpolate(scl[1 - i], s) gc.rect_position = vec[i].linear_interpolate(vec[1 - i], s) ================================================ FILE: src/autoload/UI.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/theme/shadow_text.tres" type="Theme" id=1] [ext_resource path="res://media/font/profile/UI_Keys.tres" type="DynamicFont" id=2] [ext_resource path="res://media/font/profile/UI_gem.tres" type="DynamicFont" id=3] [ext_resource path="res://src/actor/Clock.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Gem.tscn" type="PackedScene" id=6] [ext_resource path="res://src/menu/options/Key.tscn" type="PackedScene" id=9] [ext_resource path="res://src/autoload/UI.gd" type="Script" id=10] [sub_resource type="CanvasItemMaterial" id=1] blend_mode = 2 [node name="UI" type="CanvasLayer"] pause_mode = 2 layer = 10 script = ExtResource( 10 ) [node name="Center" type="CenterContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 [node name="Control" type="Control" parent="Center"] margin_right = 1280.0 margin_bottom = 720.0 rect_min_size = Vector2( 1280, 720 ) __meta__ = { "_edit_lock_": true, "_edit_use_anchors_": false } [node name="ColorRect" type="ColorRect" parent="Center/Control"] visible = false modulate = Color( 1, 1, 1, 0.109804 ) material = SubResource( 1 ) margin_right = 1280.0 margin_bottom = 720.0 __meta__ = { "_edit_lock_": true, "_edit_use_anchors_": false } [node name="Top" type="HBoxContainer" parent="Center/Control"] anchor_right = 1.0 anchor_bottom = 0.2 rect_min_size = Vector2( 1280, 144 ) custom_constants/separation = 10 alignment = 1 [node name="Image" type="CenterContainer" parent="Center/Control/Top"] margin_left = 533.0 margin_top = 42.0 margin_right = 613.0 margin_bottom = 102.0 rect_min_size = Vector2( 80, 60 ) size_flags_horizontal = 4 size_flags_vertical = 4 [node name="Control" type="Control" parent="Center/Control/Top/Image"] margin_left = 40.0 margin_top = 30.0 margin_right = 40.0 margin_bottom = 30.0 [node name="Gem" parent="Center/Control/Top/Image/Control" instance=ExtResource( 6 )] scale = Vector2( 1.5, 1.5 ) [node name="Labels" type="CenterContainer" parent="Center/Control/Top"] margin_left = 623.0 margin_right = 747.0 margin_bottom = 144.0 rect_min_size = Vector2( 124, 0 ) size_flags_horizontal = 4 [node name="Control" type="Control" parent="Center/Control/Top/Labels"] margin_left = 62.0 margin_top = 72.0 margin_right = 62.0 margin_bottom = 72.0 [node name="Center" type="CenterContainer" parent="Center/Control/Top/Labels/Control"] use_top_left = true [node name="Label" type="Label" parent="Center/Control/Top/Labels/Control/Center"] margin_left = -62.0 margin_top = -41.0 margin_right = 62.0 margin_bottom = 41.0 size_flags_horizontal = 4 custom_fonts/font = ExtResource( 3 ) text = "17" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Center2" type="CenterContainer" parent="Center/Control/Top/Labels/Control"] use_top_left = true [node name="Label" type="Label" parent="Center/Control/Top/Labels/Control/Center2"] margin_left = -62.0 margin_top = -41.0 margin_right = 62.0 margin_bottom = 41.0 size_flags_horizontal = 4 custom_fonts/font = ExtResource( 3 ) text = "17" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Down" type="HBoxContainer" parent="Center/Control"] anchor_top = 0.8 anchor_right = 1.0 anchor_bottom = 1.0 custom_constants/separation = 10 alignment = 1 [node name="Labels" type="CenterContainer" parent="Center/Control/Down"] margin_left = 533.0 margin_right = 657.0 margin_bottom = 144.0 rect_min_size = Vector2( 124, 0 ) size_flags_horizontal = 4 [node name="Control" type="Control" parent="Center/Control/Down/Labels"] margin_left = 62.0 margin_top = 72.0 margin_right = 62.0 margin_bottom = 72.0 [node name="Center" type="CenterContainer" parent="Center/Control/Down/Labels/Control"] use_top_left = true [node name="Label" type="Label" parent="Center/Control/Down/Labels/Control/Center"] margin_left = -62.0 margin_top = -41.0 margin_right = 62.0 margin_bottom = 41.0 size_flags_horizontal = 4 custom_fonts/font = ExtResource( 3 ) text = "17" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Center2" type="CenterContainer" parent="Center/Control/Down/Labels/Control"] use_top_left = true [node name="Label" type="Label" parent="Center/Control/Down/Labels/Control/Center2"] margin_left = -62.0 margin_top = -41.0 margin_right = 62.0 margin_bottom = 41.0 size_flags_horizontal = 4 custom_fonts/font = ExtResource( 3 ) text = "17" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Image" type="CenterContainer" parent="Center/Control/Down"] margin_left = 667.0 margin_top = 42.0 margin_right = 747.0 margin_bottom = 102.0 rect_min_size = Vector2( 80, 60 ) size_flags_horizontal = 4 size_flags_vertical = 4 [node name="Control" type="Control" parent="Center/Control/Down/Image"] margin_left = 40.0 margin_top = 30.0 margin_right = 40.0 margin_bottom = 30.0 [node name="Clock" parent="Center/Control/Down/Image/Control" instance=ExtResource( 5 )] scale = Vector2( 1.5, 1.5 ) [node name="Keys" type="Control" parent="Center/Control"] margin_left = 1280.0 margin_top = 720.0 margin_right = 1320.0 margin_bottom = 760.0 rect_scale = Vector2( 0.9, 0.9 ) [node name="List" type="HBoxContainer" parent="Center/Control/Keys"] margin_left = -500.0 margin_top = -85.0 margin_right = -18.0 custom_constants/separation = 10 alignment = 2 [node name="Label" type="Label" parent="Center/Control/Keys/List"] margin_left = 57.0 margin_top = 27.0 margin_right = 165.0 margin_bottom = 58.0 custom_fonts/font = ExtResource( 2 ) text = "Accept" align = 2 valign = 2 __meta__ = { "_edit_use_anchors_": false } [node name="Key" parent="Center/Control/Keys/List" instance=ExtResource( 9 )] margin_left = 175.0 margin_top = 17.0 margin_right = 275.0 margin_bottom = 67.0 rect_min_size = Vector2( 100, 50 ) text = "ENTER" action = "ui_accept" is_connect = true [node name="Spacer" type="Control" parent="Center/Control/Keys/List"] margin_left = 285.0 margin_right = 290.0 margin_bottom = 85.0 rect_min_size = Vector2( 5, 0 ) [node name="Label2" type="Label" parent="Center/Control/Keys/List"] margin_left = 300.0 margin_top = 27.0 margin_right = 372.0 margin_bottom = 58.0 custom_fonts/font = ExtResource( 2 ) text = "Back" align = 2 valign = 2 __meta__ = { "_edit_use_anchors_": false } [node name="Key2" parent="Center/Control/Keys/List" instance=ExtResource( 9 )] margin_left = 382.0 margin_top = 17.0 margin_right = 482.0 margin_bottom = 67.0 rect_min_size = Vector2( 100, 50 ) text = "ESCAPE" action = "ui_cancel" is_connect = true [node name="Clock" type="VBoxContainer" parent="Center/Control"] anchor_right = 0.5 anchor_bottom = 1.0 margin_left = 20.0 margin_top = 20.0 margin_right = -20.0 margin_bottom = -20.0 rect_min_size = Vector2( 300, 200 ) [node name="File" type="Label" parent="Center/Control/Clock"] modulate = Color( 1, 0.95, 0.95, 1 ) margin_right = 600.0 margin_bottom = 51.0 theme = ExtResource( 1 ) text = "1:48:02" [node name="Map" type="Label" parent="Center/Control/Clock"] margin_top = 55.0 margin_right = 600.0 margin_bottom = 106.0 theme = ExtResource( 1 ) text = "3:57" [node name="Spacer" type="Control" parent="Center/Control/Clock"] margin_top = 110.0 margin_right = 600.0 margin_bottom = 570.0 size_flags_vertical = 3 [node name="Down" type="VBoxContainer" parent="Center/Control/Clock"] margin_top = 574.0 margin_right = 600.0 margin_bottom = 680.0 [node name="Best" type="Label" parent="Center/Control/Clock/Down"] modulate = Color( 1, 1, 0, 1 ) margin_right = 600.0 margin_bottom = 51.0 theme = ExtResource( 1 ) text = "Best 17.49" [node name="Goal" type="Label" parent="Center/Control/Clock/Down"] modulate = Color( 0.341176, 1, 0.341176, 1 ) margin_top = 55.0 margin_right = 600.0 margin_bottom = 106.0 theme = ExtResource( 1 ) text = "Goal 23.50" ================================================ FILE: src/autoload/Wipe.gd ================================================ extends CanvasLayer onready var sprite : CanvasItem = $TextureRect onready var mat : ShaderMaterial = sprite.material signal start signal complete var is_wipe := false var is_in := false var is_intro := false var radius := 0.71 var easy = EaseMover.new() var delay := 0.0 func _ready(): sprite.visible = false func _process(delta): if delay > 0.0: delay -= delta if delay < 0.0 and !is_in: Audio.play("menu_wipe", 0.9, 1.1) elif is_wipe: var s = easy.count(delta, !is_in) mat.set_shader_param("radius", s * radius) sprite.visible = easy.clock > 0.0 is_intro = is_in and easy.frac() > 0.33 if (easy.clock == 0 and is_in) or (easy.is_complete and !is_in): is_wipe = false emit_signal("complete", is_in) func start(arg := false, _delay := 0.0): is_in = arg is_intro = is_in is_wipe = true delay = max(0.001, _delay) easy.clock = easy.time if is_in else 0 emit_signal("start", is_in) ================================================ FILE: src/autoload/Wipe.tscn ================================================ [gd_scene load_steps=5 format=2] [ext_resource path="res://src/autoload/Wipe.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/shader/wipe.gdshader" type="Shader" id=3] [sub_resource type="ShaderMaterial" id=2] shader = ExtResource( 3 ) shader_param/inside = Color( 1, 1, 1, 1 ) shader_param/line = Color( 0, 0, 0, 1 ) shader_param/outside = Color( 0, 0, 0, 0 ) shader_param/scale = 2.0 shader_param/offset = Vector2( 0.2, -0.2 ) shader_param/start_offset = Vector2( 0.5, 0.5 ) shader_param/radius = 0.356 shader_param/width = 0.0 [node name="Wipe" type="CanvasLayer"] pause_mode = 2 layer = 99 script = ExtResource( 1 ) [node name="TextureRect" type="TextureRect" parent="."] material = SubResource( 2 ) anchor_right = 1.0 anchor_bottom = 1.0 texture = ExtResource( 2 ) stretch_mode = 2 ================================================ FILE: src/autoload/btn.gd ================================================ extends Node # DOWN func d(arg : String): return int(Input.is_action_pressed(arg)) # PRESSED func p(arg : String): return int(Input.is_action_just_pressed(arg)) # RELEASED func r(arg : String): return int(Input.is_action_just_released(arg)) ================================================ FILE: src/autoload/touch_screen.gd ================================================ extends CanvasLayer onready var control := $Control onready var right := $Control/HBoxRight onready var top := $Control/HBoxTop onready var keys := [$Control/HBoxRight/C, $Control/HBoxRight/X] onready var buttons := [$Control/HBoxRight/C/Control/Button, $Control/HBoxRight/X/Control/Button] onready var key_z := $Control/HBoxTop/Z onready var pause := $Control/HBoxTop/Pause onready var game_hide := [$Control/HBoxRight/C/Control/Key, $Control/HBoxRight/X/Control/Key] onready var game_show := [key_z, $Control/HBoxRight/C/Control/Sprite, $Control/HBoxRight/X/Control/Sprite] onready var btns := $Control/HBoxLeft/DPad/Buttons.get_children() onready var actions := InputMap.get_actions() func _ready(): set_game(false) visible = false yield(Shared, "scene_changed") visible = Shared.is_touch or ((OS.has_touchscreen_ui_hint() and OS.get_name() == "HTML5") or OS.get_name() == "Android") func _input(event): if event is InputEventScreenTouch or event is InputEventScreenDrag: visible = true elif event is InputEventKey or event is InputEventJoypadButton or event is InputEventJoypadMotion: visible = Shared.is_touch func show_keys(arg_arrows := true, arg_c := true, arg_x := true, arg_pause := false, arg_passby := false): right.visible = arg_arrows keys[0].visible = arg_c keys[1].visible = arg_x top.visible = arg_pause func set_game(arg := false): for h in game_hide: h.visible = !arg for s in game_show: s.visible = arg if Shared.is_arcade: key_z.visible = false pause.visible = !Shared.is_title for a in actions: Input.action_release(a) for f in buttons: f.passby_press = arg func margin(x := 20, y := 20): control.margin_left = x control.margin_right = -x control.margin_top = y control.margin_bottom = -y ================================================ FILE: src/autoload/touch_screen.tscn ================================================ [gd_scene load_steps=20 format=2] [ext_resource path="res://src/autoload/touch_screen.gd" type="Script" id=1] [ext_resource path="res://media/image/UI/magnify.png" type="Texture" id=2] [ext_resource path="res://src/menu/round_button.gd" type="Script" id=3] [ext_resource path="res://src/menu/button_modulate.gd" type="Script" id=4] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=5] [ext_resource path="res://media/image/UI/hand.png" type="Texture" id=6] [ext_resource path="res://src/shader/outline2D_outer.shader" type="Shader" id=7] [ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=8] [ext_resource path="res://media/image/UI/boot.png" type="Texture" id=9] [sub_resource type="ConvexPolygonShape2D" id=13] points = PoolVector2Array( 7.07107, 7.07107, 9.2388, 3.82683, 10, 0, 9.2388, -3.82683, 7.07107, -7.07107, 353.553, -353.553, 461.94, -191.342, 500, 0, 461.94, 191.342, 353.553, 353.553 ) [sub_resource type="ConvexPolygonShape2D" id=14] points = PoolVector2Array( -7.07107, 7.07107, -3.82683, 9.2388, -4.37114e-07, 10, 3.82683, 9.2388, 7.07107, 7.07107, 353.553, 353.553, 191.342, 461.94, -2.18557e-05, 500, -191.342, 461.94, -353.553, 353.553 ) [sub_resource type="ConvexPolygonShape2D" id=15] points = PoolVector2Array( -7.07107, -7.07107, -9.2388, -3.82683, -10, -8.74228e-07, -9.2388, 3.82683, -7.07107, 7.07107, -353.553, 353.553, -461.94, 191.342, -500, -4.37114e-05, -461.94, -191.342, -353.553, -353.553 ) [sub_resource type="ConvexPolygonShape2D" id=16] points = PoolVector2Array( 7.07107, -7.07107, 3.82684, -9.23879, 1.19249e-07, -10, -3.82684, -9.2388, -7.07107, -7.07107, -353.553, -353.553, -191.342, -461.94, 5.96244e-06, -500, 191.342, -461.94, 353.553, -353.553 ) [sub_resource type="CircleShape2D" id=3] radius = 75.0 [sub_resource type="DynamicFont" id=6] size = 64 outline_size = 1 outline_color = Color( 0, 0, 0, 1 ) extra_spacing_bottom = -4 font_data = ExtResource( 5 ) [sub_resource type="ShaderMaterial" id=11] shader = ExtResource( 7 ) shader_param/line_color = Color( 0, 0, 0, 1 ) shader_param/line_thickness = 4.0 [sub_resource type="CircleShape2D" id=4] radius = 75.0 [sub_resource type="ShaderMaterial" id=12] shader = ExtResource( 7 ) shader_param/line_color = Color( 0, 0, 0, 1 ) shader_param/line_thickness = 4.0 [sub_resource type="CircleShape2D" id=5] radius = 100.0 [node name="TouchScreen" type="CanvasLayer"] pause_mode = 2 layer = 19 script = ExtResource( 1 ) [node name="Control" type="Control" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 20.0 margin_top = 20.0 margin_right = -20.0 margin_bottom = -20.0 [node name="HBoxLeft" type="HBoxContainer" parent="Control"] anchor_right = 1.0 anchor_bottom = 1.0 custom_constants/separation = 0 [node name="DPad" type="Control" parent="Control/HBoxLeft"] margin_top = 380.0 margin_right = 300.0 margin_bottom = 680.0 rect_min_size = Vector2( 300, 300 ) size_flags_vertical = 8 [node name="Buttons" type="Control" parent="Control/HBoxLeft/DPad"] margin_left = 150.0 margin_top = 150.0 margin_right = 150.0 margin_bottom = 150.0 [node name="0" type="TouchScreenButton" parent="Control/HBoxLeft/DPad/Buttons"] shape = SubResource( 13 ) shape_centered = false passby_press = true action = "ui_right" script = ExtResource( 3 ) radius = 500.0 deadzone = 10.0 poly_path = NodePath("Polygon2D") poly_radius = 140.0 poly_points = 7 poly_deadzone = 10.0 secondary_action = "right" [node name="Polygon2D" type="Polygon2D" parent="Control/HBoxLeft/DPad/Buttons/0"] modulate = Color( 1, 1, 1, 0.5 ) position = Vector2( 5, 0 ) polygon = PoolVector2Array( 7.07107, 7.07107, 9.2388, 3.82683, 10, 0, 9.2388, -3.82683, 7.07107, -7.07107, 98.9949, -98.9949, 121.244, -70, 135.23, -36.2347, 140, 0, 135.23, 36.2347, 121.244, 70, 98.9949, 98.9949 ) script = ExtResource( 4 ) button_path = NodePath("..") idle_color = Color( 1, 1, 1, 0.501961 ) [node name="1" type="TouchScreenButton" parent="Control/HBoxLeft/DPad/Buttons"] shape = SubResource( 14 ) shape_centered = false passby_press = true action = "ui_down" script = ExtResource( 3 ) angle = 90.0 radius = 500.0 deadzone = 10.0 poly_path = NodePath("Polygon2D") poly_radius = 140.0 poly_points = 7 poly_deadzone = 10.0 secondary_action = "down" [node name="Polygon2D" type="Polygon2D" parent="Control/HBoxLeft/DPad/Buttons/1"] modulate = Color( 1, 1, 1, 0.5 ) position = Vector2( -2.18557e-07, 5 ) polygon = PoolVector2Array( -7.07107, 7.07107, -3.82683, 9.2388, -4.37114e-07, 10, 3.82683, 9.2388, 7.07107, 7.07107, 98.9949, 98.9949, 70, 121.244, 36.2347, 135.23, -6.11959e-06, 140, -36.2347, 135.23, -70, 121.244, -98.9949, 98.9949 ) script = ExtResource( 4 ) button_path = NodePath("..") idle_color = Color( 1, 1, 1, 0.501961 ) [node name="2" type="TouchScreenButton" parent="Control/HBoxLeft/DPad/Buttons"] shape = SubResource( 15 ) shape_centered = false passby_press = true action = "ui_left" script = ExtResource( 3 ) angle = 180.0 radius = 500.0 deadzone = 10.0 poly_path = NodePath("Polygon2D") poly_radius = 140.0 poly_points = 7 poly_deadzone = 10.0 secondary_action = "left" [node name="Polygon2D" type="Polygon2D" parent="Control/HBoxLeft/DPad/Buttons/2"] modulate = Color( 1, 1, 1, 0.5 ) position = Vector2( -5, -4.37114e-07 ) polygon = PoolVector2Array( -7.07107, -7.07107, -9.2388, -3.82683, -10, -8.74228e-07, -9.2388, 3.82683, -7.07107, 7.07107, -98.9949, 98.9949, -121.244, 70, -135.23, 36.2347, -140, -1.22392e-05, -135.23, -36.2347, -121.244, -70, -98.995, -98.9949 ) script = ExtResource( 4 ) button_path = NodePath("..") idle_color = Color( 1, 1, 1, 0.501961 ) [node name="3" type="TouchScreenButton" parent="Control/HBoxLeft/DPad/Buttons"] shape = SubResource( 16 ) shape_centered = false passby_press = true action = "ui_up" script = ExtResource( 3 ) angle = 270.0 radius = 500.0 deadzone = 10.0 poly_path = NodePath("Polygon2D") poly_radius = 140.0 poly_points = 7 poly_deadzone = 10.0 secondary_action = "up" [node name="Polygon2D" type="Polygon2D" parent="Control/HBoxLeft/DPad/Buttons/3"] modulate = Color( 1, 1, 1, 0.5 ) position = Vector2( 5.96244e-08, -5 ) polygon = PoolVector2Array( 7.07107, -7.07107, 3.82684, -9.23879, 1.19249e-07, -10, -3.82684, -9.2388, -7.07107, -7.07107, -98.995, -98.9949, -70, -121.244, -36.2347, -135.23, 1.66948e-06, -140, 36.2347, -135.23, 70, -121.244, 98.9949, -98.995 ) script = ExtResource( 4 ) button_path = NodePath("..") idle_color = Color( 1, 1, 1, 0.501961 ) [node name="HBoxRight" type="HBoxContainer" parent="Control"] anchor_right = 1.0 anchor_bottom = 1.0 custom_constants/separation = 0 alignment = 2 [node name="C" type="CenterContainer" parent="Control/HBoxRight"] margin_left = 940.0 margin_top = 530.0 margin_right = 1090.0 margin_bottom = 680.0 rect_min_size = Vector2( 150, 150 ) size_flags_vertical = 8 [node name="Control" type="Control" parent="Control/HBoxRight/C"] margin_left = 75.0 margin_top = 75.0 margin_right = 75.0 margin_bottom = 75.0 [node name="Button" type="TouchScreenButton" parent="Control/HBoxRight/C/Control"] physics_interpolation_mode = 1 modulate = Color( 1, 1, 1, 0.156863 ) shape = SubResource( 3 ) shape_centered = false passby_press = true action = "ui_cancel" visibility_mode = 1 script = ExtResource( 4 ) __meta__ = { "_editor_description_": "" } color_path = NodePath("../Poly") idle_color = Color( 1, 1, 1, 0.156863 ) secondary_action = "grab" [node name="Poly" type="Polygon2D" parent="Control/HBoxRight/C/Control"] modulate = Color( 1, 1, 1, 0.156863 ) polygon = PoolVector2Array( 70, 0, 64.6716, 26.7878, 49.4975, 49.4975, 26.7878, 64.6716, -3.0598e-06, 70, -26.7878, 64.6716, -49.4975, 49.4975, -64.6716, 26.7878, -70, -6.11959e-06, -64.6716, -26.7878, -49.4975, -49.4975, -26.7878, -64.6716, 8.34742e-07, -70, 26.7879, -64.6716, 49.4975, -49.4975, 64.6716, -26.7878 ) script = ExtResource( 8 ) is_baked = false radius = 70.0 [node name="Key" type="Label" parent="Control/HBoxRight/C/Control"] modulate = Color( 1, 0, 0.301961, 1 ) margin_left = -75.0 margin_top = -75.0 margin_right = 75.0 margin_bottom = 75.0 custom_fonts/font = SubResource( 6 ) text = "c" align = 1 valign = 1 uppercase = true [node name="Sprite" type="Sprite" parent="Control/HBoxRight/C/Control"] material = SubResource( 11 ) scale = Vector2( -0.45, 0.45 ) texture = ExtResource( 6 ) [node name="X" type="CenterContainer" parent="Control/HBoxRight"] margin_left = 1090.0 margin_top = 530.0 margin_right = 1240.0 margin_bottom = 680.0 rect_min_size = Vector2( 150, 150 ) size_flags_vertical = 8 [node name="Control" type="Control" parent="Control/HBoxRight/X"] margin_left = 75.0 margin_top = 75.0 margin_right = 75.0 margin_bottom = 75.0 [node name="Button" type="TouchScreenButton" parent="Control/HBoxRight/X/Control"] modulate = Color( 1, 1, 1, 0.156863 ) shape = SubResource( 4 ) shape_centered = false passby_press = true action = "ui_accept" visibility_mode = 1 script = ExtResource( 4 ) __meta__ = { "_editor_description_": "" } color_path = NodePath("../Poly") idle_color = Color( 1, 1, 1, 0.156863 ) secondary_action = "jump" [node name="Poly" type="Polygon2D" parent="Control/HBoxRight/X/Control"] modulate = Color( 1, 1, 1, 0.156863 ) polygon = PoolVector2Array( 70, 0, 64.6716, 26.7878, 49.4975, 49.4975, 26.7878, 64.6716, -3.0598e-06, 70, -26.7878, 64.6716, -49.4975, 49.4975, -64.6716, 26.7878, -70, -6.11959e-06, -64.6716, -26.7878, -49.4975, -49.4975, -26.7878, -64.6716, 8.34742e-07, -70, 26.7879, -64.6716, 49.4975, -49.4975, 64.6716, -26.7878 ) script = ExtResource( 8 ) is_baked = false radius = 70.0 [node name="Key" type="Label" parent="Control/HBoxRight/X/Control"] modulate = Color( 0, 0.894118, 0.211765, 1 ) margin_left = -75.0 margin_top = -75.0 margin_right = 75.0 margin_bottom = 75.0 custom_fonts/font = SubResource( 6 ) text = "x" align = 1 valign = 1 uppercase = true [node name="Sprite" type="Sprite" parent="Control/HBoxRight/X/Control"] material = SubResource( 12 ) scale = Vector2( -0.45, 0.45 ) texture = ExtResource( 9 ) [node name="HBoxTop" type="HBoxContainer" parent="Control"] anchor_right = 1.0 anchor_bottom = 1.0 custom_constants/separation = 0 alignment = 2 [node name="Z" type="CenterContainer" parent="Control/HBoxTop"] margin_left = 940.0 margin_right = 1090.0 margin_bottom = 150.0 rect_min_size = Vector2( 150, 150 ) size_flags_vertical = 0 [node name="Control" type="Control" parent="Control/HBoxTop/Z"] margin_left = 75.0 margin_top = 75.0 margin_right = 75.0 margin_bottom = 75.0 [node name="Button" type="TouchScreenButton" parent="Control/HBoxTop/Z/Control"] physics_interpolation_mode = 1 modulate = Color( 1, 1, 1, 0.156863 ) shape = SubResource( 3 ) shape_centered = false passby_press = true action = "zoom" visibility_mode = 1 script = ExtResource( 4 ) __meta__ = { "_editor_description_": "" } color_path = NodePath("../Poly") idle_color = Color( 1, 1, 1, 0.156863 ) [node name="Poly" type="Polygon2D" parent="Control/HBoxTop/Z/Control"] modulate = Color( 1, 1, 1, 0.156863 ) polygon = PoolVector2Array( 70, 0, 64.6716, 26.7878, 49.4975, 49.4975, 26.7878, 64.6716, -3.0598e-06, 70, -26.7878, 64.6716, -49.4975, 49.4975, -64.6716, 26.7878, -70, -6.11959e-06, -64.6716, -26.7878, -49.4975, -49.4975, -26.7878, -64.6716, 8.34742e-07, -70, 26.7879, -64.6716, 49.4975, -49.4975, 64.6716, -26.7878 ) script = ExtResource( 8 ) is_baked = false radius = 70.0 [node name="Sprite" type="Sprite" parent="Control/HBoxTop/Z/Control"] scale = Vector2( 0.419533, 0.419533 ) texture = ExtResource( 2 ) [node name="Key" type="Label" parent="Control/HBoxTop/Z/Control"] visible = false modulate = Color( 1, 0, 0.301961, 1 ) margin_left = -75.0 margin_top = -75.0 margin_right = 75.0 margin_bottom = 75.0 custom_fonts/font = SubResource( 6 ) text = "c" align = 1 valign = 1 uppercase = true [node name="Pause" type="CenterContainer" parent="Control/HBoxTop"] margin_left = 1090.0 margin_right = 1240.0 margin_bottom = 150.0 rect_min_size = Vector2( 150, 150 ) size_flags_vertical = 0 [node name="Control" type="Control" parent="Control/HBoxTop/Pause"] margin_left = 75.0 margin_top = 75.0 margin_right = 75.0 margin_bottom = 75.0 [node name="Button" type="TouchScreenButton" parent="Control/HBoxTop/Pause/Control"] modulate = Color( 1, 1, 1, 0.156863 ) shape = SubResource( 5 ) shape_centered = false passby_press = true action = "ui_pause" visibility_mode = 1 script = ExtResource( 4 ) __meta__ = { "_editor_description_": "" } color_path = NodePath("../Poly") idle_color = Color( 1, 1, 1, 0.156863 ) [node name="Poly" type="Polygon2D" parent="Control/HBoxTop/Pause/Control"] modulate = Color( 1, 1, 1, 0.156863 ) polygon = PoolVector2Array( 70, 0, 64.6716, 26.7878, 49.4975, 49.4975, 26.7878, 64.6716, -3.0598e-06, 70, -26.7878, 64.6716, -49.4975, 49.4975, -64.6716, 26.7878, -70, -6.11959e-06, -64.6716, -26.7878, -49.4975, -49.4975, -26.7878, -64.6716, 8.34742e-07, -70, 26.7879, -64.6716, 49.4975, -49.4975, 64.6716, -26.7878 ) script = ExtResource( 8 ) is_baked = false radius = 70.0 [node name="Control" type="Control" parent="Control/HBoxTop/Pause/Control"] rect_scale = Vector2( 7, 7 ) [node name="ColorRect" type="ColorRect" parent="Control/HBoxTop/Pause/Control/Control"] margin_left = -5.0 margin_top = -6.0 margin_right = -1.0 margin_bottom = 6.0 [node name="ColorRect2" type="ColorRect" parent="Control/HBoxTop/Pause/Control/Control"] margin_left = 1.0 margin_top = -6.0 margin_right = 5.0 margin_bottom = 6.0 ================================================ FILE: src/autoload/touch_screen_button.gd ================================================ tool extends Node2D export var is_var := false setget set_is_var export var circle_size := 10.0 setget set_circle func set_is_var(arg): is_var = arg update() func set_circle(arg): circle_size = arg update() func _draw(): draw_circle(Vector2.ZERO, circle_size, Color.white) ================================================ FILE: src/class/EaseMover.gd ================================================ class_name EaseMover var show := true var clock := 0.0 var time := 0.5 var last := -1.0 var from := Vector2.ZERO var to := Vector2.ZERO var current := Vector2.ZERO var node var is_complete setget , get_is_complete var is_less setget , get_is_less var is_last setget , get_is_last func _init(_time := time, _clock := clock, _from := from, _to := to, _node := node): time = _time clock = _time if _clock < 0.0 else _clock from = _from to = _to node = _node func count(delta, arg := show, is_smooth := true): last = clock clock = clamp(clock + (delta if arg else -delta), 0, time) return smooth() if is_smooth else (clock / time) func move(delta, arg := show, is_smooth := true): current = from.linear_interpolate(to, count(delta, arg, is_smooth)) if is_instance_valid(node): node.rect_position = current return current func from_lerp_to(arg := (clock / time)): return from.linear_interpolate(to, arg) func frac(): return clock / time func smooth(): return smoothstep(0, 1, clock / time) func get_is_complete(): return clock == time func get_is_less(): return clock < time func get_is_last(): return clock == last ================================================ FILE: src/class/SaveDict.gd ================================================ extends Resource class_name SaveDict export var dict : Dictionary = {} ================================================ FILE: src/class/shape/Circle.gd ================================================ tool extends PolyShape export var radius := 50.0 setget set_radius export var circle_offset := Vector2.ZERO setget set_offset export var points := 16 setget set_points func _draw(): if !is_poly and gon.size() > 2: draw_colored_polygon(gon, Color.white, PoolVector2Array(), null, null, true) func shape(): gon = [] for i in points: gon.append(circle_offset + (radius * Vector2.RIGHT.rotated(TAU * (float(i) / points)))) func set_radius(arg := radius): radius = abs(arg) u() func set_offset(arg := circle_offset): circle_offset = arg u() func set_points(arg := points): points = max(arg, 3) u() ================================================ FILE: src/class/shape/Petals.gd ================================================ tool extends PolyShape export var width := 8.5 setget set_width export var length := 17.0 setget set_length export var points := 5 setget set_points export var offset := Vector2.ZERO setget set_offset func _draw(): if !is_poly and gon.size() > 2: draw_colored_polygon(gon, Color.white, PoolVector2Array(), null, null, true) func shape(): gon = [] for i in 4: var r = (float(i) / 4.0) * TAU gon.append((Vector2(1,-1) * width).rotated(r)) var s = Vector2(length, 0).rotated(r) for y in points + 1: gon.append(s + Vector2(width, 0).rotated(r + lerp(-PI*.5, PI*.5, float(y) / points))) func set_width(arg := width): width = arg u() func set_length(arg := length): length = arg u() func set_offset(arg := offset): offset = arg u() func set_points(arg := points): points = max(arg, 1) u() ================================================ FILE: src/class/shape/Poly2Mesh.gd ================================================ tool extends Node2D export var is_act := false setget set_is_act export var array_mesh : ArrayMesh export var polygon_path : NodePath = "." setget set_polygon_path onready var polygon_node : Polygon2D = get_node_or_null(polygon_path) export var mesh_path : NodePath = "." setget set_mesh_path onready var mesh_node = get_node_or_null(mesh_path) func set_is_act(arg := is_act): is_act = arg if is_act and Engine.editor_hint: act() func set_polygon_path(arg := polygon_path): polygon_path = arg polygon_node = get_node_or_null(polygon_path) func set_mesh_path(arg := mesh_path): mesh_path = arg mesh_node = get_node_or_null(mesh_path) func act(): var st = SurfaceTool.new() st.begin(Mesh.PRIMITIVE_TRIANGLES) st.add_color(Color(1, 1, 1)) st.add_uv(Vector2(0, 0)) var gon = polygon_node.polygon var gs = gon.size() for i in gs: var n = posmod(i + 1, gs) var tri = PoolVector3Array([Vector3.ZERO, Vector3(gon[i].x, gon[i].y, 0), Vector3(gon[n].x, gon[n].y, 0)]) st.add_triangle_fan(tri) array_mesh = st.commit() if mesh_node is MeshInstance2D: mesh_node.set_deferred("mesh", array_mesh) elif mesh_node is MultiMeshInstance2D: mesh_node.multimesh.set_deferred("mesh", array_mesh) ================================================ FILE: src/class/shape/PolyShape.gd ================================================ tool extends CanvasItem class_name PolyShape var gon := PoolVector2Array() var is_poly := false export var poly_path : NodePath = "." setget set_poly onready var poly := get_node_or_null(poly_path) export var is_baked := true setget set_baked func u(): if !poly: poly = get_node_or_null(poly_path) is_poly = poly and "polygon" in poly if is_baked and is_poly: return shape() if is_poly: poly.polygon = gon if Engine.editor_hint: property_list_changed_notify() update() func shape(): pass func set_poly(arg := poly_path): poly_path = arg poly = null u() func set_baked(arg := is_baked): is_baked = arg if !arg: u() ================================================ FILE: src/class/shape/Rectangle.gd ================================================ tool extends PolyShape export var size := Vector2.ONE * 50 setget set_size export var rect_offset := Vector2.ZERO setget set_offset export var radius := Plane(0, -1, -1, -1) setget set_radius export var points := 8 setget set_points var vertex_merge := 0.05 func _draw(): if !is_poly and gon.size() > 2: draw_colored_polygon(gon, Color.white, PoolVector2Array(), null, null, true) func shape(): gon = [] var vec = [Vector2.ONE, Vector2(-1, 1), -Vector2.ONE, Vector2(1, -1)] var rad = [radius.x, radius.y, radius.z, radius.d] for i in 4: var lil = min(size.x, size.y) var r = rad[0] if rad[i] == -1 else rad[i] r = INF if r == -2 else r * lil if (r > 0 and r <= 1.0) else r r = clamp(r, 0, lil) if points > 1 and r > 0: var v = vec[i] * size - (vec[i] * r) for p in points: var a = ((PI*.5) * i) + ((PI*.5) * (float(p) / (points - 1))) var vertex = rect_offset + v + Vector2(r, 0).rotated(a) var is_do = true if i > 0 and (p == 0 or (i == 3 and p == points - 1)): is_do = vertex.distance_to(gon[-1 if p == 0 else 0]) > vertex_merge if is_do: gon.append(vertex) else: gon.append(rect_offset + vec[i] * size) func set_offset(arg := rect_offset): rect_offset = arg u() func set_points(arg := points): points = max(arg, 1) u() func set_size(arg := size): size = arg.abs() u() func set_radius(arg := radius): radius = arg u() func get_rect(): return Rect2(rect_offset - size, size * 2.0) ================================================ FILE: src/class/shape/TreeTop.gd ================================================ tool extends PolyShape export var leaves := 8 setget set_leaves export var dist := 130.0 setget set_dist export var radius := 70.0 setget set_radius export var points := 8 setget set_points export var draw_offset := Vector2.ZERO setget set_offset export var is_draw_debug := false setget set_debug var _draw_me := Vector2.ZERO var _draw_circle := Vector2.ZERO func _draw(): if !is_poly and gon.size() > 2: draw_colored_polygon(gon, Color.white, PoolVector2Array(), null, null, true) if is_draw_debug: var c = Color(0,0,0, 0.5) draw_line(Vector2.ZERO, Vector2(dist * 2, 0), c, 5.0) draw_line(Vector2.ZERO, _draw_me, c, 5.0) draw_circle(_draw_me, 10, c) draw_circle(_draw_circle, radius, c) func shape(): gon = [] var s = Vector2(dist, 0) var r = PI*(1.0/leaves) var line = Vector2(dist * 3.0, 0).rotated(r) radius = max(radius, Vector2(dist, 0).distance_to(Vector2(dist, 0).rotated(r))) var seg = Geometry.segment_intersects_circle(line, Vector2.ZERO, s, radius) var l = line * (1.0 - seg) var ang = (l - s).angle() #print("r: ", rad2deg(r), " leaves: ", leaves, " line: ", line, "seg: ", seg, " l: ", l, " ang: ", rad2deg(ang)) _draw_me = l _draw_circle = s for i in leaves: var a = (float(i) / leaves) * TAU for y in points: gon.append(draw_offset + s.rotated(a) + Vector2(radius, 0).rotated(a + lerp(-ang, ang, float(y) / points))) func set_leaves(arg := leaves): leaves = max(1, arg) u() func set_dist(arg := dist): dist = abs(arg) u() func set_radius(arg := radius): radius = arg u() func set_points(arg := points): points = max(arg, 1) u() func set_offset(arg := draw_offset): draw_offset = arg u() func set_debug(arg := is_draw_debug): is_draw_debug = arg u() ================================================ FILE: src/cutscene/Clock.gd ================================================ extends Node func act(): var p = Shared.player var d = Shared.door_in for i in [p, d]: if !is_instance_valid(i): return Cutscene.is_playing = true Cam.target_node = d d.gem.visible = true d.clock.visible = true d.clock.scale = Vector2.ZERO if Wipe.is_wipe: yield(Wipe, "complete") if !p.spr_easy.is_complete: yield(p, "show_up") if abs(d.to_local(p.global_position).x) < 50.0: p.joy.x = [-1, 1][randi() % 2] yield(get_tree().create_timer(0.27), "timeout") p.joy.x = 0.0 p.dir_x *= -1 yield(get_tree().create_timer(0.2), "timeout") d.is_clock = true Audio.play("clock_collect", 0.9, 1.1) UI.down.show = true yield(get_tree().create_timer(1.0), "timeout") UI.rank_text(Shared.clock_rank) yield(get_tree().create_timer(0.8), "timeout") UI.down.show = false Cam.target_node = p Cutscene.is_playing = false ================================================ FILE: src/cutscene/Cutscene.gd ================================================ extends Node var is_playing := false setget set_is_playing signal playing onready var goal_show := $GoalShow var is_show_goal := false onready var gem_collect := $GemCollect var is_collect := false onready var clock := $Clock var is_clock := false var is_faster := false onready var start_game := $StartGame var is_start_game := false onready var door_unlock := $DoorUnlock var is_door_unlock := false func _enter_tree(): Shared.connect("scene_changed", self, "scene_changed") func scene_changed(): if is_playing: return if is_show_goal: is_show_goal = false goal_show.act() elif is_collect: is_collect = false gem_collect.act() elif is_clock: is_clock = false clock.act() elif is_faster: is_faster = false if Wipe.is_wipe: yield(Wipe, "complete") Audio.play("clock_collect", 1.33) elif is_start_game: is_start_game = false start_game.act() func set_is_playing(arg := is_playing): is_playing = arg emit_signal("playing", is_playing) ================================================ FILE: src/cutscene/Cutscene.tscn ================================================ [gd_scene load_steps=8 format=2] [ext_resource path="res://src/cutscene/Cutscene.gd" type="Script" id=1] [ext_resource path="res://src/cutscene/GemCollect.gd" type="Script" id=2] [ext_resource path="res://src/cutscene/GoalShow.gd" type="Script" id=3] [ext_resource path="res://src/cutscene/Clock.gd" type="Script" id=4] [ext_resource path="res://src/cutscene/DoorUnlock.gd" type="Script" id=5] [ext_resource path="res://src/cutscene/StartGame.gd" type="Script" id=6] [ext_resource path="res://src/actor/Gem.tscn" type="PackedScene" id=7] [node name="Cutscene" type="Node"] script = ExtResource( 1 ) [node name="StartGame" type="Node" parent="."] script = ExtResource( 6 ) [node name="GoalShow" type="Node" parent="."] script = ExtResource( 3 ) [node name="GemCollect" type="Node" parent="."] script = ExtResource( 2 ) [node name="Clock" type="Node" parent="."] script = ExtResource( 4 ) [node name="DoorUnlock" type="Node" parent="."] script = ExtResource( 5 ) [node name="Gem" parent="DoorUnlock" instance=ExtResource( 7 )] [node name="Gems" type="Node2D" parent="DoorUnlock"] z_index = 48 z_as_relative = false ================================================ FILE: src/cutscene/DoorUnlock.gd ================================================ extends Node onready var gem := $Gem onready var gems_node := $Gems onready var gems := [] export var radius := 150.0 export var turn_speed := 3.0 export var turn_sign := 1.0 var player var door var gem_count = 0 var clock := 0.0 var time := 10.0 var step := 0 signal done export var gem_offset := 0.2 var gem_time := 1.0 var gem_last := 0.0 var gem_step := 0.0 var gem_shrink := Vector2(50, 0.5) var socket_pos := Vector2.ZERO var socket_ease := EaseMover.new(1.0) var click_ease := EaseMover.new(0.5) func _ready(): set_physics_process(false) gem.visible = false gem.scale = Vector2.ZERO for i in 50: gems_node.add_child(gem.duplicate()) gems = gems_node.get_children() gem.z_index = gems_node.z_index + 1 gem.z_as_relative = false func _physics_process(delta): clock += delta if player.joy.x != 0: var dist = door.to_local(player.global_position) if abs(dist.x) > 150 or clock > 3.0: player.joy.x = 0 player.dir_x *= -1 clock = 0.0 return gem_last = gem_step gem_step = floor(clock / gem_offset) if gem_step != gem_last and gem_step < gem_count: Audio.play("gem_piano", lerp(0.5, 1.5, float(gem_step) / float(gem_count - 1))) var shrink = clamp(clock - gem_shrink.x, 0.0, gem_shrink.y) / gem_shrink.y for i in gems.size(): var f = clock - (gem_offset * i) var frac = clamp(f, 0.0, gem_time) / gem_time var under = abs(min(f, 0.0)) var a = (TAU * (float(i) / float(gem_count))) + ((clock + under) * turn_speed) var pos = Vector2(0, radius * (1.0 - shrink)).rotated(a * turn_sign) gems[i].position = gems_node.to_local(Shared.player.global_position).linear_interpolate(pos, frac) gems[i].scale = Vector2.ONE * ease(frac - shrink, 0.5) gem.scale = Vector2.ONE * lerp(0.0, 2.5, smoothstep(0.0, 1.0, shrink)) var speedy = 30 match step: 0: Clouds.day_scale = lerp(1.0, speedy, ease(clamp(clock / (gem_offset * gem_count), 0.0, 1.0), 3.0)) 1: Clouds.day_scale = lerp(speedy, 1.0, smoothstep(0.0, 1.0, (clock - gem_shrink.x) / 1.0)) 2: var se = socket_ease.count(delta) gem.global_position = gems_node.global_position.linear_interpolate(socket_pos, se) 3: var w = ease(abs(wrapf(click_ease.count(delta, click_ease.show, false) * 2.0, -1.0, 1.0)), -5.0) gem.scale = Vector2.ONE * lerp(2.5, 2.2, w) if clock > time: step += 1 match step: 1: time += 2.0 Audio.play("clock_collect", 0.8, 1.2) #door.is_fade = true Cam.target_node = gem 2: time += socket_ease.time socket_ease.clock = 0.0 gems_node.visible = false 3: time += click_ease.time click_ease.clock = 0.0 Audio.play("gem_show", 0.2, 0.4) 4: door.gem_color(true) gem.visible = false emit_signal("done") set_physics_process(false) func act(d): if !is_instance_valid(d): return door = d player = Shared.player Cutscene.is_playing = true gems_node.global_position = door.global_position + Shared.rot(Vector2(0, -300), door.dir) gems_node.global_rotation = door.global_rotation gem.position = gems_node.position socket_pos = door.global_position + Shared.rot(Vector2(0, -10), door.dir) Cam.target_node = null Cam.target_pos = door.global_position.linear_interpolate(gems_node.global_position, 2.0 / 3.0) Cam.start_zoom(0) gem_count = door.gem_count door.is_cutscene = false UI.up.show = false gem.visible = true gem.scale = Vector2.ZERO gems_node.visible = true for i in gems.size(): gems[i].visible = i < gem_count gems[i].scale = Vector2.ZERO clock = 0.0 step = 0 time = (gem_count * gem_offset) + gem_time gem_shrink.x = time turn_sign = 1.0 if randf() > 0.5 else -1.0 gem_last = 0 #if randf() > 0.5: turn_speed = -turn_speed var dist = door.to_local(player.global_position) player.joy = Vector2(sign(dist.x) if dist.x else player.dir_x, 0) set_physics_process(true) yield(self, "done") Cam.target_node = player Cutscene.is_playing = false ================================================ FILE: src/cutscene/GemCollect.gd ================================================ extends Node func act(): var p = Shared.player var d = Shared.door_in for i in [p, d]: if !is_instance_valid(i): return Cutscene.is_playing = true Cam.target_node = d d.clock.visible = false d.gem.visible = true d.gem_color() if Wipe.is_wipe: yield(Wipe, "complete") if !p.spr_easy.is_complete: yield(p, "show_up") p.joy.x = [-1, 1][randi() % 2] yield(get_tree().create_timer(0.27), "timeout") p.joy.x = 0.0 p.dir_x *= -1 yield(get_tree().create_timer(0.2), "timeout") d.gem_fade() Audio.play("gem_collect", 0.8) UI.up.show = true yield(get_tree().create_timer(1.0), "timeout") UI.gem_text(Shared.gem_count) yield(get_tree().create_timer(0.8), "timeout") UI.up.show = false Cam.target_node = p Cutscene.is_playing = false Cutscene.scene_changed() ================================================ FILE: src/cutscene/GoalShow.gd ================================================ extends Node func act(): var p = Shared.player var g = Shared.goal for i in [p, g]: if !is_instance_valid(i): return Cutscene.is_playing = true Cam.target_node = null if Wipe.is_wipe: yield(Wipe, "complete") if !p.spr_easy.is_complete: yield(p, "show_up") Cam.pan(g.global_position) yield(Cam, "pan_complete") g.shine() yield(get_tree().create_timer(0.8), "timeout") Cam.pan(p.global_position) yield(Cam, "pan_complete") Cam.target_node = p Cutscene.is_playing = false ================================================ FILE: src/cutscene/StartGame.gd ================================================ extends Node func act(): var p = Shared.player var d = Shared.door_in for i in [p, d]: if !is_instance_valid(i): return Cutscene.is_playing = true Cam.target_node = null Cam.global_position += Vector2(0, -400) Cam.target_pos = Cam.global_position Cam.emit_signal("moved") d.modulate.a = 0.0 d.arrow.is_locked = true p.move_and_collide(Vector2(0, -600)) p.door_exit = null p.is_floor = false p.has_jumped = true p.anim.play("jump") if Wipe.is_wipe: yield(Wipe, "complete") yield(get_tree().create_timer(1.2), "timeout") Cam.target_node = p yield(get_tree().create_timer(0.2), "timeout") Cutscene.is_playing = false ================================================ FILE: src/detail/BarrelCacti.gd ================================================ tool extends Node2D onready var petals := $FlowerPetals export var palette := 0 setget set_palette func _ready(): set_palette() func set_palette(arg := palette): palette = arg if petals: petals.palette = palette palette = petals.palette ================================================ FILE: src/detail/BarrelCacti.tscn ================================================ [gd_scene load_steps=5 format=2] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=1] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=2] [ext_resource path="res://src/detail/BarrelCacti.gd" type="Script" id=3] [ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=4] [node name="BarrelCacti" type="Node2D"] z_index = -10 z_as_relative = false script = ExtResource( 3 ) palette = 1 [node name="Visible" type="VisibilityNotifier2D" parent="."] visible = false modulate = Color( 1, 0, 0, 1 ) position = Vector2( 0, 31 ) rect = Rect2( -35, -37.5, 70, 70 ) script = ExtResource( 2 ) node_path = NodePath("../Circle") [node name="Circle" type="Polygon2D" parent="."] modulate = Color( 0.364706, 1, 0, 1 ) position = Vector2( 0, 28.5 ) polygon = PoolVector2Array( 35, 0, 32.3358, 13.3939, 24.7487, 24.7487, 13.3939, 32.3358, -1.5299e-06, 35, -13.3939, 32.3358, -24.7487, 24.7487, -32.3358, 13.3939, -35, -3.0598e-06, -32.3358, -13.3939, -24.7487, -24.7487, -13.3939, -32.3358, 4.17371e-07, -35, 13.3939, -32.3358, 24.7487, -24.7487, 32.3358, -13.3939 ) script = ExtResource( 4 ) radius = 35.0 [node name="FlowerPetals" parent="." instance=ExtResource( 1 )] z_index = 0 z_as_relative = true ================================================ FILE: src/detail/Bench.tscn ================================================ [gd_scene load_steps=3 format=2] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=1] [ext_resource path="res://media/image/details/bench.svg" type="Texture" id=2] [node name="Bench" type="Node2D"] z_index = -20 z_as_relative = false [node name="Visible" type="VisibilityNotifier2D" parent="."] visible = false modulate = Color( 1, 0, 0, 1 ) rect = Rect2( -75, -20, 145, 80 ) script = ExtResource( 1 ) node_path = NodePath("..") [node name="Sprite" type="Sprite" parent="."] position = Vector2( 0, 20 ) scale = Vector2( 0.5, 0.5 ) texture = ExtResource( 2 ) ================================================ FILE: src/detail/Candle.tscn ================================================ [gd_scene load_steps=12 format=2] [ext_resource path="res://src/detail/Spring.gd" type="Script" id=1] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=2] [ext_resource path="res://media/image/details/candle.png" type="Texture" id=3] [ext_resource path="res://media/audio/sfx/btn0.wav" type="AudioStream" id=4] [ext_resource path="res://media/image/box/round_rect400.png" type="Texture" id=5] [ext_resource path="res://src/shader/circle_fade.gdshader" type="Shader" id=6] [ext_resource path="res://src/detail/LightBase.gd" type="Script" id=7] [ext_resource path="res://media/image/details/flame.png" type="Texture" id=8] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=9] [sub_resource type="ShaderMaterial" id=3] shader = ExtResource( 6 ) shader_param/width = 0.1 [sub_resource type="CapsuleShape2D" id=1] radius = 13.0 height = 50.0 [node name="Candle" type="Node2D"] z_index = 1 z_as_relative = false script = ExtResource( 1 ) sprites_path = NodePath("Sprites") add_vel = 4.0 weight = 4.0 audio_path = NodePath("Audio/Hit") [node name="Visible" type="VisibilityNotifier2D" parent="."] visible = false modulate = Color( 1, 0, 0, 1 ) rect = Rect2( -100, -166.5, 200, 200 ) script = ExtResource( 9 ) node_path = NodePath("..") [node name="Sprites" type="Node2D" parent="."] [node name="Sprite" type="Sprite" parent="Sprites"] scale = Vector2( 0.25, 0.25 ) texture = ExtResource( 3 ) offset = Vector2( 0, -200 ) [node name="Scale" type="Node2D" parent="Sprites"] position = Vector2( 0, -66.5 ) script = ExtResource( 7 ) is_night = true [node name="Flame" type="Sprite" parent="Sprites/Scale"] position = Vector2( 0, -9 ) scale = Vector2( 0.25, 0.25 ) texture = ExtResource( 8 ) [node name="Light" type="Sprite" parent="Sprites/Scale" groups=["light"]] modulate = Color( 1, 1, 0.439216, 0.14902 ) material = SubResource( 3 ) position = Vector2( 0, 0.5 ) scale = Vector2( 0.5, 0.5 ) z_index = 100 z_as_relative = false texture = ExtResource( 5 ) [node name="Wick" type="Polygon2D" parent="Sprites"] position = Vector2( 0, -65 ) color = Color( 0, 0, 0, 1 ) polygon = PoolVector2Array( 3, 3.6, 2.15061, 5.65061, 0.0999998, 6.5, -0.1, 6.5, -2.15061, 5.65061, -3, 3.6, -3, -3.6, -2.15061, -5.65061, -0.0999999, -6.5, 0.0999999, -6.5, 2.15061, -5.65061, 3, -3.6 ) script = ExtResource( 2 ) size = Vector2( 3, 6.5 ) radius = Plane( -2, -1, -1, -1 ) points = 3 [node name="Area2D" type="Area2D" parent="."] visible = false position = Vector2( 0, -35 ) collision_layer = 16 collision_mask = 38 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] shape = SubResource( 1 ) [node name="Audio" type="Node2D" parent="."] [node name="Hit" type="AudioStreamPlayer" parent="Audio"] stream = ExtResource( 4 ) bus = "SFX" [connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] ================================================ FILE: src/detail/Fence.gd ================================================ tool extends Node2D export var length := 3 setget set_length export var is_offset := false setget set_offset var width := 100 onready var sprite := $Sprite func _ready(): set_length() set_offset() func set_length(arg := length): length = max(1, abs(arg)) if sprite: sprite.region_rect.size.x = width * length func set_offset(arg := is_offset): is_offset = arg if sprite: sprite.region_rect.position.x = width * int(is_offset) ================================================ FILE: src/detail/Fence.tscn ================================================ [gd_scene load_steps=5 format=2] [ext_resource path="res://src/shader/repeat_x_axis.gdshader" type="Shader" id=1] [ext_resource path="res://media/image/details/fence_pattern.svg" type="Texture" id=2] [ext_resource path="res://src/detail/Fence.gd" type="Script" id=3] [sub_resource type="ShaderMaterial" id=2] shader = ExtResource( 1 ) [node name="Fence" type="Node2D"] modulate = Color( 0.486275, 0.466667, 0.568627, 1 ) z_index = -5 z_as_relative = false script = ExtResource( 3 ) length = 2 [node name="Sprite" type="Sprite" parent="."] material = SubResource( 2 ) scale = Vector2( 0.4, 0.4 ) texture = ExtResource( 2 ) offset = Vector2( 0, -50 ) region_enabled = true region_rect = Rect2( 0, 0, 200, 100 ) region_filter_clip = true ================================================ FILE: src/detail/Flower.gd ================================================ tool extends PaletteSwap ================================================ FILE: src/detail/Flower.tscn ================================================ [gd_scene load_steps=8 format=2] [ext_resource path="res://src/class/shape/Petals.gd" type="Script" id=1] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=2] [ext_resource path="res://src/detail/PaletteSwap.gd" type="Script" id=3] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=4] [ext_resource path="res://media/audio/sfx/piano_high.wav" type="AudioStream" id=5] [ext_resource path="res://src/detail/Spring.gd" type="Script" id=6] [sub_resource type="CapsuleShape2D" id=1] height = 73.0 [node name="Flower" type="Node2D"] z_index = -10 z_as_relative = false script = ExtResource( 3 ) palette = 1 colors = PoolColorArray( 1, 1, 1, 1, 1, 0, 0, 1, 1, 0.470588, 0.796078, 1, 0.47451, 1, 1, 1, 1, 0.980392, 0, 1, 1, 0.788235, 0, 1 ) sprite_path = NodePath("Images/Petals") [node name="Visible" type="VisibilityNotifier2D" parent="."] visible = false rect = Rect2( -30, -80, 60, 100 ) script = ExtResource( 4 ) node_path = NodePath("../Images") [node name="Spring" type="Node2D" parent="."] script = ExtResource( 6 ) sprites_path = NodePath("../Images") add_vel = 5.0 weight = 3.0 audio_path = NodePath("../Audio/Hit") pitch_from = 0.8 pitch_to = 1.2 [node name="Images" type="Node2D" parent="."] [node name="Stem" type="Polygon2D" parent="Images"] modulate = Color( 0.137255, 1, 0, 1 ) position = Vector2( 0, -25 ) polygon = PoolVector2Array( 6.5, 25.01, 5.6305, 28.255, 3.255, 30.6305, 0.00999994, 31.5, -0.0100005, 31.5, -3.255, 30.6305, -5.6305, 28.255, -6.5, 25.01, -6.5, -31.5, 6.5, -31.5 ) script = ExtResource( 2 ) size = Vector2( 6.5, 31.5 ) radius = Plane( 6.49, -1, 0, 0 ) points = 4 [node name="Petals" type="Polygon2D" parent="Images"] modulate = Color( 1, 0, 0, 1 ) position = Vector2( 0, -50 ) rotation = 0.785398 polygon = PoolVector2Array( 8.5, -8.5, 17, -8.5, 21.9962, -6.87664, 25.084, -2.62664, 25.084, 2.62664, 21.9962, 6.87664, 17, 8.5, 8.5, 8.5, 8.5, 17, 6.87664, 21.9962, 2.62664, 25.084, -2.62665, 25.084, -6.87665, 21.9962, -8.5, 17, -8.5, 8.5, -17, 8.5, -21.9962, 6.87664, -25.084, 2.62664, -25.084, -2.62665, -21.9962, -6.87665, -17, -8.5, -8.5, -8.5, -8.5, -17, -6.87664, -21.9962, -2.62665, -25.084, 2.62665, -25.084, 6.87664, -21.9962, 8.5, -17 ) script = ExtResource( 1 ) [node name="Area2D" type="Area2D" parent="."] position = Vector2( 0, -25 ) collision_layer = 16 collision_mask = 38 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] visible = false shape = SubResource( 1 ) [node name="Audio" type="Node2D" parent="."] [node name="Hit" type="AudioStreamPlayer" parent="Audio"] stream = ExtResource( 5 ) bus = "SFX" [connection signal="area_entered" from="Area2D" to="Spring" method="_on_Area2D_area_entered"] ================================================ FILE: src/detail/FlowerPetals.tscn ================================================ [gd_scene load_steps=7 format=2] [ext_resource path="res://src/detail/PaletteSwap.gd" type="Script" id=1] [ext_resource path="res://src/class/shape/Petals.gd" type="Script" id=2] [ext_resource path="res://media/audio/sfx/guitar_pluck.wav" type="AudioStream" id=3] [ext_resource path="res://src/detail/Spring.gd" type="Script" id=4] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=5] [sub_resource type="CircleShape2D" id=1] radius = 35.0 [node name="FlowerPetals" type="Area2D"] z_index = -10 z_as_relative = false collision_layer = 16 collision_mask = 38 script = ExtResource( 1 ) palette = 1 colors = PoolColorArray( 1, 1, 1, 1, 1, 0, 0, 1, 1, 0.470588, 0.796078, 1, 0.47451, 1, 1, 1, 1, 0.980392, 0, 1, 1, 0.788235, 0, 1 ) sprite_path = NodePath("Images") [node name="CollisionShape2D" type="CollisionShape2D" parent="."] visible = false shape = SubResource( 1 ) [node name="Visible" type="VisibilityNotifier2D" parent="."] visible = false modulate = Color( 1, 0, 0, 1 ) rect = Rect2( -25, -25, 50, 50 ) script = ExtResource( 5 ) node_path = NodePath("../Images") [node name="Spring" type="Node2D" parent="."] script = ExtResource( 4 ) sprites_path = NodePath("../Images") add_vel = 7.0 weight = 2.5 audio_path = NodePath("../Audio/Hit") pitch_from = 0.85 pitch_to = 1.15 [node name="Images" type="Node2D" parent="." groups=["mirror"]] modulate = Color( 1, 0, 0, 1 ) [node name="Petals" type="Polygon2D" parent="Images"] rotation = 0.785397 polygon = PoolVector2Array( 8.5, -8.5, 17, -8.5, 21.9962, -6.87664, 25.084, -2.62664, 25.084, 2.62664, 21.9962, 6.87664, 17, 8.5, 8.5, 8.5, 8.5, 17, 6.87664, 21.9962, 2.62664, 25.084, -2.62665, 25.084, -6.87665, 21.9962, -8.5, 17, -8.5, 8.5, -17, 8.5, -21.9962, 6.87664, -25.084, 2.62664, -25.084, -2.62665, -21.9962, -6.87665, -17, -8.5, -8.5, -8.5, -8.5, -17, -6.87664, -21.9962, -2.62665, -25.084, 2.62665, -25.084, 6.87664, -21.9962, 8.5, -17 ) script = ExtResource( 2 ) [node name="Audio" type="Node2D" parent="."] [node name="Hit" type="AudioStreamPlayer" parent="Audio"] stream = ExtResource( 3 ) bus = "SFX" [connection signal="area_entered" from="." to="Spring" method="_on_Area2D_area_entered"] ================================================ FILE: src/detail/Lamppost.tscn ================================================ [gd_scene load_steps=10 format=2] [ext_resource path="res://media/image/details/lamppost.svg" type="Texture" id=1] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=2] [ext_resource path="res://src/detail/Spring.gd" type="Script" id=3] [ext_resource path="res://media/audio/sfx/btn0.wav" type="AudioStream" id=4] [ext_resource path="res://media/image/box/round_rect400.png" type="Texture" id=5] [ext_resource path="res://src/shader/circle_fade.gdshader" type="Shader" id=6] [ext_resource path="res://src/detail/LightBase.gd" type="Script" id=7] [sub_resource type="ShaderMaterial" id=5] shader = ExtResource( 6 ) shader_param/width = 0.05 [sub_resource type="CapsuleShape2D" id=1] radius = 8.0 height = 180.0 [node name="Lamppost" type="Node2D"] z_index = -40 z_as_relative = false [node name="Visible" type="VisibilityNotifier2D" parent="."] visible = false modulate = Color( 1, 0, 0, 1 ) rect = Rect2( -200, -355, 400, 400 ) script = ExtResource( 2 ) node_path = NodePath("..") [node name="Sprites" type="Node2D" parent="."] [node name="Sprite" type="Sprite" parent="Sprites"] scale = Vector2( 0.5, 0.5 ) texture = ExtResource( 1 ) offset = Vector2( 0, -200 ) [node name="Light" type="Sprite" parent="Sprites" groups=["light"]] modulate = Color( 1, 1, 0.439216, 0.14902 ) material = SubResource( 5 ) position = Vector2( 0, -155 ) z_index = 100 z_as_relative = false texture = ExtResource( 5 ) script = ExtResource( 7 ) is_night = true [node name="Spring" type="Node2D" parent="."] script = ExtResource( 3 ) sprites_path = NodePath("../Sprites") add_vel = 0.6 weight = 5.0 audio_path = NodePath("Hit") pitch_from = 0.25 pitch_to = 0.5 [node name="Area2D" type="Area2D" parent="Spring"] visible = false collision_layer = 16 collision_mask = 38 [node name="CollisionShape2D" type="CollisionShape2D" parent="Spring/Area2D"] position = Vector2( 0, -100 ) shape = SubResource( 1 ) [node name="Hit" type="AudioStreamPlayer" parent="Spring"] stream = ExtResource( 4 ) bus = "SFX" [connection signal="area_entered" from="Spring/Area2D" to="Spring" method="_on_Area2D_area_entered"] ================================================ FILE: src/detail/LightBase.gd ================================================ extends Node2D var t := 0.0 export var time_scale := 1.5 export var sin_scale := 0.1 export var is_night := false var night_ease := EaseMover.new(4.0) var night_min := 0.3 onready var start_scale := scale func _ready(): if is_night: night_ease.clock = night_ease.time * int(Clouds.moon_frac > night_min) func _process(delta): t += delta var s = 1.0 + (sin(t * time_scale) * sin_scale) if is_night: s *= night_ease.count(delta, Clouds.moon_frac > night_min) scale = start_scale * s ================================================ FILE: src/detail/PaletteSwap.gd ================================================ tool extends Node2D class_name PaletteSwap export var palette := 0 setget set_palette export var colors : PoolColorArray = ["FFF", "5DFF00", "7ee356", "FFC6E9", "79FFFF", "FFC900"] export var sprite_path : NodePath onready var sprite := get_node_or_null(sprite_path) func _ready(): set_palette() func set_palette(arg := palette): palette = posmod(int(arg), colors.size()) if sprite: sprite.modulate = colors[palette] ================================================ FILE: src/detail/PineTree.tscn ================================================ [gd_scene load_steps=6 format=2] [ext_resource path="res://media/image/details/pine_tree.png" type="Texture" id=1] [ext_resource path="res://src/detail/Spring.gd" type="Script" id=2] [ext_resource path="res://media/audio/sfx/btn0.wav" type="AudioStream" id=3] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=4] [sub_resource type="CapsuleShape2D" id=1] radius = 40.0 height = 880.0 [node name="PineTree" type="Node2D"] scale = Vector2( 0.4, 0.4 ) z_index = -25 z_as_relative = false script = ExtResource( 2 ) sprites_path = NodePath("Sprites") add_vel = 0.5 weight = 5.0 audio_path = NodePath("Audio/Hit") pitch_from = 0.2 pitch_to = 0.6 [node name="Visible" type="VisibilityNotifier2D" parent="."] visible = false modulate = Color( 1, 0, 0, 1 ) rect = Rect2( -300, -910, 600, 960 ) script = ExtResource( 4 ) node_path = NodePath("..") [node name="Sprites" type="Node2D" parent="."] [node name="Sprite" type="Sprite" parent="Sprites"] texture = ExtResource( 1 ) offset = Vector2( 0, -430 ) [node name="Area2D" type="Area2D" parent="."] visible = false collision_layer = 16 collision_mask = 38 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] position = Vector2( 0, -430 ) shape = SubResource( 1 ) [node name="Audio" type="Node2D" parent="."] [node name="Hit" type="AudioStreamPlayer" parent="Audio"] stream = ExtResource( 3 ) bus = "SFX" [connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] ================================================ FILE: src/detail/RockCircle.tscn ================================================ [gd_scene format=2] [node name="Circle" type="Polygon2D"] polygon = PoolVector2Array( 200, 0, 184.776, 76.5367, 141.421, 141.421, 76.5367, 184.776, -8.74228e-06, 200, -76.5367, 184.776, -141.421, 141.421, -184.776, 76.5367, -200, -1.74846e-05, -184.776, -76.5367, -141.421, -141.421, -76.5367, -184.776, 2.38498e-06, -200, 76.5367, -184.776, 141.421, -141.421, 184.776, -76.5367 ) ================================================ FILE: src/detail/RockSquare.tscn ================================================ [gd_scene format=2] [node name="Square" type="Polygon2D"] polygon = PoolVector2Array( 200, 80, 190.866, 125.922, 164.853, 164.853, 125.922, 190.866, 80, 200, -80, 200, -125.922, 190.866, -164.853, 164.853, -190.866, 125.922, -200, 80, -200, -80, -190.866, -125.922, -164.853, -164.853, -125.922, -190.866, -80, -200, 80, -200, 125.922, -190.866, 164.853, -164.853, 190.866, -125.922, 200, -80 ) ================================================ FILE: src/detail/Rocks.tscn ================================================ [gd_scene format=2] [node name="Rocks" type="Node2D"] [node name="Polygon2D" type="Polygon2D" parent="."] position = Vector2( 40, 80 ) polygon = PoolVector2Array( 40, 0, 36.9552, 15.3073, 28.2843, 28.2843, 15.3073, 36.9552, -1.74846e-06, 40, -15.3073, 36.9552, -28.2843, 28.2843, -36.9552, 15.3073, -40, -3.49691e-06, -36.9552, -15.3073, -28.2843, -28.2843, -15.3073, -36.9552, 4.76995e-07, -40, 15.3073, -36.9552, 28.2843, -28.2843, 36.9552, -15.3073 ) [node name="Polygon2D2" type="Polygon2D" parent="."] position = Vector2( -80, -40 ) polygon = PoolVector2Array( 40, 0, 36.9552, 15.3073, 28.2843, 28.2843, 15.3073, 36.9552, -1.74846e-06, 40, -15.3073, 36.9552, -28.2843, 28.2843, -36.9552, 15.3073, -40, -3.49691e-06, -36.9552, -15.3073, -28.2843, -28.2843, -15.3073, -36.9552, 4.76995e-07, -40, 15.3073, -36.9552, 28.2843, -28.2843, 36.9552, -15.3073 ) [node name="Polygon2D3" type="Polygon2D" parent="."] position = Vector2( 80, -80 ) polygon = PoolVector2Array( 80, 0, 73.9104, 30.6147, 56.5685, 56.5685, 30.6147, 73.9104, -3.49691e-06, 80, -30.6147, 73.9104, -56.5685, 56.5685, -73.9104, 30.6147, -80, -6.99382e-06, -73.9104, -30.6147, -56.5685, -56.5685, -30.6147, -73.9104, 9.5399e-07, -80, 30.6147, -73.9104, 56.5685, -56.5686, 73.9104, -30.6147 ) ================================================ FILE: src/detail/Saguaro.tscn ================================================ [gd_scene load_steps=6 format=2] [ext_resource path="res://media/image/details/saguaro.svg" type="Texture" id=1] [ext_resource path="res://src/detail/Spring.gd" type="Script" id=2] [ext_resource path="res://media/audio/sfx/btn0.wav" type="AudioStream" id=3] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=4] [sub_resource type="CapsuleShape2D" id=1] radius = 50.0 height = 700.0 [node name="Saguaro" type="Node2D"] scale = Vector2( 0.4, 0.4 ) z_index = -5 z_as_relative = false script = ExtResource( 2 ) __meta__ = { "_editor_description_": "" } sprites_path = NodePath("Sprites") add_vel = 0.5 weight = 5.0 audio_path = NodePath("Audio/Hit") pitch_from = 0.2 pitch_to = 0.5 [node name="Visible" type="VisibilityNotifier2D" parent="."] visible = false modulate = Color( 1, 0, 0, 1 ) rect = Rect2( -200, -750, 400, 800 ) script = ExtResource( 4 ) node_path = NodePath("..") [node name="Sprites" type="Node2D" parent="."] position = Vector2( 0, -7.62939e-06 ) [node name="Sprite" type="Sprite" parent="Sprites"] position = Vector2( 0, -350 ) texture = ExtResource( 1 ) [node name="Area2D" type="Area2D" parent="."] visible = false collision_layer = 16 collision_mask = 38 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] position = Vector2( 0, -350 ) shape = SubResource( 1 ) [node name="Audio" type="Node2D" parent="."] [node name="Hit" type="AudioStreamPlayer" parent="Audio"] stream = ExtResource( 3 ) bus = "SFX" [connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] ================================================ FILE: src/detail/SignGrab.tscn ================================================ [gd_scene load_steps=6 format=2] [ext_resource path="res://media/image/UI/btn_x.png" type="Texture" id=1] [ext_resource path="res://media/image/UI/hand.png" type="Texture" id=2] [ext_resource path="res://src/menu/options/Key.tscn" type="PackedScene" id=3] [sub_resource type="StyleBoxFlat" id=2] bg_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 10 corner_radius_top_right = 10 corner_radius_bottom_right = 10 corner_radius_bottom_left = 10 [sub_resource type="StyleBoxFlat" id=1] bg_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 25 corner_radius_top_right = 25 corner_radius_bottom_right = 25 corner_radius_bottom_left = 25 [node name="SignGrab" type="Node2D"] z_index = -5 z_as_relative = false [node name="Panels" type="Node2D" parent="."] modulate = Color( 0.898039, 0.615686, 0.341176, 1 ) [node name="Panel2" type="Panel" parent="Panels"] modulate = Color( 0.9, 0.9, 0.9, 1 ) margin_left = -12.5 margin_top = -100.0 margin_right = 12.5 margin_bottom = 10.0 custom_styles/panel = SubResource( 2 ) __meta__ = { "_edit_use_anchors_": false } [node name="Panel" type="Panel" parent="Panels"] margin_left = -75.0 margin_top = -150.0 margin_right = 75.0 margin_bottom = -50.0 custom_styles/panel = SubResource( 1 ) __meta__ = { "_edit_use_anchors_": false } [node name="Btn" type="Sprite" parent="."] visible = false position = Vector2( -35, -100 ) scale = Vector2( 0.241383, 0.241383 ) texture = ExtResource( 1 ) [node name="Sprite" type="Sprite" parent="."] position = Vector2( 35, -100 ) scale = Vector2( -0.45, 0.45 ) texture = ExtResource( 2 ) [node name="CenterContainer" type="CenterContainer" parent="."] margin_left = -85.0 margin_top = -150.0 margin_right = 15.0 margin_bottom = -50.0 __meta__ = { "_edit_use_anchors_": false } [node name="Key" parent="CenterContainer" instance=ExtResource( 3 )] margin_left = 25.0 margin_top = 25.0 margin_right = 75.0 margin_bottom = 75.0 text = "C" action = "grab" is_connect = true is_shrink = true ================================================ FILE: src/detail/SignReset.tscn ================================================ [gd_scene load_steps=6 format=2] [ext_resource path="res://media/image/UI/reset.png" type="Texture" id=1] [ext_resource path="res://media/image/UI/btn_b.png" type="Texture" id=2] [ext_resource path="res://src/menu/options/Key.tscn" type="PackedScene" id=3] [sub_resource type="StyleBoxFlat" id=2] bg_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 10 corner_radius_top_right = 10 corner_radius_bottom_right = 10 corner_radius_bottom_left = 10 [sub_resource type="StyleBoxFlat" id=1] bg_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 25 corner_radius_top_right = 25 corner_radius_bottom_right = 25 corner_radius_bottom_left = 25 [node name="SignReset" type="Node2D"] z_index = -5 z_as_relative = false [node name="Panels" type="Node2D" parent="."] modulate = Color( 0.898039, 0.615686, 0.341176, 1 ) [node name="Panel2" type="Panel" parent="Panels"] modulate = Color( 0.9, 0.9, 0.9, 1 ) margin_left = -12.5 margin_top = -100.0 margin_right = 12.5 margin_bottom = 10.0 custom_styles/panel = SubResource( 2 ) __meta__ = { "_edit_use_anchors_": false } [node name="Panel" type="Panel" parent="Panels"] margin_left = -75.0 margin_top = -150.0 margin_right = 75.0 margin_bottom = -50.0 custom_styles/panel = SubResource( 1 ) __meta__ = { "_edit_use_anchors_": false } [node name="Sprite" type="Sprite" parent="."] position = Vector2( 35, -100 ) scale = Vector2( 0.419533, 0.419533 ) texture = ExtResource( 1 ) [node name="Btn" type="Sprite" parent="."] visible = false position = Vector2( -35, -100 ) scale = Vector2( 0.241383, 0.241383 ) texture = ExtResource( 2 ) [node name="CenterContainer" type="CenterContainer" parent="."] margin_left = -85.0 margin_top = -150.0 margin_right = 15.0 margin_bottom = -50.0 __meta__ = { "_edit_use_anchors_": false } [node name="Key" parent="CenterContainer" instance=ExtResource( 3 )] margin_left = 25.0 margin_top = 25.0 margin_right = 75.0 margin_bottom = 75.0 text = "R" action = "reset" is_connect = true is_shrink = true ================================================ FILE: src/detail/SignSpin.tscn ================================================ [gd_scene load_steps=6 format=2] [ext_resource path="res://media/image/UI/btn_x.png" type="Texture" id=1] [ext_resource path="res://src/menu/options/Key.tscn" type="PackedScene" id=2] [ext_resource path="res://media/image/UI/key_up.png" type="Texture" id=3] [sub_resource type="StyleBoxFlat" id=2] bg_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 10 corner_radius_top_right = 10 corner_radius_bottom_right = 10 corner_radius_bottom_left = 10 [sub_resource type="StyleBoxFlat" id=1] bg_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 25 corner_radius_top_right = 25 corner_radius_bottom_right = 25 corner_radius_bottom_left = 25 [node name="SignSpin" type="Node2D"] z_index = -5 z_as_relative = false [node name="Panels" type="Node2D" parent="."] modulate = Color( 0.898039, 0.615686, 0.341176, 1 ) [node name="Panel2" type="Panel" parent="Panels"] modulate = Color( 0.9, 0.9, 0.9, 1 ) margin_left = -12.5 margin_top = -100.0 margin_right = 12.5 margin_bottom = 10.0 custom_styles/panel = SubResource( 2 ) __meta__ = { "_edit_use_anchors_": false } [node name="Panel" type="Panel" parent="Panels"] margin_left = -75.0 margin_top = -150.0 margin_right = 75.0 margin_bottom = -50.0 custom_styles/panel = SubResource( 1 ) __meta__ = { "_edit_use_anchors_": false } [node name="Btn" type="Sprite" parent="."] visible = false position = Vector2( -40, -100 ) scale = Vector2( 0.24, 0.24 ) texture = ExtResource( 1 ) [node name="Plus" type="Node2D" parent="."] position = Vector2( 7.5, -100 ) [node name="Fill" type="Line2D" parent="Plus"] points = PoolVector2Array( 0, -10, 0, 10 ) default_color = Color( 1, 1, 1, 1 ) begin_cap_mode = 2 end_cap_mode = 2 [node name="Fill2" type="Line2D" parent="Plus"] rotation = 1.57079 points = PoolVector2Array( 0, -10, 0, 10 ) default_color = Color( 1, 1, 1, 1 ) begin_cap_mode = 2 end_cap_mode = 2 [node name="Keys" type="Node2D" parent="."] position = Vector2( 45, -100 ) scale = Vector2( 0.18, 0.18 ) [node name="Up" type="Sprite" parent="Keys"] position = Vector2( 0, -110 ) texture = ExtResource( 3 ) [node name="Down" type="Sprite" parent="Keys"] position = Vector2( 0, 110 ) rotation = -3.14159 texture = ExtResource( 3 ) [node name="CenterContainer" type="CenterContainer" parent="."] margin_left = -90.0 margin_top = -150.0 margin_right = 10.0 margin_bottom = -50.0 __meta__ = { "_edit_use_anchors_": false } [node name="Key" parent="CenterContainer" instance=ExtResource( 2 )] margin_left = 25.0 margin_top = 25.0 margin_right = 75.0 margin_bottom = 75.0 text = "C" action = "grab" is_connect = true is_shrink = true ================================================ FILE: src/detail/SignZoom.tscn ================================================ [gd_scene load_steps=6 format=2] [ext_resource path="res://media/image/UI/magnify.png" type="Texture" id=1] [ext_resource path="res://media/image/UI/btn_b.png" type="Texture" id=2] [ext_resource path="res://src/menu/options/Key.tscn" type="PackedScene" id=3] [sub_resource type="StyleBoxFlat" id=2] bg_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 10 corner_radius_top_right = 10 corner_radius_bottom_right = 10 corner_radius_bottom_left = 10 [sub_resource type="StyleBoxFlat" id=1] bg_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 25 corner_radius_top_right = 25 corner_radius_bottom_right = 25 corner_radius_bottom_left = 25 [node name="SignZoom" type="Node2D"] z_index = -5 z_as_relative = false [node name="Panels" type="Node2D" parent="."] modulate = Color( 0.898039, 0.615686, 0.341176, 1 ) [node name="Panel2" type="Panel" parent="Panels"] modulate = Color( 0.9, 0.9, 0.9, 1 ) margin_left = -12.5 margin_top = -100.0 margin_right = 12.5 margin_bottom = 10.0 custom_styles/panel = SubResource( 2 ) __meta__ = { "_edit_use_anchors_": false } [node name="Panel" type="Panel" parent="Panels"] margin_left = -75.0 margin_top = -150.0 margin_right = 75.0 margin_bottom = -50.0 custom_styles/panel = SubResource( 1 ) __meta__ = { "_edit_use_anchors_": false } [node name="Sprite" type="Sprite" parent="."] position = Vector2( 35, -100 ) scale = Vector2( 0.419533, 0.419533 ) texture = ExtResource( 1 ) [node name="Btn" type="Sprite" parent="."] visible = false position = Vector2( -35, -100 ) scale = Vector2( 0.241383, 0.241383 ) texture = ExtResource( 2 ) [node name="CenterContainer" type="CenterContainer" parent="."] margin_left = -85.0 margin_top = -150.0 margin_right = 15.0 margin_bottom = -50.0 __meta__ = { "_edit_use_anchors_": false } [node name="Key" parent="CenterContainer" instance=ExtResource( 3 )] margin_left = 25.0 margin_top = 25.0 margin_right = 75.0 margin_bottom = 75.0 text = "Z" action = "zoom" is_connect = true is_shrink = true ================================================ FILE: src/detail/Snowman.tscn ================================================ [gd_scene load_steps=6 format=2] [ext_resource path="res://media/image/details/snowman.svg" type="Texture" id=1] [ext_resource path="res://src/detail/Spring.gd" type="Script" id=2] [ext_resource path="res://media/audio/sfx/btn0.wav" type="AudioStream" id=3] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=4] [sub_resource type="CapsuleShape2D" id=1] radius = 100.0 height = 400.0 [node name="Snowman" type="Node2D"] script = ExtResource( 2 ) sprites_path = NodePath("Sprites") add_vel = 1.0 weight = 3.0 audio_path = NodePath("Audio/Hit") [node name="Visible" type="VisibilityNotifier2D" parent="."] visible = false modulate = Color( 1, 0, 0, 1 ) rect = Rect2( -150, -620, 300, 650 ) script = ExtResource( 4 ) node_path = NodePath("..") [node name="Sprites" type="Node2D" parent="."] [node name="Snowman" type="Sprite" parent="Sprites"] position = Vector2( 0, -325 ) texture = ExtResource( 1 ) [node name="Area2D" type="Area2D" parent="."] collision_layer = 80 collision_mask = 38 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] visible = false position = Vector2( 0, -300 ) shape = SubResource( 1 ) [node name="Audio" type="Node2D" parent="."] [node name="Hit" type="AudioStreamPlayer" parent="Audio"] stream = ExtResource( 3 ) bus = "SFX" [connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] ================================================ FILE: src/detail/Spring.gd ================================================ extends Node2D export var sprites_path : NodePath onready var sprites := get_node_or_null(sprites_path) export var is_scale := false var angle := 0.0 var velocity := 0.0 var target := 0.0 export var add_vel := 6.0 export var weight := 2.0 var cooldown_clock := 0.0 export var cooldown_time := 1.0 export var is_audio := false export var audio_path : NodePath onready var audio_hit := get_node_or_null(audio_path) export var pitch_from := 0.7 export var pitch_to := 1.3 func _process(delta): velocity = lerp(velocity, (target - angle) * 0.5, delta * weight) angle += velocity * 60.0 * delta if sprites: if is_scale: sprites.scale = Vector2.ONE + (Vector2.ONE * angle) else: sprites.rotation_degrees = angle # cooldown cooldown_clock = max(cooldown_clock - delta, 0) func hit(_scale := 1.0): velocity += add_vel * _scale if is_audio and audio_hit: audio_hit.pitch_scale = rand_range(pitch_from, pitch_to) audio_hit.play() func _on_Area2D_area_entered(area): if cooldown_clock == 0: var gpx = to_local(area.global_position).x if abs(gpx) < 1.0: gpx = 1.0 if randf() > 0.5 else -1.0 hit(-sign(gpx)) cooldown_clock = cooldown_time ================================================ FILE: src/detail/Tree.tscn ================================================ [gd_scene load_steps=7 format=2] [ext_resource path="res://media/image/details/TreeBark.svg" type="Texture" id=1] [ext_resource path="res://src/detail/Spring.gd" type="Script" id=2] [ext_resource path="res://src/detail/PaletteSwap.gd" type="Script" id=3] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=4] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=5] [sub_resource type="CapsuleShape2D" id=1] radius = 20.0 height = 50.0 [node name="Tree" type="Node2D"] z_index = -30 z_as_relative = false script = ExtResource( 3 ) palette = 1 colors = PoolColorArray( 1, 1, 1, 1, 0.364706, 1, 0, 1, 0.494118, 0.890196, 0.337255, 1, 1, 0.776471, 0.913725, 1, 0.47451, 1, 1, 1, 1, 0.788235, 0, 1, 1, 0.980392, 0, 1 ) sprite_path = NodePath("Sprites/TreeTop/Sprite") [node name="Visible" type="VisibilityNotifier2D" parent="."] visible = false position = Vector2( 0, -100 ) scale = Vector2( 0.5, 0.5 ) rect = Rect2( -100, -200, 200, 440 ) script = ExtResource( 4 ) node_path = NodePath("../Sprites/TreeBark") [node name="Spring" type="Node2D" parent="."] script = ExtResource( 2 ) sprites_path = NodePath("../Sprites") add_vel = 0.7 weight = 6.0 audio_path = NodePath("../Sprites/TreeTop/Audio/Hit") pitch_from = 0.25 pitch_to = 0.5 [node name="Area2D" type="Area2D" parent="Spring"] visible = false collision_layer = 16 collision_mask = 38 [node name="CollisionShape2D" type="CollisionShape2D" parent="Spring/Area2D"] position = Vector2( 0, -50 ) shape = SubResource( 1 ) [node name="Sprites" type="Node2D" parent="."] scale = Vector2( 0.5, 0.5 ) [node name="TreeBark" type="Sprite" parent="Sprites"] modulate = Color( 1, 0.666667, 0, 1 ) position = Vector2( 0, -200 ) texture = ExtResource( 1 ) [node name="TreeTop" parent="Sprites" instance=ExtResource( 5 )] position = Vector2( 0, -400 ) z_index = 0 z_as_relative = true script = null [node name="Spring" parent="Sprites/TreeTop" index="1"] add_vel = 0.025 pitch_from = 0.4 pitch_to = 0.7 [node name="Sprite" parent="Sprites/TreeTop" index="2"] modulate = Color( 0.364706, 1, 0, 1 ) [connection signal="area_entered" from="Spring/Area2D" to="Spring" method="_on_Area2D_area_entered"] [editable path="Sprites/TreeTop"] ================================================ FILE: src/detail/TreeTop.tscn ================================================ [gd_scene load_steps=7 format=2] [ext_resource path="res://src/class/shape/TreeTop.gd" type="Script" id=1] [ext_resource path="res://src/detail/PaletteSwap.gd" type="Script" id=2] [ext_resource path="res://media/audio/sfx/btn0.wav" type="AudioStream" id=3] [ext_resource path="res://src/detail/Spring.gd" type="Script" id=4] [ext_resource path="res://src/detail/Visible.gd" type="Script" id=5] [sub_resource type="CircleShape2D" id=1] radius = 175.0 [node name="TreeTop" type="Node2D"] z_index = -50 z_as_relative = false script = ExtResource( 2 ) palette = 2 colors = PoolColorArray( 1, 1, 1, 1, 0.364706, 1, 0, 1, 0.494118, 0.890196, 0.337255, 1, 1, 0.776471, 0.913725, 1, 0.47451, 1, 1, 1, 1, 0.788235, 0, 1, 1, 0.980392, 0, 1 ) sprite_path = NodePath("Sprite") [node name="Visible" type="VisibilityNotifier2D" parent="."] visible = false rect = Rect2( -200, -200, 400, 400 ) script = ExtResource( 5 ) node_path = NodePath("../Sprite") [node name="Spring" type="Node2D" parent="."] script = ExtResource( 4 ) sprites_path = NodePath("../Sprite") is_scale = true add_vel = 0.012 weight = 10.0 audio_path = NodePath("../Audio/Hit") pitch_from = 0.25 pitch_to = 0.5 [node name="Sprite" type="Polygon2D" parent="."] modulate = Color( 0.494118, 0.890196, 0.337255, 1 ) polygon = PoolVector2Array( 156.458, -64.8071, 174.201, -54.2799, 188.104, -39.0379, 196.96, -20.4052, 200, 0, 196.96, 20.4052, 188.104, 39.0379, 174.201, 54.2799, 156.458, 64.8072, 161.56, 84.7968, 160.613, 105.405, 153.7, 124.843, 141.421, 141.421, 124.843, 153.7, 105.405, 160.613, 84.7968, 161.56, 64.8071, 156.458, 54.2799, 174.201, 39.0379, 188.104, 20.4052, 196.96, -8.74228e-06, 200, -20.4052, 196.96, -39.0379, 188.104, -54.2799, 174.201, -64.8072, 156.458, -84.7968, 161.56, -105.405, 160.613, -124.843, 153.7, -141.421, 141.421, -153.7, 124.843, -160.613, 105.405, -161.56, 84.7968, -156.458, 64.8071, -174.201, 54.2799, -188.104, 39.0379, -196.96, 20.4052, -200, -1.74846e-05, -196.96, -20.4052, -188.104, -39.038, -174.201, -54.2799, -156.458, -64.8072, -161.56, -84.7968, -160.613, -105.405, -153.7, -124.843, -141.421, -141.421, -124.843, -153.7, -105.405, -160.613, -84.7968, -161.56, -64.8071, -156.458, -54.2799, -174.201, -39.038, -188.104, -20.4052, -196.96, 2.38498e-06, -200, 20.4052, -196.96, 39.0379, -188.104, 54.2799, -174.201, 64.8071, -156.458, 84.7968, -161.56, 105.405, -160.613, 124.843, -153.7, 141.421, -141.421, 153.7, -124.843, 160.613, -105.405, 161.56, -84.7968 ) script = ExtResource( 1 ) [node name="Area2D" type="Area2D" parent="."] visible = false collision_layer = 16 collision_mask = 38 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] shape = SubResource( 1 ) [node name="Audio" type="Node2D" parent="."] [node name="Hit" type="AudioStreamPlayer" parent="Audio"] stream = ExtResource( 3 ) bus = "SFX" [connection signal="area_entered" from="Area2D" to="Spring" method="_on_Area2D_area_entered"] ================================================ FILE: src/detail/Visible.gd ================================================ extends VisibilityNotifier2D export var node_path : NodePath = "." onready var show_node := get_node_or_null(node_path) func _enter_tree(): connect("screen_entered", self, "enter") connect("screen_exited", self, "exit") func enter(): if show_node: show_node.visible = true func exit(): if show_node: show_node.visible = false ================================================ FILE: src/map/_test/1.tscn ================================================ [gd_scene load_steps=4 format=2] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=8] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 8 )] tile_data = PoolIntArray( -65549, 0, 0, -65548, 0, 0, -131068, 0, 0, -131067, 0, 0, -13, 0, 0, -12, 0, 0, -65532, 0, 0, -65531, 0, 0, 65527, 0, 0, 65528, 0, 0, 65529, 0, 0, 65530, 0, 0, 65531, 0, 0, 65532, 0, 0, 65533, 0, 0, 65534, 0, 0, 65535, 0, 0, 0, 0, 0, 1, 0, 0, 131063, 0, 0, 131064, 0, 0, 131065, 0, 0, 131066, 0, 0, 131067, 0, 0, 131068, 0, 0, 131069, 0, 0, 131070, 0, 0, 131071, 0, 0, 65536, 0, 0, 65537, 0, 0, 196599, 0, 0, 196600, 0, 0, 196601, 0, 0, 196602, 0, 0, 196603, 0, 0, 196604, 0, 0, 196605, 0, 0, 196606, 0, 0, 196607, 0, 0, 131072, 0, 0, 131073, 0, 0, 262135, 0, 0, 262136, 0, 0, 262137, 0, 0, 262141, 0, 0, 262142, 0, 0, 262143, 0, 0, 196608, 0, 0, 196609, 0, 0, 327677, 0, 0, 327678, 0, 0, 327679, 0, 0, 262144, 0, 0, 262145, 0, 0, 393213, 0, 0, 393214, 0, 0, 393215, 0, 0, 327680, 0, 0, 327681, 0, 0, 458749, 0, 0, 458750, 0, 0, 458751, 0, 0, 393216, 0, 0, 393217, 0, 0, 524285, 0, 0, 524286, 0, 0, 524287, 0, 0, 458752, 0, 0, 458753, 0, 0 ) detail = 1 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] [node name="Actors" type="Node2D" parent="."] [node name="Box4" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -350, -150 ) can_spin = false [node name="Box1" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -250, -50 ) can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -450, -50 ) dir = 3 can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -350, -50 ) dir = 3 can_spin = false [node name="Box5" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 250, 450 ) dir = 1 can_spin = false [node name="Box6" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -50, 850 ) dir = 2 can_spin = false [node name="Box7" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -350, 550 ) dir = 3 can_spin = false [node name="Details" type="Node2D" parent="."] ================================================ FILE: src/map/worlds/0/0_hub.tscn ================================================ [gd_scene load_steps=20 format=2] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=1] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorBig.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Snowman.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=15] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=16] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=17] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=18] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=19] [node name="Map" type="Node2D"] [node name="SolidTileMap4" parent="." instance=ExtResource( 5 )] detail = 4 bg_palette = 1 [node name="SolidTileMap0" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 917532, 1610612736, 0, 917533, 1610612736, 0, 917534, 1610612736, 0, 917535, 1610612736, 0, 917536, 1610612736, 0, 983068, 1610612736, 0, 983069, 1610612736, 0, 983070, 1610612736, 0, 983071, 1610612736, 0, 983072, 1610612736, 0 ) [node name="SolidTileMap1" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 1048611, 1610612736, 0, 1048612, 1610612736, 0, 1114147, 1610612736, 0, 1114148, 1610612736, 0, 1179683, 1610612736, 0, 1179684, 1610612736, 0, 1245219, 1610612736, 0, 1245220, 1610612736, 0, 1310755, 1610612736, 0, 1310756, 1610612736, 0 ) detail = 1 [node name="SolidTileMap2" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 1179674, 1610612736, 0, 1179675, 1610612736, 0, 1245210, 1610612736, 0, 1245211, 1610612736, 0, 1310746, 1610612736, 0, 1310747, 1610612736, 0, 1376282, 1610612736, 0, 1376283, 1610612736, 0, 1441818, 1610612736, 0, 1441819, 1610612736, 0 ) detail = 2 [node name="SolidTileMap3" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 1507358, 1610612736, 0, 1507359, 1610612736, 0, 1507360, 1610612736, 0, 1507361, 1610612736, 0, 1507362, 1610612736, 0, 1572894, 1610612736, 0, 1572895, 1610612736, 0, 1572896, 1610612736, 0, 1572897, 1610612736, 0, 1572898, 1610612736, 0 ) detail = 3 [node name="SpikeMap" parent="." instance=ExtResource( 4 )] [node name="Actors" type="Node2D" parent="."] [node name="D1" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 3050, 1300 ) scene_path = "res://src/map/worlds/1/0_hub.tscn" [node name="D2" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 3800, 1850 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/2/0_hub.tscn" gem_count = 5 [node name="D3" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 3250, 2600 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/3/0_hub.tscn" gem_count = 10 [node name="D4" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 2500, 2050 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2A/0_hub.tscn" gem_count = 15 [node name="NPC" parent="Actors" instance=ExtResource( 19 )] position = Vector2( 3440, 2250 ) __meta__ = { "_editor_description_": "" } idle_anim = "idle2" dye = { "eye": 0, "fit": 13, "hair": 5, "skin": 6 } hairstyle_back = 3 hairstyle_front = 2 is_npc = true lines = [ "Hello! Who are you?", "Where am I?", "What happened last night?...", "I'm looking for my keys..", "Do you have any snacks?", "Who am we?", "You look familiar...", "This might take a while!", "What is \"who\" ?", "Hmm...", "Hhhhmmmmm....." ] greeting = 0 [node name="NPC2" parent="Actors" instance=ExtResource( 19 )] position = Vector2( 3450, 1765 ) __meta__ = { "_editor_description_": "" } dir = 3 idle_anim = "bench" dye = { "eye": 18, "fit": 15, "hair": 12, "skin": 5 } hairstyle_back = 2 hairstyle_front = 7 is_npc = true lines = [ "Good to see you!", "Another lovely day...", "Call me Melody!", "I've seen plenty folks pass through here...", "Welcome to The Crossroads (:", "The starlight shines bright!", "Praise the stars!", "The world keeps on turning...", "Mhmm... beautiful! <3" ] greeting = 0 queue_write = "1" [node name="NPC3" parent="Actors" instance=ExtResource( 19 )] position = Vector2( 2700, 1750 ) __meta__ = { "_editor_description_": "" } idle_anim = "snowball" dye = { "eye": 3, "fit": 10, "hair": 13, "skin": 0 } hairstyle_back = 0 hairstyle_front = 8 hat = 3 is_npc = true lines = [ "Hey dude ^.^", "Look out!", "Think fast! (;", "Wahoo!", "Yippee!!", "Target practice ;P", "Check THIS out... (;", "Coming in hot!!!", "Coming in cold?...", "Throw one with me!", "Whatcha up tooo?", "Have you seen Robbi?" ] greeting = 0 [node name="Details" type="Node2D" parent="."] [node name="Circle" parent="Details" instance=ExtResource( 18 )] position = Vector2( 2700, 2050 ) scale = Vector2( 0.230745, 0.230745 ) [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 17 )] position = Vector2( 3050, 1500 ) rotation = -1.57079 scale = Vector2( 0.211426, 0.211426 ) [node name="Rocks" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 3250, 2400 ) rotation = -3.14159 scale = Vector2( 0.267496, 0.267496 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 18 )] position = Vector2( 3600, 1850 ) scale = Vector2( 0.23574, 0.23574 ) [node name="Cacti" type="Node2D" parent="Details"] [node name="Saguaro" parent="Details/Cacti" instance=ExtResource( 1 )] position = Vector2( 3100, 2500 ) rotation = 0.130868 scale = Vector2( 0.4, -0.4 ) [node name="Saguaro2" parent="Details/Cacti" instance=ExtResource( 1 )] position = Vector2( 3400, 2500 ) rotation = 3.01069 z_index = -15 [node name="Saguaro3" parent="Details/Cacti" instance=ExtResource( 1 )] position = Vector2( 3250, 2300 ) rotation = -0.304029 scale = Vector2( 0.3, 0.3 ) [node name="BarrelCacti" parent="Details/Cacti" instance=ExtResource( 2 )] position = Vector2( 3550, 2400 ) rotation = 1.57079 [node name="BarrelCacti2" parent="Details/Cacti" instance=ExtResource( 2 )] position = Vector2( 3350, 2250 ) palette = 5 [node name="BarrelCacti3" parent="Details/Cacti" instance=ExtResource( 2 )] position = Vector2( 3100, 2250 ) palette = 4 [node name="BarrelCacti4" parent="Details/Cacti" instance=ExtResource( 2 )] position = Vector2( 2950, 2400 ) rotation = -1.57079 palette = 2 [node name="Snow" type="Node2D" parent="Details"] [node name="PineTree" parent="Details/Snow" instance=ExtResource( 8 )] position = Vector2( 2600, 2200 ) rotation = -1.83971 z_index = -5 [node name="PineTree2" parent="Details/Snow" instance=ExtResource( 8 )] position = Vector2( 2600, 1900 ) rotation = -1.30202 [node name="Snowman" parent="Details/Snow" instance=ExtResource( 11 )] position = Vector2( 2800, 1950 ) rotation = 1.57079 scale = Vector2( -0.3, 0.3 ) [node name="Lamppost" parent="Details/Snow" instance=ExtResource( 9 )] position = Vector2( 2800, 2050 ) rotation = 1.57079 [node name="Bench" parent="Details/Snow" instance=ExtResource( 10 )] position = Vector2( 2850, 2150 ) rotation = 1.57079 [node name="Flower" parent="Details/Snow" instance=ExtResource( 12 )] position = Vector2( 2610, 1810 ) rotation = -0.785397 palette = 4 [node name="Flower3" parent="Details/Snow" instance=ExtResource( 12 )] position = Vector2( 2700, 2300 ) rotation = 3.14159 [node name="Flower2" parent="Details/Snow" instance=ExtResource( 12 )] position = Vector2( 2790, 1810 ) rotation = 0.785397 palette = 2 [node name="Grass" type="Node2D" parent="Details"] [node name="Tree" parent="Details/Grass" instance=ExtResource( 13 )] position = Vector2( 2875, 1400 ) rotation = 0.174533 z_index = -5 palette = 5 [node name="Tree3" parent="Details/Grass" instance=ExtResource( 13 )] position = Vector2( 3150, 1600 ) rotation = 2.98235 scale = Vector2( -1, 1 ) z_index = -5 [node name="Tree2" parent="Details/Grass" instance=ExtResource( 13 )] position = Vector2( 3225, 1400 ) rotation = -0.174533 scale = Vector2( -1, 1 ) palette = 3 [node name="TreeTop" parent="Details/Grass" instance=ExtResource( 14 )] position = Vector2( 2850, 1550 ) scale = Vector2( 0.7, 0.7 ) [node name="TreeTop2" parent="Details/Grass" instance=ExtResource( 14 )] position = Vector2( 3250, 1450 ) scale = Vector2( 0.7, 0.7 ) [node name="Flower5" parent="Details/Grass" instance=ExtResource( 12 )] position = Vector2( 3295, 1595 ) rotation = -3.92699 palette = 4 [node name="Flower6" parent="Details/Grass" instance=ExtResource( 12 )] position = Vector2( 2805, 1405 ) rotation = -0.785398 palette = 2 [node name="Candle" parent="Details/Grass" instance=ExtResource( 15 )] position = Vector2( 3050, 1600 ) rotation = 3.14159 [node name="FlowerPetals" parent="Details/Grass" instance=ExtResource( 7 )] position = Vector2( 2750, 1550 ) [node name="FlowerPetals2" parent="Details/Grass" instance=ExtResource( 7 )] position = Vector2( 2850, 1650 ) palette = 5 [node name="FlowerPetals3" parent="Details/Grass" instance=ExtResource( 7 )] position = Vector2( 3350, 1450 ) palette = 3 [node name="Bricks" type="Node2D" parent="Details"] [node name="Lamppost" parent="Details/Bricks" instance=ExtResource( 9 )] position = Vector2( 3675, 1625 ) rotation = 0.785397 [node name="Lamppost2" parent="Details/Bricks" instance=ExtResource( 9 )] position = Vector2( 3675, 2075 ) rotation = 2.35619 z_index = -5 [node name="Flower" parent="Details/Bricks" instance=ExtResource( 12 )] position = Vector2( 3700, 1700 ) rotation = 1.57079 [node name="Bench" parent="Details/Bricks" instance=ExtResource( 10 )] position = Vector2( 3450, 1775 ) rotation = -1.57079 [node name="Fence" parent="Details/Bricks" instance=ExtResource( 16 )] position = Vector2( 3500, 2000 ) rotation = -1.57079 [node name="Tree" parent="Details/Bricks" instance=ExtResource( 13 )] position = Vector2( 3500, 2000 ) rotation = -1.61171 palette = 3 [node name="Candle" parent="Details/Bricks" instance=ExtResource( 15 )] position = Vector2( 3500, 1900 ) rotation = -1.57079 [node name="TreeTop" parent="Details/Bricks" instance=ExtResource( 14 )] position = Vector2( 3550, 1650 ) scale = Vector2( 0.5, 0.5 ) [node name="TreeTop2" parent="Details/Bricks" instance=ExtResource( 14 )] position = Vector2( 3650, 2050 ) scale = Vector2( 0.671666, 0.671666 ) z_index = -9 [node name="FlowerPetals" parent="Details/Bricks" instance=ExtResource( 7 )] position = Vector2( 3750, 2050 ) z_index = -4 palette = 2 [node name="FlowerPetals2" parent="Details/Bricks" instance=ExtResource( 7 )] position = Vector2( 3650, 2150 ) z_index = -4 palette = 5 ================================================ FILE: src/map/worlds/0/1_start.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=1] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/actor/door/DoorBig.tscn" type="PackedScene" id=8] [ext_resource path="res://src/actor/Mirror.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=10] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=11] [ext_resource path="res://src/actor/ChatTree.gd" type="Script" id=12] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 2 )] tile_data = PoolIntArray( 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 262151, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327687, 0, 0 ) detail = 4 [node name="SpikeMap" parent="." instance=ExtResource( 3 )] [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 8 )] position = Vector2( 500, 100 ) scene_path = "res://src/map/worlds/1/0_hub.tscn" [node name="Mirror" parent="Actors" instance=ExtResource( 9 )] position = Vector2( 500, 702 ) rotation = 3.14159 dir = 2 door_path = NodePath("../Door") [node name="NPC" parent="Actors" instance=ExtResource( 11 )] position = Vector2( 150, 290 ) __meta__ = { "_editor_description_": "" } dir = 3 idle_anim = "bench" dye = { "eye": 11, "fit": 2, "hair": 0, "skin": 3 } hairstyle_back = 0 hairstyle_front = 3 is_npc = true lines = [ "Wake up sleepyhead!", "You've been out for a while!", "Welcome to ROTA... (:", "How do you look? Turn around!", "Gaze into the mirror...", "Can you feel the breeze?", "Let your eyes drift into the sky...", "I see all in the clouds..." ] greeting = 0 queue_write = "1,2" [node name="Chat" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = "\"1/0_hub\" in maps_visited" erase = "0,1,2" is_lines = 3 lines = [ "How was it out there? (:", "So many worlds to explore!" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1" [node name="Chat2" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = "gem_count > 0 and gem_count < 5" erase = "0" is_lines = 3 lines = [ "You've got a shine about you!", "Have you found a gem? (;" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1" [node name="Chat3" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = "gem_count > 4 and !(\"2/0_hub\" in maps_visited)" erase = "0" is_lines = 3 lines = [ "You are glowing! ^.^", "You've become quite the collector! (;", "That's enough gems to fit a socket!" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1,2" [node name="Chat4" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = "\"2/0_hub\" in maps_visited and !(\"3/0_hub\" in maps_visited)" erase = "0" is_lines = 3 lines = [ "How was your walk into town? (:", "Send my best to Candle Randall <3" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1" [node name="Chat5" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = "\"3/0_hub\" in maps_visited and !(\"2A/0_hub\" in maps_visited)" erase = "0" is_lines = 3 lines = [ "You've got a tan! (;", "Tell me all about the desert! ^.^", "I bet the cacti are lovely..." ] is_greeting = true greeting = 0 is_queue = true queue_write = "1,2" [node name="Chat6" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = "\"2A/0_hub\" in maps_visited and !(\"3A/0_hub\" in maps_visited)" erase = "0" is_lines = 3 lines = [ "I smell the pine trees on you!", "How was the snow?", "I hope you wore a jacket!", "Watch out for snowballs.. ;P" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1,2,3" [node name="Chat7" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = "\"3A/0_hub\" in maps_visited and !(\"2B/0_hub\" in maps_visited)" erase = "0" is_lines = 3 lines = [ "You restored the link between grasslands!", "Thank you for uniting the people <3", "The worlds are coming closer together..." ] is_greeting = true greeting = 0 is_queue = true queue_write = "1,2" [node name="Chat8" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = "\"2B/0_hub\" in maps_visited and !(\"3B/0_hub\" in maps_visited)" erase = "0" is_lines = 3 lines = [ "The townsfolk are happily reunited! <3", "Are you responsible for this? (-;", "A flame rekindled..." ] is_greeting = true greeting = 0 is_queue = true queue_write = "1,2" [node name="Chat9" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = "\"3B/0_hub\" in maps_visited and !(\"2C/0_hub\" in maps_visited)" erase = "0" is_lines = 3 lines = [ "I see visions of a tribe at peace! (:", "A link between worlds is restored...", "Harmony fills the desert! <3" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1,2" [node name="Chat10" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = "gem_count < 45 and \"2C/0_hub\" in maps_visited and !(\"0/2_end\" in maps_visited)" erase = "0" is_lines = 3 lines = [ "You came all the way back here to see me? (;", "I hope the frost has been treating you well..", "You've brought a lot of warmth to a cold place! <3" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1,2" [node name="Chat11" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = " gem_count > 44 and !(\"0/2_end\" in maps_visited)" erase = "0" is_lines = 3 lines = [ "There's no stopping you! ^.^", "Look at how far you've come (;", "Quite the collection you have...", "My friend is excited to meet you!" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1,2,3" [node name="Chat12" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = "gem_count > 49 and !(\"0/2_end\" in maps_visited)" erase = "0" is_lines = 3 lines = [ "What are you doing here!?!", "Look at all these gems! 0=", "A frosted door waits for you...", "You will be in good company (;" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1,2,3" [node name="Chat13" type="Node" parent="Actors/NPC"] script = ExtResource( 12 ) expression_string = "\"0/2_end\" in maps_visited" erase = "0" is_lines = 3 lines = [ "I see you've met my friend!", "The worlds of ROTA are reunited! (:", "You have my eternal thanks.. <3", "Where are you off to next puzzler?", "For every gem, there is a clock.. (;" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1,2,3,4" [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.97, 0.97, 0.97, 1 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 500, 400 ) scale = Vector2( 0.5, 0.5 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 650, 500 ) scale = Vector2( 0.261665, 0.261665 ) [node name="Circle3" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 350, 300 ) scale = Vector2( 0.261665, 0.261665 ) [node name="Tree" parent="Details" instance=ExtResource( 6 )] position = Vector2( 335, 200 ) rotation = -0.261799 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree2" parent="Details" instance=ExtResource( 6 )] position = Vector2( 665, 200 ) rotation = 0.261799 [node name="Tree4" parent="Details" instance=ExtResource( 6 )] position = Vector2( 800, 500 ) rotation = 1.91986 palette = 5 [node name="Tree3" parent="Details" instance=ExtResource( 6 )] position = Vector2( 200, 500 ) rotation = -1.91986 scale = Vector2( -1, 1 ) palette = 2 [node name="Flower" parent="Details" instance=ExtResource( 5 )] position = Vector2( 750, 600 ) rotation = -3.14159 palette = 2 [node name="Flower4" parent="Details" instance=ExtResource( 5 )] position = Vector2( 250, 600 ) rotation = -3.14159 palette = 5 [node name="Flower3" parent="Details" instance=ExtResource( 5 )] position = Vector2( 800, 300 ) rotation = -4.71238 [node name="Flower2" parent="Details" instance=ExtResource( 5 )] position = Vector2( 250, 200 ) palette = 3 [node name="Flower5" parent="Details" instance=ExtResource( 5 )] position = Vector2( 750, 200 ) palette = 4 [node name="Lamppost" parent="Details" instance=ExtResource( 4 )] position = Vector2( 800, 400 ) rotation = 1.57079 [node name="Lamppost2" parent="Details" instance=ExtResource( 4 )] position = Vector2( 200, 400 ) rotation = -1.57079 [node name="Bench" parent="Details" instance=ExtResource( 1 )] position = Vector2( 142, 300 ) rotation = -1.57079 [node name="Candle" parent="Details" instance=ExtResource( 7 )] position = Vector2( 650, 600 ) rotation = -3.14159 [node name="Candle2" parent="Details" instance=ExtResource( 7 )] position = Vector2( 350, 600 ) rotation = -3.14159 ================================================ FILE: src/map/worlds/0/2_end.tscn ================================================ [gd_scene load_steps=17 format=2] [ext_resource path="res://src/actor/Fade.gd" type="Script" id=1] [ext_resource path="res://src/actor/door/DoorBig.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=8] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=9] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=10] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=14] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=15] [sub_resource type="DynamicFont" id=3] size = 100 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 10 ) [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 8 )] tile_data = PoolIntArray( 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 262151, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327687, 0, 0 ) detail = 4 bg_palette = 4 [node name="SpikeMap" parent="." instance=ExtResource( 9 )] [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 500, 100 ) scene_path = "res://src/map/worlds/2C/0_hub.tscn" [node name="Message" type="Node2D" parent="Actors"] position = Vector2( 500, 650 ) z_index = 100 script = ExtResource( 1 ) [node name="Area2D" type="Area2D" parent="Actors/Message"] collision_layer = 0 collision_mask = 2 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Actors/Message/Area2D"] position = Vector2( 0, -50 ) polygon = PoolVector2Array( -150, 0, 150, 0, 250, 300, -250, 300 ) [node name="Center" type="CenterContainer" parent="Actors/Message"] margin_top = 220.0 margin_bottom = 220.0 rect_rotation = -180.0 use_top_left = true [node name="Label" type="Label" parent="Actors/Message/Center"] margin_left = -200.0 margin_top = -50.0 margin_right = 200.0 margin_bottom = 50.0 custom_colors/font_color = Color( 1, 1, 1, 1 ) custom_fonts/font = SubResource( 3 ) text = "the end" align = 1 valign = 1 [node name="NPC" parent="Actors" instance=ExtResource( 15 )] position = Vector2( 150, 290 ) dir = 3 idle_anim = "bench" dye = { "eye": 0, "fit": 0, "hair": 1, "skin": 3 } hairstyle_back = 2 hairstyle_front = 10 is_npc = true lines = [ "Hello child (:", "You are a curious one!", "You opened the door!", "This is the end of the road..", "That door has been shut for ages..", "Enjoy our peaceful little sanctuary (:" ] greeting = 0 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.97, 0.97, 0.97, 1 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( 500, 400 ) scale = Vector2( 0.5, 0.5 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( 650, 500 ) scale = Vector2( 0.261665, 0.261665 ) [node name="Circle3" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( 350, 300 ) scale = Vector2( 0.261665, 0.261665 ) [node name="Bench" parent="Details" instance=ExtResource( 4 )] position = Vector2( 150, 300 ) rotation = -1.57079 [node name="Candle" parent="Details" instance=ExtResource( 7 )] position = Vector2( 200, 400 ) rotation = -1.57079 [node name="Candle2" parent="Details" instance=ExtResource( 7 )] position = Vector2( 800, 400 ) rotation = 1.5708 [node name="Fencing5" parent="Details" instance=ExtResource( 11 )] position = Vector2( 350, 600 ) rotation = -3.14159 length = 5 is_offset = true [node name="Fencing6" parent="Details" instance=ExtResource( 11 )] position = Vector2( 650, 600 ) rotation = -3.14159 length = 5 is_offset = true [node name="Flower2" parent="Details" instance=ExtResource( 6 )] visible = false position = Vector2( 200, 200 ) rotation = -0.785397 [node name="Flower5" parent="Details" instance=ExtResource( 6 )] visible = false position = Vector2( 800, 200 ) rotation = 0.785397 palette = 4 [node name="Flower6" parent="Details" instance=ExtResource( 6 )] position = Vector2( 800, 300 ) rotation = 1.57079 [node name="FlowerPetals8" parent="Details" instance=ExtResource( 13 )] position = Vector2( 278, 665 ) palette = 2 [node name="FlowerPetals12" parent="Details" instance=ExtResource( 13 )] position = Vector2( 650, 150 ) palette = 3 [node name="FlowerPetals16" parent="Details" instance=ExtResource( 13 )] position = Vector2( 350, 150 ) palette = 5 [node name="FlowerPetals9" parent="Details" instance=ExtResource( 13 )] position = Vector2( 422, 665 ) palette = 5 [node name="FlowerPetals10" parent="Details" instance=ExtResource( 13 )] position = Vector2( 578, 665 ) [node name="FlowerPetals11" parent="Details" instance=ExtResource( 13 )] position = Vector2( 722, 665 ) palette = 3 [node name="Lamppost3" parent="Details" instance=ExtResource( 3 )] position = Vector2( 500, 600 ) rotation = 3.14159 [node name="Tree" parent="Details" instance=ExtResource( 5 )] position = Vector2( 275, 200 ) rotation = -0.261799 [node name="Tree2" parent="Details" instance=ExtResource( 5 )] position = Vector2( 725, 200 ) rotation = 0.261799 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree4" parent="Details" instance=ExtResource( 5 )] position = Vector2( 800, 500 ) rotation = 1.91986 palette = 5 [node name="Tree3" parent="Details" instance=ExtResource( 5 )] position = Vector2( 200, 500 ) rotation = -1.91986 scale = Vector2( -1, 1 ) palette = 4 [node name="TreeTop7" parent="Details" instance=ExtResource( 12 )] position = Vector2( 350.087, 600 ) scale = Vector2( 0.5, 0.5 ) [node name="TreeTop8" parent="Details" instance=ExtResource( 12 )] position = Vector2( 650, 600 ) scale = Vector2( 0.5, 0.5 ) [node name="TreeTop10" parent="Details" instance=ExtResource( 12 )] position = Vector2( 350, 200 ) scale = Vector2( 0.5, 0.5 ) [node name="TreeTop11" parent="Details" instance=ExtResource( 12 )] position = Vector2( 650, 200 ) scale = Vector2( 0.5, 0.5 ) [connection signal="area_entered" from="Actors/Message/Area2D" to="Actors/Message" method="_on_Area2D_area_entered"] [connection signal="area_exited" from="Actors/Message/Area2D" to="Actors/Message" method="_on_Area2D_area_exited"] ================================================ FILE: src/map/worlds/1/0_hub.tscn ================================================ [gd_scene load_steps=18 format=2] [ext_resource path="res://src/actor/door/DoorBig.tscn" type="PackedScene" id=1] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/ChatTree.gd" type="Script" id=5] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=9] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=15] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=16] [ext_resource path="res://src/arcade/ArcadeCab.tscn" type="PackedScene" id=17] [node name="Map" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 2 )] tile_data = PoolIntArray( 131077, 0, 0, 131078, 0, 0, 131079, 0, 0, 131080, 0, 0, 131081, 0, 0, 131082, 0, 0, 131083, 0, 0, 131084, 0, 0, 131085, 0, 0, 131086, 0, 0, 131087, 0, 0, 131088, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, 0, 0, 196616, 0, 0, 196617, 0, 0, 196618, 0, 0, 196619, 0, 0, 196620, 0, 0, 196621, 0, 0, 196622, 0, 0, 196623, 0, 0, 196624, 0, 0, 327679, 0, 0, 262144, 0, 0, 262145, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 262151, 0, 0, 262152, 0, 0, 262153, 0, 0, 262154, 0, 0, 262155, 0, 0, 262156, 0, 0, 262160, 0, 0, 262161, 0, 0, 262162, 0, 0, 393215, 0, 0, 327680, 0, 0, 327681, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327687, 0, 0, 327688, 0, 0, 327689, 0, 0, 327690, 0, 0, 327691, 0, 0, 327696, 0, 0, 327697, 0, 0, 327698, 0, 0, 458751, 0, 0, 393216, 0, 0, 393217, 0, 0, 393218, 0, 0, 393219, 0, 0, 393220, 0, 0, 393221, 0, 0, 393222, 0, 0, 393223, 0, 0, 393224, 0, 0, 393225, 0, 0, 393226, 0, 0, 393227, 0, 0, 524287, 0, 0, 458752, 0, 0, 458753, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 0, 0, 458762, 0, 0, 458763, 0, 0, 589823, 0, 0, 524288, 0, 0, 524289, -1073741824, 0, 524290, -1073741824, 0, 524298, 0, 0, 524299, 0, 0, 655358, -1073741824, 0, 655359, 0, 0, 589824, 0, 0, 589825, -1073741824, 0, 589834, 0, 0, 589835, 0, 0, 720891, -1073741824, 0, 720892, -1073741824, 0, 720893, -1073741824, 0, 720894, -1073741824, 0, 720895, 0, 0, 655360, 0, 0, 655361, -1073741824, 0, 786427, -1073741824, 0, 786428, -1073741824, 0, 786429, -1073741824, 0, 786430, -1073741824, 0, 786431, -1073741824, 0, 720896, -1073741824, 0, 720897, -1073741824, 0, 720910, -1073741824, 0, 720911, -1073741824, 0, 720912, -1073741824, 0, 720913, -1073741824, 0, 720914, -1073741824, 0, 720915, -1073741824, 0, 720916, -1073741824, 0, 720917, -1073741824, 0, 851963, -1073741824, 0, 851964, -1073741824, 0, 851965, -1073741824, 0, 851966, -1073741824, 0, 851967, -1073741824, 0, 786432, -1073741824, 0, 786433, -1073741824, 0, 786446, -1073741824, 0, 786447, -1073741824, 0, 786448, -1073741824, 0, 786449, -1073741824, 0, 786450, -1073741824, 0, 786451, -1073741824, 0, 786452, -1073741824, 0, 786453, -1073741824, 0, 851982, -1073741824, 0, 851983, -1073741824, 0, 851984, -1073741824, 0, 851985, -1073741824, 0, 851986, -1073741824, 0, 851987, -1073741824, 0, 851988, -1073741824, 0, 851989, -1073741824, 0, 917518, -1073741824, 0, 917519, -1073741824, 0, 917520, -1073741824, 0, 983054, -1073741824, 0, 983055, -1073741824, 0, 983056, -1073741824, 0 ) [node name="SpikeMap" parent="." instance=ExtResource( 10 )] tile_data = PoolIntArray( 720890, -1073741824, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="DoorBig3" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -200, 650 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/0/1_start.tscn" [node name="DoorBig" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -50, 1400 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/0/0_hub.tscn" [node name="DoorBig2" parent="Actors" instance=ExtResource( 1 )] position = Vector2( 1800, 1000 ) scene_path = "res://src/map/worlds/3A/0_hub.tscn" gem_count = 20 [node name="Door2" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 850, 150 ) scene_path = "res://src/map/worlds/1/2.tscn" [node name="Door3" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 1350, 150 ) scene_path = "res://src/map/worlds/1/3.tscn" [node name="Door4" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 1700, 650 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/1/4.tscn" [node name="Door5" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 1250, 750 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/1/5.tscn" [node name="Door6" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 850, 850 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/1/6.tscn" [node name="Door7" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 250, 1050 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/1/7.tscn" [node name="ArcadeCab" parent="Actors" instance=ExtResource( 17 )] position = Vector2( 2025, 1450 ) rotation = 3.14159 scale = Vector2( -1, 1 ) dir = 2 [node name="NPC" parent="Actors" instance=ExtResource( 16 )] position = Vector2( 350, 350 ) __meta__ = { "_editor_description_": "" } idle_anim = "idle2" dye = { "eye": 15, "fit": 14, "hair": 11, "skin": 5 } is_npc = true lines = [ "Hello (=", "Lovely weather!", "I do adore the flowers", "I saw something shiny through that door..", "I flipped over this rock and found a gem! 0=", "I'm on the hunt for sparklies.." ] greeting = 0 [node name="Chat" type="Node" parent="Actors/NPC"] script = ExtResource( 5 ) expression_string = "gem_count == 0" erase = "0" is_lines = 3 lines = [ "Hello new friend! (:", "Are you a gem collector too?" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1" [node name="Chat2" type="Node" parent="Actors/NPC"] script = ExtResource( 5 ) expression_string = "gem_count > 0 and gem_count < 3" erase = "0" is_lines = 3 lines = [ "You are shining!", "Is that a gem? 0;" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1" [node name="Chat3" type="Node" parent="Actors/NPC"] script = ExtResource( 5 ) expression_string = "gem_count > 2 and gem_count < 5" erase = "0" is_lines = 3 lines = [ "Look at you glow! ^.^", "Can I see your gem collection?" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1" [node name="Chat4" type="Node" parent="Actors/NPC"] script = ExtResource( 5 ) expression_string = "gem_count > 4" erase = "0" is_lines = 3 lines = [ "Hey puzzler! ^.^", "Your collection keeps growing! ;P", "You have many worlds to explore..." ] is_greeting = true greeting = 0 is_queue = true queue_write = "1,2" [node name="NPC2" parent="Actors" instance=ExtResource( 16 )] position = Vector2( 1350, 1360 ) __meta__ = { "_editor_description_": "" } dir = 3 idle_anim = "idle2" dye = { "eye": 17, "fit": 18, "hair": 10, "skin": 4 } hairstyle_back = 2 hairstyle_front = 7 is_npc = true lines = [ "Hey buddy!", "This door won't budge!!", "I'm locked out...", "I tried knocking... no answer! 0:", "What's that big purple gem anyway?", "I hope somebody opens it!", "My friend is on the other side!", "White flowers bring good luck <3" ] greeting = 0 queue_write = "1,2" [node name="Chat" type="Node" parent="Actors/NPC2"] script = ExtResource( 5 ) expression_string = "\"3A/0_hub\" in maps_visited" erase = "0,1,2,3,4,5" is_lines = 3 lines = [ "Hey buddy! (;", "Did you unlock this door?", "Thank you for reconnecting us! <3", "Ah, together again...", "Where did you find so many gems!? 0:", "Tell me of your travels! (=" ] is_greeting = true greeting = 0 is_queue = true queue_write = "1,2" [node name="NPC6" parent="Actors" instance=ExtResource( 16 )] position = Vector2( 443, 850 ) __meta__ = { "_editor_description_": "" } dir = 2 idle_anim = "tree_behind" dye = { "eye": 3, "fit": 3, "hair": 13, "skin": 6 } hairstyle_back = 3 hairstyle_front = 8 is_npc = true lines = [ "Hey, up here! (=", "Climb with me! (;", "There's plenty of trees!", "Haha you look so tiny down there..", "I'm not afraid of heights!", "Don't worry I'm not stuck! ^.^", "I'll come down soon...", "Grab a branch! (:", "The weather's great up here ;P", "I found a gem in the leaves!" ] greeting = 0 ready_z_index = -31 [node name="NPC3" parent="Actors" instance=ExtResource( 16 )] position = Vector2( 1500, 450 ) __meta__ = { "_editor_description_": "" } dir = 2 idle_anim = "handstand" dye = { "eye": 13, "fit": 15, "hair": 18, "skin": 6 } hairstyle_back = 0 hairstyle_front = 8 is_npc = true lines = [ "Yo!", "Feet are overrated", "I'm a hands on learner", "Look at life upside down", "I'm going for the record!", "Change your perspective!", "Head rush!", "*phew* let me catch my breath!" ] greeting = 0 [node name="NPC5" parent="Actors" instance=ExtResource( 16 )] position = Vector2( -550, 1150 ) __meta__ = { "_editor_description_": "" } dir = 3 idle_anim = "ponder" dye = { "eye": 18, "fit": 13, "hair": 11, "skin": 8 } hairstyle_back = 0 hairstyle_front = 2 is_npc = true lines = [ "Hmm... Oh, hello! (:", "I've been gazing off...", "Look at this view! 0:", "Seclusion comforts me...", "Don't mind me...", "These things are pretty pointy...", "Watch your step! (;", "Have you ever wished upon a star?", "That cloud looks like a seahorse!!", "What do you see? (:" ] greeting = 0 queue_write = "1" [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Rocks5" parent="Details/Rocks" instance=ExtResource( 11 )] position = Vector2( -100, 1000 ) rotation = -1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Rocks" parent="Details/Rocks" instance=ExtResource( 11 )] position = Vector2( 1100, 900 ) rotation = -1.57081 scale = Vector2( 0.25, 0.25 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 11 )] position = Vector2( 1600, 1500 ) rotation = 1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 11 )] position = Vector2( 1600, 300 ) scale = Vector2( 0.25, 0.25 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( -350, 1150 ) rotation = -0.785397 scale = Vector2( 0.3, 0.3 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( 500, 650 ) rotation = -0.785397 scale = Vector2( 0.3, 0.3 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( 1150, 350 ) rotation = -0.785397 scale = Vector2( 0.3, 0.3 ) [node name="Square4" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( 100, 650 ) rotation = -1.57079 scale = Vector2( 0.49386, 0.49386 ) [node name="Square5" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( 2100, 1300 ) rotation = -1.57079 scale = Vector2( 0.161747, 0.161747 ) [node name="Square6" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( 1800, 500 ) rotation = -1.57079 scale = Vector2( 0.141792, 0.141792 ) [node name="Square7" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( 850, 500 ) rotation = -1.57079 scale = Vector2( 0.478401, 0.478401 ) [node name="Square8" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( 1800, 1200 ) rotation = -2.35619 scale = Vector2( 0.20081, 0.20081 ) [node name="Circle7" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 100, 1200 ) scale = Vector2( 0.2, 0.2 ) [node name="Circle5" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 600, 300 ) scale = Vector2( 0.173567, 0.173567 ) [node name="Circle4" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 1100, 600 ) scale = Vector2( 0.105488, 0.105488 ) [node name="Circle3" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 200, 800 ) scale = Vector2( 0.105488, 0.105488 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 1.52588e-05, 500 ) scale = Vector2( 0.105488, 0.105488 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 1550, 1300 ) scale = Vector2( 0.432215, 0.432215 ) [node name="Bench" parent="Details" instance=ExtResource( 6 )] position = Vector2( 700, 150 ) scale = Vector2( -1, 1 ) [node name="Bench2" parent="Details" instance=ExtResource( 6 )] position = Vector2( 2250, 1300 ) rotation = 1.57079 scale = Vector2( -1, 1 ) [node name="Bench3" parent="Details" instance=ExtResource( 6 )] position = Vector2( -400, 1350 ) rotation = 3.14159 [node name="Bench4" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1250, 600 ) rotation = 1.57079 [node name="Tree4" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1850, 1400 ) rotation = -3.19214 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree27" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1625, 1600 ) rotation = -3.35321 [node name="Tree25" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1475, 1600 ) rotation = -2.87162 scale = Vector2( -1, 1 ) palette = 6 [node name="Tree26" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1550, 1600 ) rotation = -3.10328 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree5" parent="Details" instance=ExtResource( 3 )] position = Vector2( -225, 1300 ) rotation = -3.24283 scale = Vector2( -1, 1 ) z_index = -5 [node name="Tree7" parent="Details" instance=ExtResource( 3 )] position = Vector2( 125, 1300 ) rotation = -3.04036 palette = 3 [node name="Tree" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1525, 200 ) rotation = 0.104595 scale = Vector2( -1, 1 ) [node name="Tree18" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1800, 600 ) rotation = 2.91337 scale = Vector2( -0.9, 0.9 ) [node name="Tree14" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1150, 200 ) rotation = 0.0828645 scale = Vector2( -1, 1 ) [node name="Tree12" parent="Details" instance=ExtResource( 3 )] position = Vector2( 950, 200 ) rotation = -0.0995006 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree17" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1900, 500 ) rotation = 1.71186 palette = 3 [node name="Tree16" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1675, 225 ) rotation = 0.785398 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree13" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1050, 200 ) rotation = 0.131998 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree15" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1625, 200 ) rotation = 0.33048 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree2" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1200, 850 ) rotation = -4.5525 palette = 5 [node name="Tree20" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1100, 1000 ) rotation = -2.91492 scale = Vector2( -1, 1 ) [node name="Tree28" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1400, 1450 ) rotation = -1.36774 palette = 3 [node name="Tree24" parent="Details" instance=ExtResource( 3 )] position = Vector2( 200, 1200 ) rotation = -4.5419 palette = 6 [node name="Tree21" parent="Details" instance=ExtResource( 3 )] position = Vector2( 450, 800 ) rotation = -3.04985 scale = Vector2( -1, 1 ) [node name="Tree23" parent="Details" instance=ExtResource( 3 )] position = Vector2( 650, 800 ) rotation = -3.27827 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree22" parent="Details" instance=ExtResource( 3 )] position = Vector2( 550, 800 ) rotation = -3.11601 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree19" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1400, 400 ) rotation = -3.43741 scale = Vector2( -1, 1 ) palette = 6 [node name="Tree3" parent="Details" instance=ExtResource( 3 )] position = Vector2( 50, 400 ) rotation = -0.0929318 [node name="Tree9" parent="Details" instance=ExtResource( 3 )] position = Vector2( 250, 400 ) rotation = 0.0965375 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree11" parent="Details" instance=ExtResource( 3 )] position = Vector2( -100, 500 ) rotation = -1.56796 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree8" parent="Details" instance=ExtResource( 3 )] position = Vector2( 150, 400 ) rotation = -0.0929318 scale = Vector2( -0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree10" parent="Details" instance=ExtResource( 3 )] position = Vector2( -100, 800 ) rotation = -1.41388 z_index = -10 palette = 3 [node name="Tree6" parent="Details" instance=ExtResource( 3 )] position = Vector2( -350, 1010 ) rotation = -0.280599 palette = 2 [node name="Flower" parent="Details" instance=ExtResource( 8 )] position = Vector2( 550, 200 ) [node name="Flower14" parent="Details" instance=ExtResource( 8 )] position = Vector2( -250, 1000 ) palette = 4 [node name="Flower15" parent="Details" instance=ExtResource( 8 )] position = Vector2( -95, 405 ) rotation = -0.785397 palette = 2 [node name="Flower16" parent="Details" instance=ExtResource( 8 )] position = Vector2( 200, 950 ) rotation = -4.71238 palette = 5 [node name="Flower17" parent="Details" instance=ExtResource( 8 )] position = Vector2( 195, 1295 ) rotation = -3.92699 palette = 3 [node name="Flower18" parent="Details" instance=ExtResource( 8 )] position = Vector2( -300, 1300 ) rotation = -3.14159 [node name="Flower9" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1400, 1550 ) rotation = -1.57079 palette = 0 [node name="Flower11" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1925, 1400 ) rotation = -3.14159 palette = 3 [node name="Flower5" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1200, 950 ) rotation = 1.57079 [node name="Flower6" parent="Details" instance=ExtResource( 8 )] position = Vector2( 350, 800 ) rotation = 3.14159 [node name="Flower3" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1700, 300 ) rotation = 1.57079 palette = 4 [node name="Flower10" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1850, 400 ) palette = 2 [node name="Flower4" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1600, 400 ) rotation = 3.92699 palette = 3 [node name="TreeTop" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1350, 300 ) scale = Vector2( 1.1, 1.1 ) [node name="TreeTop5" parent="Details" instance=ExtResource( 9 )] position = Vector2( 200, 1050 ) [node name="TreeTop6" parent="Details" instance=ExtResource( 9 )] position = Vector2( 850, 800 ) [node name="TreeTop8" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1500, 1200 ) [node name="TreeTop10" parent="Details" instance=ExtResource( 9 )] position = Vector2( 2100, 1200 ) [node name="TreeTop9" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1600, 1400 ) [node name="TreeTop7" parent="Details" instance=ExtResource( 9 )] position = Vector2( 500, 400 ) scale = Vector2( 0.9, 0.9 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 4 )] position = Vector2( 400, 300 ) rotation = -0.785397 palette = 4 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1350, 1200 ) palette = 4 [node name="FlowerPetals8" parent="Details" instance=ExtResource( 4 )] position = Vector2( 750, 850 ) palette = 4 [node name="FlowerPetals10" parent="Details" instance=ExtResource( 4 )] position = Vector2( 850, 950 ) rotation = -0.785397 palette = 3 [node name="FlowerPetals4" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1380, 1080 ) rotation = -0.785397 palette = 3 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1500, 1050 ) palette = 2 [node name="FlowerPetals9" parent="Details" instance=ExtResource( 4 )] position = Vector2( 950, 900 ) palette = 2 [node name="FlowerPetals11" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1235, 160 ) palette = 2 [node name="FlowerPetals12" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1465, 160 ) palette = 5 [node name="FlowerPetals5" parent="Details" instance=ExtResource( 4 )] position = Vector2( 2100, 1050 ) [node name="FlowerPetals6" parent="Details" instance=ExtResource( 4 )] position = Vector2( 2220, 1080 ) rotation = 0.785397 palette = 4 [node name="FlowerPetals7" parent="Details" instance=ExtResource( 4 )] position = Vector2( 2250, 1200 ) palette = 5 [node name="Candle" parent="Details" instance=ExtResource( 14 )] position = Vector2( 500, 800 ) rotation = -3.14159 [node name="Candle4" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1010, 990 ) rotation = -2.35619 [node name="Candle6" parent="Details" instance=ExtResource( 14 )] position = Vector2( 500, 400 ) rotation = -0.785397 [node name="Candle5" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1690, 1590 ) rotation = 2.35619 [node name="Candle3" parent="Details" instance=ExtResource( 14 )] position = Vector2( -500, 1250 ) rotation = -1.57079 [node name="Candle2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1100, 200 ) rotation = -6.28318 [node name="Lamppost" parent="Details" instance=ExtResource( 15 )] position = Vector2( 1600, 1100 ) ================================================ FILE: src/map/worlds/1/2.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=10] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=13] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( -65529, -1073741824, 0, -65528, -1073741824, 0, 7, 1610612736, 0, 8, -1610612736, 0, 65541, -1073741824, 0, 65542, -1073741824, 0, 65543, 1610612736, 0, 65544, -1610612736, 0, 131077, 0, 0, 131078, 0, 0, 196613, 0, 0, 196614, 0, 0, 262149, 0, 0, 262150, 0, 0, 327685, 0, 0, 327686, 0, 0, 393221, 0, 0, 393222, 0, 0, 458757, -1073741824, 0, 458758, -1073741824, 0, 458759, 0, 0, 458760, 0, 0, 524295, 0, 0, 524296, 0, 0, 589831, -1073741824, 0, 589832, -1073741824, 0 ) [node name="SpikeMap" parent="." instance=ExtResource( 11 )] visible = false [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 450, 450 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/1/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1050, 450 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 620, 300 ) rotation = -2.35619 scale = Vector2( 0.25, 0.25 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 580, 600 ) rotation = 0.785397 scale = Vector2( 0.25, 0.25 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 800, 850 ) rotation = 0.785397 scale = Vector2( 0.192504, 0.192504 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 800, 50 ) scale = Vector2( 0.204289, 0.204289 ) [node name="Tree" parent="Details" instance=ExtResource( 6 )] position = Vector2( 900, 50 ) rotation = 1.39626 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree3" parent="Details" instance=ExtResource( 6 )] position = Vector2( 500, 300 ) rotation = -1.39626 [node name="Tree2" parent="Details" instance=ExtResource( 6 )] position = Vector2( 900, 850 ) rotation = 1.74533 palette = 3 [node name="Flower" parent="Details" instance=ExtResource( 7 )] position = Vector2( 890, 710 ) rotation = 0.785398 palette = 5 [node name="Flower3" parent="Details" instance=ExtResource( 7 )] position = Vector2( 705, 995 ) rotation = -2.35619 palette = 0 [node name="Flower4" parent="Details" instance=ExtResource( 7 )] position = Vector2( 895, 195 ) rotation = 2.35619 palette = 2 [node name="Flower5" parent="Details" instance=ExtResource( 7 )] position = Vector2( 705, -95 ) rotation = -0.785398 palette = 3 [node name="Bench" parent="Details" instance=ExtResource( 8 )] position = Vector2( 750, 450 ) rotation = -4.71238 [node name="TreeTop" parent="Details" instance=ExtResource( 9 )] position = Vector2( 600, 700 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 9 )] position = Vector2( 600, 200 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 12 )] position = Vector2( 450, 700 ) palette = 3 [node name="FlowerPetals4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 450, 200 ) palette = 5 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 600, 850 ) palette = 4 [node name="FlowerPetals5" parent="Details" instance=ExtResource( 12 )] position = Vector2( 600, 50 ) palette = 4 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 480, 820 ) rotation = -0.785397 palette = 2 [node name="FlowerPetals6" parent="Details" instance=ExtResource( 12 )] position = Vector2( 480, 80 ) rotation = -0.785397 [node name="Candle" parent="Details" instance=ExtResource( 13 )] position = Vector2( 700, 300 ) rotation = 1.57079 [node name="Candle2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 700, 600 ) rotation = 1.57079 ================================================ FILE: src/map/worlds/1/3.tscn ================================================ [gd_scene load_steps=15 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=10] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=11] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=14] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 11 )] tile_data = PoolIntArray( -196601, -1610612736, 0, -196600, -1610612736, 0, -196599, -1610612736, 0, -196598, -1610612736, 0, -131065, -1610612736, 0, -131062, -1610612736, 0, -65532, -1610612736, 0, -65531, -1610612736, 0, -65530, -1610612736, 0, -65529, -1610612736, 0, -65526, -1610612736, 0, -65525, -1610612736, 0, -65524, -1610612736, 0, -65523, -1610612736, 0, 4, 1610612736, 0, 5, -1073741824, 0, 65540, 1610612736, 0, 65541, -1073741824, 0, 131076, 1610612736, 0, 131077, -1073741824, 0, 196612, 1610612736, 0, 196613, -1610612736, 0, 196614, -1610612736, 0, 196615, -1610612736, 0, 196618, -1610612736, 0, 196619, -1610612736, 0, 196620, -1610612736, 0, 196621, -1610612736, 0, 262151, -1610612736, 0, 262154, -1610612736, 0, 327687, -1610612736, 0, 327688, -1610612736, 0, 327689, -1610612736, 0, 327690, -1610612736, 0 ) [node name="SpikeMap" parent="." instance=ExtResource( 12 )] [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 350, 150 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/1/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 700, 150 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1050, 350 ) rotation = 1.57081 scale = Vector2( 0.25, 0.25 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 750, -50 ) rotation = -1.57079 scale = Vector2( 0.197489, 0.197489 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 1350, -50 ) rotation = 0.785397 scale = Vector2( 0.150017, 0.150017 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 750, 350 ) scale = Vector2( 0.191985, 0.191985 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 500, 150 ) scale = Vector2( 0.206467, 0.206467 ) [node name="Tree" parent="Details" instance=ExtResource( 6 )] position = Vector2( 775, 325 ) rotation = 0.785397 palette = 3 [node name="Tree2" parent="Details" instance=ExtResource( 6 )] position = Vector2( 850, -300 ) rotation = -0.261799 scale = Vector2( -1, 1 ) [node name="Tree6" parent="Details" instance=ExtResource( 6 )] position = Vector2( 950, 600 ) rotation = 2.87979 scale = Vector2( -1, 1 ) [node name="Tree5" parent="Details" instance=ExtResource( 6 )] position = Vector2( 400, 300 ) rotation = -1.8326 palette = 6 [node name="Tree3" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1375, -75 ) rotation = 0.785397 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree4" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1375, 375 ) rotation = 2.35619 [node name="TreeTop" parent="Details" instance=ExtResource( 7 )] position = Vector2( 700, 400 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1100, -100 ) [node name="Flower" parent="Details" instance=ExtResource( 8 )] position = Vector2( 400, 0 ) rotation = -1.57079 palette = 3 [node name="Flower3" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1100, 300 ) [node name="Flower4" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1100, 550 ) rotation = -4.71238 palette = 0 [node name="Flower7" parent="Details" instance=ExtResource( 8 )] position = Vector2( 700, -250 ) rotation = -1.57079 palette = 0 [node name="Flower5" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1325, 0 ) rotation = 3.14159 palette = 2 [node name="Flower8" parent="Details" instance=ExtResource( 8 )] position = Vector2( 805, -195 ) rotation = 2.35619 palette = 5 [node name="Flower9" parent="Details" instance=ExtResource( 8 )] position = Vector2( 995, 495 ) rotation = -0.785397 palette = 4 [node name="Flower6" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1000, -300 ) rotation = -6.28318 palette = 4 [node name="Flower10" parent="Details" instance=ExtResource( 8 )] position = Vector2( 800, 600 ) rotation = -3.14159 palette = 2 [node name="Bench" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1250, 450 ) rotation = 3.14159 scale = Vector2( -1, 1 ) [node name="Bench2" parent="Details" instance=ExtResource( 9 )] position = Vector2( 550, -150 ) scale = Vector2( -1, 1 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 10 )] position = Vector2( 600, 500 ) rotation = -0.785397 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 700, 250 ) palette = 3 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 850, 400 ) palette = 5 [node name="FlowerPetals4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1200, -200 ) [node name="FlowerPetals5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 950, -100 ) palette = 3 [node name="FlowerPetals6" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1100, 50 ) palette = 4 [node name="FlowerPetals7" parent="Details" instance=ExtResource( 10 )] position = Vector2( 980, 20 ) rotation = -0.785397 palette = 2 [node name="Candle" parent="Details" instance=ExtResource( 14 )] position = Vector2( 700, 0 ) rotation = -3.14159 [node name="Lamppost" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1200, 300 ) ================================================ FILE: src/map/worlds/1/4.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=10] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=11] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=13] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 11 )] tile_data = PoolIntArray( -1, 0, 0, -65536, 0, 0, -65535, 0, 0, -65534, 0, 0, -65533, 0, 0, -65532, 0, 0, -65531, 0, 0, -65530, 0, 0, -65529, 0, 0, -65528, 0, 0, -65527, 0, 0, 65535, 0, 0, 0, 0, 0, 1, 0, 0, 7, 0, 0, 8, 0, 0, 9, 0, 0, 131071, 0, 0, 65536, 0, 0, 65537, 0, 0, 65543, 0, 0, 65544, 0, 0, 65545, 0, 0, 196607, 0, 0, 131081, 0, 0, 262143, 0, 0, 196617, 0, 0, 327679, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 262151, 0, 0, 262152, 0, 0, 262153, 0, 0, 393215, 0, 0, 327689, 0, 0, 458751, 0, 0, 393225, 0, 0, 524287, 0, 0, 458752, 0, 0, 458753, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 0, 0, 589823, 0, 0, 524288, 0, 0, 524289, 0, 0, 524295, 0, 0, 524296, 0, 0, 524297, 0, 0, 655359, 0, 0, 589824, 0, 0, 589825, 0, 0, 589826, 0, 0, 589827, 0, 0, 589828, 0, 0, 589829, 0, 0, 589830, 0, 0, 589831, 0, 0, 589832, 0, 0, 589833, 0, 0 ) [node name="SpikeMap" parent="." instance=ExtResource( 12 )] tile_data = PoolIntArray( 5, 1610612736, 0, 262144, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 800, 650 ) scene_path = "res://src/map/worlds/1/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 800, 300 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 800, 800 ) rotation = -1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 100, 100 ) rotation = -1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 0, 900 ) rotation = 1.57079 scale = Vector2( 0.198843, 0.198843 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 450, 450 ) rotation = 1.57079 scale = Vector2( 0.14879, 0.14879 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 850, 50 ) rotation = 0.785397 scale = Vector2( 0.198843, 0.198843 ) [node name="Tree" parent="Details" instance=ExtResource( 6 )] position = Vector2( 500, 500 ) rotation = 3.05433 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree9" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1000, 450 ) rotation = 1.57079 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree10" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1000, 550 ) rotation = 1.74533 scale = Vector2( -1, 1 ) [node name="Tree11" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1000, 350 ) rotation = 1.39626 [node name="Tree14" parent="Details" instance=ExtResource( 6 )] position = Vector2( -100, 300 ) rotation = -1.39626 scale = Vector2( -1, 1 ) palette = 4 [node name="Tree15" parent="Details" instance=ExtResource( 6 )] position = Vector2( -100, 600 ) rotation = -1.74533 palette = 4 [node name="Tree2" parent="Details" instance=ExtResource( 6 )] position = Vector2( 500, 400 ) rotation = 0.0872665 scale = Vector2( -1, 1 ) palette = 5 [node name="Flower" parent="Details" instance=ExtResource( 7 )] position = Vector2( 700, 100 ) rotation = -1.57079 palette = 3 [node name="Flower8" parent="Details" instance=ExtResource( 7 )] position = Vector2( 695, 895 ) rotation = -7.06857 palette = 4 [node name="Flower10" parent="Details" instance=ExtResource( 7 )] position = Vector2( 100, 1000 ) rotation = -9.42476 palette = 5 [node name="Flower11" parent="Details" instance=ExtResource( 7 )] position = Vector2( 100, -100 ) palette = 2 [node name="Flower14" parent="Details" instance=ExtResource( 7 )] position = Vector2( 450, -100 ) palette = 0 [node name="Flower15" parent="Details" instance=ExtResource( 7 )] position = Vector2( 450, 1000 ) rotation = 3.14159 palette = 0 [node name="Flower12" parent="Details" instance=ExtResource( 7 )] position = Vector2( -100, 150 ) rotation = -1.57079 palette = 0 [node name="Flower13" parent="Details" instance=ExtResource( 7 )] position = Vector2( -100, 750 ) rotation = -1.57079 palette = 0 [node name="Flower9" parent="Details" instance=ExtResource( 7 )] position = Vector2( 895, 505 ) rotation = -8.63937 [node name="TreeTop" parent="Details" instance=ExtResource( 8 )] position = Vector2( 150, 750 ) [node name="TreeTop4" parent="Details" instance=ExtResource( 8 )] position = Vector2( 900, 900 ) [node name="TreeTop5" parent="Details" instance=ExtResource( 8 )] position = Vector2( 900, 0 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 8 )] position = Vector2( 150, 150 ) [node name="Bench" parent="Details" instance=ExtResource( 9 )] position = Vector2( -150, 450 ) rotation = 4.71238 [node name="Bench2" parent="Details" instance=ExtResource( 9 )] position = Vector2( 650, 350 ) scale = Vector2( -1, 1 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 10 )] position = Vector2( 250, 650 ) rotation = 0.785397 palette = 0 [node name="FlowerPetals6" parent="Details" instance=ExtResource( 10 )] position = Vector2( 250, 250 ) rotation = 0.785397 palette = 3 [node name="FlowerPetals7" parent="Details" instance=ExtResource( 10 )] position = Vector2( 150, 300 ) [node name="FlowerPetals8" parent="Details" instance=ExtResource( 10 )] position = Vector2( 50, 250 ) rotation = 0.785397 palette = 5 [node name="FlowerPetals9" parent="Details" instance=ExtResource( 10 )] position = Vector2( 300, 150 ) palette = 2 [node name="FlowerPetals10" parent="Details" instance=ExtResource( 10 )] position = Vector2( 250, 50 ) rotation = 0.785397 palette = 4 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 300, 750 ) palette = 4 [node name="FlowerPetals11" parent="Details" instance=ExtResource( 10 )] position = Vector2( 900, 1050 ) palette = 3 [node name="FlowerPetals12" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1050, 900 ) palette = 2 [node name="FlowerPetals14" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1050, 0 ) palette = 3 [node name="FlowerPetals15" parent="Details" instance=ExtResource( 10 )] position = Vector2( 900, -150 ) palette = 4 [node name="FlowerPetals16" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1020, -120 ) rotation = -0.785397 [node name="FlowerPetals13" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1020, 1020 ) rotation = 0.785397 [node name="FlowerPetals4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 250, 850 ) rotation = 0.785397 [node name="FlowerPetals5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 50, 650 ) rotation = 0.785397 palette = 3 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 150, 600 ) palette = 2 [node name="Lamppost" parent="Details" instance=ExtResource( 5 )] position = Vector2( 400, 450 ) rotation = -1.57079 [node name="Candle" parent="Details" instance=ExtResource( 13 )] position = Vector2( 450, 900 ) [node name="Candle3" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1000, 650 ) rotation = 1.57079 [node name="Candle4" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1000, 250 ) rotation = 1.5708 [node name="Candle2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 350, 0 ) rotation = -3.14159 ================================================ FILE: src/map/worlds/1/5.tscn ================================================ [gd_scene load_steps=16 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=7] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=8] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/SignZoom.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 8 )] tile_data = PoolIntArray( -196602, 0, 0, -196601, 0, 0, -196600, 0, 0, -131066, 0, 0, -131065, 0, 0, -131064, 0, 0, -65530, 0, 0, -65529, 0, 0, -65528, 0, 0, 131073, 0, 0, 131074, 0, 0, 131075, 0, 0, 131083, -1073741824, 0, 131084, -1073741824, 0, 131085, -1073741824, 0, 196609, 0, 0, 196610, 0, 0, 196611, 0, 0, 196619, -1073741824, 0, 196620, -1073741824, 0, 196621, -1073741824, 0, 262145, 0, 0, 262146, 0, 0, 262147, 0, 0, 262155, -1073741824, 0, 262156, -1073741824, 0, 262157, -1073741824, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 524294, 0, 0, 524295, 0, 0, 524296, 0, 0, 589830, 0, 0, 589831, 0, 0, 589832, 0, 0 ) [node name="SpikeMap" parent="." instance=ExtResource( 9 )] tile_data = PoolIntArray( -196603, -1073741824, 0, -131067, -1073741824, 0, -65531, -1073741824, 0, 6, 1610612736, 0, 7, 1610612736, 0, 8, 1610612736, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 131082, -1073741824, 0, 196618, -1073741824, 0, 262154, -1073741824, 0, 393222, 0, 0, 393223, 0, 0, 393224, 0, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 450, 350 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/1/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 750, -500 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Rocks" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 200, 300 ) rotation = -1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 800, 800 ) rotation = 0.785397 scale = Vector2( 0.164516, 0.164516 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 11 )] position = Vector2( 1250, 350 ) scale = Vector2( 0.273765, 0.273765 ) [node name="Tree" parent="Details" instance=ExtResource( 4 )] position = Vector2( 600, 850 ) rotation = -1.44219 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree4" parent="Details" instance=ExtResource( 4 )] position = Vector2( 900, -100 ) rotation = 1.43117 scale = Vector2( -1, 1 ) palette = 6 [node name="Tree3" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1250, 500 ) rotation = 3.31613 [node name="Bench2" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1450, 350 ) rotation = 1.57079 [node name="Flower" parent="Details" instance=ExtResource( 6 )] position = Vector2( 400, 250 ) rotation = 1.57079 palette = 0 [node name="Flower3" parent="Details" instance=ExtResource( 6 )] position = Vector2( 605, 995 ) rotation = -2.35619 palette = 0 [node name="Flower6" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1150, 200 ) rotation = -6.28318 palette = 2 [node name="Flower7" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1350, 200 ) rotation = -6.28318 palette = 4 [node name="Flower8" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1395, 495 ) rotation = 2.35619 palette = 0 [node name="SignZoom" parent="Details" instance=ExtResource( 10 )] position = Vector2( 100, 350 ) rotation = -1.45609 [node name="TreeTop" parent="Details" instance=ExtResource( 13 )] position = Vector2( 800, 900 ) [node name="TreeTop3" parent="Details" instance=ExtResource( 13 )] position = Vector2( 800, -200 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 200, 400 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 14 )] position = Vector2( 800, 1050 ) palette = 4 [node name="FlowerPetals4" parent="Details" instance=ExtResource( 14 )] position = Vector2( 200, 550 ) palette = 3 [node name="FlowerPetals5" parent="Details" instance=ExtResource( 14 )] position = Vector2( 80, 520 ) rotation = 0.785397 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 950, 900 ) palette = 3 [node name="FlowerPetals6" parent="Details" instance=ExtResource( 14 )] position = Vector2( 800, -350 ) palette = 3 [node name="FlowerPetals7" parent="Details" instance=ExtResource( 14 )] position = Vector2( 950, -200 ) palette = 5 [node name="FlowerPetals8" parent="Details" instance=ExtResource( 14 )] position = Vector2( 920, -320 ) rotation = -0.785397 palette = 2 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 14 )] position = Vector2( 920, 1020 ) rotation = -0.785397 [node name="Candle" parent="Details" instance=ExtResource( 12 )] position = Vector2( 100, 450 ) rotation = -1.57079 [node name="Candle2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 700, -300 ) [node name="Candle3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 900, 800 ) rotation = 1.57079 [node name="Lamppost" parent="Details" instance=ExtResource( 15 )] position = Vector2( 1100, 350 ) rotation = -1.57079 ================================================ FILE: src/map/worlds/1/6.tscn ================================================ [gd_scene load_steps=16 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=7] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=8] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/SignZoom.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 8 )] tile_data = PoolIntArray( 131073, -1073741824, 0, 131074, -1073741824, 0, 131075, -1073741824, 0, 131076, -1073741824, 0, 131077, -1073741824, 0, 131078, -1073741824, 0, 131079, -1073741824, 0, 131080, -1073741824, 0, 131081, -1073741824, 0, 196609, -1073741824, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, 0, 0, 196616, 0, 0, 196617, 0, 0, 262145, -1073741824, 0, 262146, 0, 0, 262152, 0, 0, 262153, 0, 0, 327681, -1073741824, 0, 327682, 0, 0, 327688, -1610612736, 0, 327689, -1610612736, 0, 393224, -1610612736, 0, 393225, -1610612736, 0, 458760, -1610612736, 0, 458761, -1610612736, 0, 524296, -1610612736, 0, 524297, -1610612736, 0, 589832, 0, 0, 589833, 0, 0 ) [node name="SpikeMap" parent="." instance=ExtResource( 9 )] tile_data = PoolIntArray( 65542, 0, 0, 131072, -1073741824, 0, 327690, -1610612736, 0, 393223, -1073741824, 0, 393226, -1610612736, 0, 458759, -1073741824, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 300, 150 ) scene_path = "res://src/map/worlds/1/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 400, 500 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 880, 320 ) scale = Vector2( 0.316809, 0.316809 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 900, 900 ) rotation = 0.785397 scale = Vector2( 0.209757, 0.209757 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 900, 650 ) scale = Vector2( 0.149323, 0.149323 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 200, 450 ) rotation = -0.785397 scale = Vector2( 0.189158, 0.189158 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 550, 300 ) scale = Vector2( 0.237638, 0.237638 ) [node name="Tree" parent="Details" instance=ExtResource( 4 )] position = Vector2( 800, 900 ) rotation = -1.74533 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree5" parent="Details" instance=ExtResource( 4 )] position = Vector2( 600, 400 ) rotation = -2.96706 [node name="Tree4" parent="Details" instance=ExtResource( 4 )] position = Vector2( 100, 450 ) rotation = -1.74533 scale = Vector2( -1, 1 ) palette = 6 [node name="Tree2" parent="Details" instance=ExtResource( 4 )] position = Vector2( 500, 200 ) rotation = 0.174533 palette = 3 [node name="Tree3" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1000, 800 ) rotation = 1.39626 scale = Vector2( -1, 1 ) palette = 5 [node name="Flower2" parent="Details" instance=ExtResource( 5 )] position = Vector2( 800, 500 ) rotation = -1.57079 palette = 0 [node name="Flower5" parent="Details" instance=ExtResource( 5 )] position = Vector2( 150, 200 ) [node name="Flower3" parent="Details" instance=ExtResource( 5 )] position = Vector2( 200, 600 ) rotation = -3.14159 palette = 3 [node name="Flower6" parent="Details" instance=ExtResource( 5 )] position = Vector2( 100, 350 ) rotation = -1.57079 palette = 2 [node name="Flower4" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1000, 900 ) rotation = -4.71238 [node name="TreeTop" parent="Details" instance=ExtResource( 6 )] position = Vector2( 900, 300 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 11 )] position = Vector2( 900, 150 ) palette = 4 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1050, 300 ) palette = 2 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1020, 180 ) rotation = 0.785397 palette = 3 [node name="Bench" parent="Details" instance=ExtResource( 13 )] position = Vector2( 900, 1050 ) rotation = 3.14159 scale = Vector2( -1, 1 ) [node name="Candle" parent="Details" instance=ExtResource( 12 )] position = Vector2( 400, 200 ) [node name="Candle2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 500, 400 ) rotation = -3.14159 [node name="Lamppost" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1000, 400 ) rotation = 1.57079 [node name="SignZoom" parent="Details" instance=ExtResource( 15 )] position = Vector2( 110, 590 ) rotation = -2.26893 ================================================ FILE: src/map/worlds/1/7.tscn ================================================ [gd_scene load_steps=16 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=9] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=10] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/SignZoom.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 10 )] tile_data = PoolIntArray( 131076, 1610612736, 0, 131077, 1610612736, 0, 131080, 1610612736, 0, 131081, 1610612736, 0, 131082, 1610612736, 0, 131083, 1610612736, 0, 196612, 1610612736, 0, 196613, 0, 0, 196616, 1610612736, 0, 196617, 1610612736, 0, 196618, 1610612736, 0, 196619, 0, 0, 262149, 1610612736, 0, 262152, 1610612736, 0, 262153, 1610612736, 0, 262154, 1610612736, 0, 262155, 0, 0, 327685, 1610612736, 0, 327688, 1610612736, 0, 327689, 0, 0, 327690, 0, 0, 327691, 0, 0, 327695, 0, 0, 327696, 0, 0, 327697, 0, 0, 327698, 0, 0, 327699, 0, 0, 393221, 1610612736, 0, 393231, 0, 0, 393232, 0, 0, 393233, 0, 0, 393234, 0, 0, 393235, 0, 0, 458756, 1610612736, 0, 458757, 1610612736, 0, 458767, 0, 0, 524292, 1610612736, 0, 524293, 1610612736, 0, 524303, 0, 0, 589828, 1610612736, 0, 589829, -1073741824, 0, 589833, -1073741824, 0, 589834, 0, 0, 589835, 0, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 655369, -1073741824, 0, 655370, -1073741824, 0, 655371, 0, 0, 720905, -1073741824, 0, 720906, 1610612736, 0, 720907, 1610612736, 0 ) [node name="SpikeMap" parent="." instance=ExtResource( 11 )] tile_data = PoolIntArray( 262151, -1073741824, 0, 262159, 0, 0, 262160, 0, 0, 262161, 0, 0, 262162, 0, 0, 262163, 0, 0, 327687, -1073741824, 0, 327688, -1073741824, 0, 393224, 1610612736, 0, 393225, 1610612736, 0, 458755, -1073741824, 0, 524291, -1073741824, 0, 589827, -1073741824, 0, 655377, 1610612736, 0, 786441, 1610612736, 0, 786442, 1610612736, 0, 786443, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 650, 850 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/1/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1700, 800 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Rocks5" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1100, 500 ) rotation = 1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Rocks6" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 500, 900 ) rotation = 3.14159 scale = Vector2( 0.25, 0.25 ) [node name="Rocks7" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1000, 1100 ) scale = Vector2( 0.25, 0.25 ) [node name="Rocks8" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1900, 600 ) rotation = 0.785397 scale = Vector2( 0.25, 0.25 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 500, 300 ) rotation = 0.785397 scale = Vector2( 0.15, 0.15 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 550, 550 ) scale = Vector2( 0.141916, 0.141916 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 1100, 1000 ) rotation = -0.785397 scale = Vector2( 0.164638, 0.164638 ) [node name="Square4" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 900, 300 ) rotation = -1.57079 scale = Vector2( 0.155142, 0.155142 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 1600, 600 ) scale = Vector2( 0.206414, 0.206414 ) [node name="Tree" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1500, 750 ) rotation = -1.39626 [node name="Tree4" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1900, 700 ) rotation = 2.87977 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree3" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1200, 1150 ) rotation = 1.74533 palette = 6 [node name="Tree2" parent="Details" instance=ExtResource( 6 )] position = Vector2( 500, 550 ) rotation = -1.74533 scale = Vector2( -1, 1 ) palette = 3 [node name="Flower" parent="Details" instance=ExtResource( 7 )] position = Vector2( 400, 300 ) rotation = -1.57079 palette = 2 [node name="Flower7" parent="Details" instance=ExtResource( 7 )] position = Vector2( 600, 650 ) rotation = 1.57079 palette = 4 [node name="Flower4" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1100, 600 ) rotation = 3.14159 palette = 3 [node name="Flower5" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1000, 900 ) palette = 0 [node name="TreeTop" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1100, 300 ) [node name="TreeTop3" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1600, 900 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1000, 1150 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1100, 150 ) palette = 2 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1250, 300 ) [node name="FlowerPetals4" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1450, 900 ) palette = 4 [node name="FlowerPetals5" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1600, 1050 ) palette = 3 [node name="FlowerPetals7" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1000, 1300 ) palette = 5 [node name="FlowerPetals9" parent="Details" instance=ExtResource( 9 )] position = Vector2( 850, 1150 ) [node name="FlowerPetals8" parent="Details" instance=ExtResource( 9 )] position = Vector2( 880, 1270 ) rotation = -0.785397 palette = 3 [node name="FlowerPetals6" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1480, 1020 ) rotation = 0.785397 palette = 2 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1220, 180 ) rotation = 0.785397 palette = 5 [node name="SignZoom" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2000, 600 ) rotation = 1.39626 [node name="Bench" parent="Details" instance=ExtResource( 13 )] position = Vector2( 500, 150 ) scale = Vector2( -1, 1 ) [node name="Candle" parent="Details" instance=ExtResource( 15 )] position = Vector2( 900, 200 ) [node name="Candle3" parent="Details" instance=ExtResource( 15 )] position = Vector2( 1800, 700 ) rotation = 3.14159 [node name="Lamppost2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 925, 925 ) rotation = -0.785397 [node name="Lamppost3" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1200, 500 ) rotation = 1.57079 ================================================ FILE: src/map/worlds/2/0_hub.tscn ================================================ [gd_scene load_steps=16 format=2] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=1] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=8] [ext_resource path="res://src/actor/door/DoorBig.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=11] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=13] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=15] [node name="Map" type="Node2D"] __meta__ = { "_edit_lock_": true } [node name="SolidTileMap" parent="." instance=ExtResource( 2 )] tile_data = PoolIntArray( 786413, -1610612736, 0, 786414, -1610612736, 0, 786415, -1610612736, 0, 786416, -1610612736, 0, 786417, -1610612736, 0, 851949, -1610612736, 0, 851950, -1610612736, 0, 851951, -1610612736, 0, 851952, -1610612736, 0, 851953, -1610612736, 0, 917485, -1610612736, 0, 917486, -1610612736, 0, 917487, -1610612736, 0, 917488, -1610612736, 0, 917489, 0, 0, 917490, 0, 0, 917491, 0, 0, 917492, 0, 0, 917493, 0, 0, 917494, 0, 0, 917495, 0, 0, 917496, 0, 0, 917497, 0, 0, 983021, -1610612736, 0, 983022, -1610612736, 0, 983023, -1610612736, 0, 983024, -1610612736, 0, 983025, 0, 0, 983026, 0, 0, 983027, 0, 0, 983028, 0, 0, 983029, 0, 0, 983030, 0, 0, 983031, 0, 0, 983032, 0, 0, 983033, 0, 0, 1048557, -1610612736, 0, 1048558, -1610612736, 0, 1048559, -1610612736, 0, 1048560, -1610612736, 0, 1048561, 0, 0, 1048562, 0, 0, 1048563, 0, 0, 1048564, 0, 0, 1048565, 0, 0, 1048566, 0, 0, 1048567, 0, 0, 1048568, 0, 0, 1048569, 0, 0, 1114093, -1610612736, 0, 1114094, -1610612736, 0, 1114095, -1610612736, 0, 1114096, -1610612736, 0, 1114097, -1610612736, 0, 1114098, -1610612736, 0, 1114099, -1610612736, 0, 1114100, -1610612736, 0, 1114101, -1610612736, 0, 1114102, 0, 0, 1114103, 0, 0, 1114104, 0, 0, 1114105, 0, 0, 1179629, -1610612736, 0, 1179630, -1610612736, 0, 1179631, -1610612736, 0, 1179632, -1610612736, 0, 1179633, -1610612736, 0, 1179634, -1610612736, 0, 1179635, -1610612736, 0, 1179636, -1610612736, 0, 1179637, -1610612736, 0, 1179638, 0, 0, 1179639, 0, 0, 1179640, 0, 0, 1179641, 0, 0, 1245165, -1610612736, 0, 1245166, -1610612736, 0, 1245167, -1610612736, 0, 1245174, -1610612736, 0, 1245175, 0, 0, 1245176, 0, 0, 1245177, 0, 0, 1310701, -1610612736, 0, 1310702, -1610612736, 0, 1310711, -1610612736, 0, 1310712, 0, 0, 1310713, 0, 0, 1310714, 0, 0, 1310715, 0, 0, 1310716, 0, 0, 1376237, -1610612736, 0, 1376238, -1610612736, 0, 1376247, -1610612736, 0, 1376248, 0, 0, 1376249, 0, 0, 1376250, 0, 0, 1376251, 0, 0, 1376252, 0, 0, 1441783, -1610612736, 0, 1441784, -1610612736, 0, 1441785, 0, 0, 1441786, 0, 0, 1441787, 0, 0, 1441788, 0, 0, 1507319, -1610612736, 0, 1507320, -1610612736, 0, 1507321, -1610612736, 0, 1507322, -1610612736, 0, 1507323, -1610612736, 0, 1507324, -1610612736, 0, 1572855, -1610612736, 0, 1572856, -1610612736, 0, 1572857, -1610612736, 0, 1572858, -1610612736, 0, 1572859, -1610612736, 0, 1572860, -1610612736, 0, 1638381, 0, 0, 1638382, 0, 0, 1638383, 0, 0, 1638384, 0, 0, 1638385, 0, 0, 1638386, 0, 0, 1703917, 0, 0, 1703918, 0, 0, 1703919, 0, 0, 1703920, 0, 0, 1703921, 0, 0, 1703922, 0, 0, 1703923, 0, 0, 1769451, 0, 0, 1769452, 0, 0, 1769453, 0, 0, 1769454, 0, 0, 1769455, 0, 0, 1769456, 0, 0, 1769457, 0, 0, 1769458, 0, 0, 1769459, 0, 0, 1834987, 0, 0, 1834988, 0, 0, 1834989, 0, 0, 1834990, 0, 0, 1834991, 0, 0, 1834992, 0, 0, 1834993, 0, 0, 1834994, 0, 0, 1834995, 0, 0, 1834998, 0, 0, 1834999, 0, 0, 1835000, 0, 0, 1835001, 0, 0, 1835002, 0, 0, 1835003, 0, 0, 1900534, 0, 0, 1900535, 0, 0, 1900536, 0, 0, 1900537, 0, 0, 1900538, 0, 0, 1900539, 0, 0 ) detail = 1 [node name="SpikeMap" parent="." instance=ExtResource( 12 )] tile_data = PoolIntArray( 1310717, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="BigDoor" parent="Actors" instance=ExtResource( 9 )] position = Vector2( -500, 1600 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/0/0_hub.tscn" [node name="BigDoor2" parent="Actors" instance=ExtResource( 9 )] position = Vector2( -1600, 2900 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2B/0_hub.tscn" gem_count = 25 [node name="Door1" parent="Actors" instance=ExtResource( 14 )] position = Vector2( -1100, 1250 ) scene_path = "res://src/map/worlds/2/1.tscn" [node name="Door2" parent="Actors" instance=ExtResource( 14 )] position = Vector2( -1950, 1300 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2/2.tscn" [node name="Door3" parent="Actors" instance=ExtResource( 14 )] position = Vector2( -1550, 2350 ) scene_path = "res://src/map/worlds/2/3.tscn" [node name="Door4" parent="Actors" instance=ExtResource( 14 )] position = Vector2( -1350, 1850 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2/4.tscn" [node name="Door5" parent="Actors" instance=ExtResource( 14 )] position = Vector2( -700, 2650 ) scene_path = "res://src/map/worlds/2/5.tscn" [node name="NPC" parent="Actors" instance=ExtResource( 5 )] position = Vector2( -1950, 2025 ) __meta__ = { "_editor_description_": "" } dir = 3 dye = { "eye": 18, "fit": 5, "hair": 0, "skin": 6 } hairstyle_back = 0 hairstyle_front = 0 hat = 1 is_npc = true lines = [ "They call me Candle Randall!", "It's always handy having a light", "Feel the delight of candle light!", "I'm not afraid of the dark! I swear...", "Candle candle candle candle...", "I've been trying to open that big door!", "I get a lil spooked without my candy", "Need a light?" ] greeting = 0 chat_offset = Vector2( 0, -160 ) [node name="NPC2" parent="Actors" instance=ExtResource( 5 )] position = Vector2( -1600, 1050 ) __meta__ = { "_editor_description_": "" } dye = { "eye": 0, "fit": 18, "hair": 15, "skin": 5 } hairstyle_front = 3 is_npc = true lines = [ "Hey cutie! ;P", "Have you tried turning it off and on again?", "Breathe in, breathe out", "It's so cozy between these trees", "It's nice to catch a break and relax", "I feel calm.", "I found a big worm here yesterday!", "Let the trees breathe into you", "Nature takes care of you <3" ] greeting = 0 [node name="NPC3" parent="Actors" instance=ExtResource( 5 )] position = Vector2( -575, 2450 ) __meta__ = { "_editor_description_": "" } dir = 2 idle_anim = "ponder" dye = { "eye": 3, "fit": 15, "hair": 5, "skin": 8 } hairstyle_back = 3 hairstyle_front = 9 is_npc = true lines = [ "Hi there! ^.^", "I feel a little dizzy..", "I'm taking a break to enjoy the night sky!", "These boxes have a mind of their own!", "I've been moving boxes all day!", "I've seen a few gems around here..", "I wonder whats beyond that big door" ] greeting = 0 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square11" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -750, 1800 ) rotation = -0.785397 scale = Vector2( 0.25, 0.25 ) [node name="Square10" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -500, 2800 ) rotation = -0.785397 scale = Vector2( 0.101047, 0.101047 ) [node name="Square9" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -1600, 2600 ) rotation = -0.785397 scale = Vector2( 0.421779, 0.421779 ) [node name="Square8" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -2000, 2700 ) rotation = -1.57079 scale = Vector2( 0.18134, 0.18134 ) [node name="Square7" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -1800, 2000 ) rotation = -1.57079 scale = Vector2( 0.18134, 0.18134 ) [node name="Square6" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -900, 2800 ) rotation = -0.785397 scale = Vector2( 0.158171, 0.158171 ) [node name="Square5" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -600, 2150 ) rotation = 3.14159 scale = Vector2( 0.607861, 0.607861 ) [node name="Square4" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -1650, 1500 ) rotation = 3.14159 scale = Vector2( 0.607861, 0.607861 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -1300, 1600 ) rotation = 3.14159 scale = Vector2( 0.353805, 0.353805 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -1050, 1450 ) rotation = 3.14159 scale = Vector2( 0.215131, 0.215131 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -900, 1600 ) rotation = 3.14159 scale = Vector2( 0.143748, 0.143748 ) [node name="Square12" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -1750, 1750 ) rotation = 2.3562 scale = Vector2( 0.107271, 0.107271 ) [node name="Rocks5" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( -700, 1400 ) scale = Vector2( 0.25, 0.25 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( -1750, 1250 ) rotation = -1.57079 scale = Vector2( 0.486089, 0.486089 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( -1300, 2700 ) rotation = 1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( -1800, 2500 ) rotation = -1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Bench2" parent="Details" instance=ExtResource( 8 )] position = Vector2( -850, 1250 ) [node name="Bench" parent="Details" instance=ExtResource( 8 )] position = Vector2( -1950, 1450 ) rotation = -1.57079 [node name="Bench4" parent="Details" instance=ExtResource( 8 )] position = Vector2( -2000, 2850 ) rotation = -3.14159 [node name="Bench3" parent="Details" instance=ExtResource( 8 )] position = Vector2( -250, 2150 ) rotation = -4.71239 scale = Vector2( -1, 1 ) [node name="Bench5" parent="Details" instance=ExtResource( 8 )] position = Vector2( -1050, 2800 ) rotation = -1.57079 scale = Vector2( -1, 1 ) [node name="Lamppost" parent="Details" instance=ExtResource( 1 )] position = Vector2( -1000, 1300 ) [node name="Lamppost5" parent="Details" instance=ExtResource( 1 )] position = Vector2( -1350, 2800 ) rotation = 3.14159 [node name="Lamppost6" parent="Details" instance=ExtResource( 1 )] position = Vector2( -1850, 2800 ) rotation = 3.14159 [node name="Lamppost2" parent="Details" instance=ExtResource( 1 )] position = Vector2( -1900, 1600 ) rotation = -1.57079 [node name="Lamppost3" parent="Details" instance=ExtResource( 1 )] position = Vector2( -875, 2375 ) rotation = -2.35619 [node name="Lamppost7" parent="Details" instance=ExtResource( 1 )] position = Vector2( -1725, 2075 ) rotation = 2.35619 [node name="Lamppost4" parent="Details" instance=ExtResource( 1 )] position = Vector2( -300, 2250 ) rotation = -4.71239 [node name="Lamppost8" parent="Details" instance=ExtResource( 1 )] position = Vector2( -425, 2875 ) rotation = -3.92699 [node name="Candle2" parent="Details" instance=ExtResource( 7 )] position = Vector2( -600, 1450 ) rotation = 1.57079 [node name="Candle3" parent="Details" instance=ExtResource( 7 )] position = Vector2( -600, 1750 ) rotation = 1.57079 [node name="Candle4" parent="Details" instance=ExtResource( 7 )] position = Vector2( -1450, 1100 ) [node name="Candle5" parent="Details" instance=ExtResource( 7 )] position = Vector2( -1850, 1100 ) [node name="Candle8" parent="Details" instance=ExtResource( 7 )] position = Vector2( -900, 2000 ) rotation = -1.57079 [node name="Candle7" parent="Details" instance=ExtResource( 7 )] position = Vector2( -500, 2700 ) [node name="Candle9" parent="Details" instance=ExtResource( 7 )] position = Vector2( -900, 2900 ) rotation = 3.14159 [node name="Tree" parent="Details" instance=ExtResource( 6 )] position = Vector2( -1750, 1100 ) rotation = -0.1095 palette = 5 [node name="Tree14" parent="Details" instance=ExtResource( 6 )] position = Vector2( -1550, 1100 ) rotation = 0.174533 scale = Vector2( -1, 1 ) [node name="Tree13" parent="Details" instance=ExtResource( 6 )] position = Vector2( -1650, 1100 ) rotation = 0.100804 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree5" parent="Details" instance=ExtResource( 6 )] position = Vector2( -800, 2900 ) rotation = 3.26377 palette = 5 [node name="Tree2" parent="Details" instance=ExtResource( 6 )] position = Vector2( -1250, 1800 ) rotation = -3.00196 palette = 3 [node name="Tree10" parent="Details" instance=ExtResource( 6 )] position = Vector2( -900, 2150 ) rotation = -1.35869 [node name="Tree7" parent="Details" instance=ExtResource( 6 )] position = Vector2( -600, 2900 ) rotation = -3.26377 palette = 3 [node name="Tree8" parent="Details" instance=ExtResource( 6 )] position = Vector2( -900, 2350 ) rotation = -1.57079 palette = 5 [node name="Tree11" parent="Details" instance=ExtResource( 6 )] position = Vector2( -1400, 2400 ) rotation = -0.173514 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree4" parent="Details" instance=ExtResource( 6 )] position = Vector2( -1100, 1800 ) rotation = -3.01488 scale = Vector2( -0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree6" parent="Details" instance=ExtResource( 6 )] position = Vector2( -700, 2900 ) rotation = -3.26061 scale = Vector2( -0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree9" parent="Details" instance=ExtResource( 6 )] position = Vector2( -900, 2250 ) rotation = -1.57079 scale = Vector2( -0.9, 0.9 ) z_index = -35 palette = 2 [node name="TreeTop" parent="Details" instance=ExtResource( 13 )] position = Vector2( -600, 1850 ) z_index = -8 [node name="TreeTop5" parent="Details" instance=ExtResource( 13 )] position = Vector2( -1650, 1850 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 13 )] position = Vector2( -950, 1300 ) scale = Vector2( 0.3, 0.3 ) [node name="TreeTop11" parent="Details" instance=ExtResource( 13 )] position = Vector2( -1750, 2750 ) scale = Vector2( 0.9, 0.9 ) [node name="TreeTop14" parent="Details" instance=ExtResource( 13 )] position = Vector2( -1450, 2750 ) scale = Vector2( 0.9, 0.9 ) [node name="TreeTop3" parent="Details" instance=ExtResource( 13 )] position = Vector2( -600, 1450 ) scale = Vector2( 0.55, 0.55 ) z_index = -15 [node name="TreeTop4" parent="Details" instance=ExtResource( 13 )] position = Vector2( -1900, 1800 ) scale = Vector2( 0.7, 0.7 ) [node name="TreeTop6" parent="Details" instance=ExtResource( 13 )] position = Vector2( -1200, 2650 ) scale = Vector2( 0.5, 0.5 ) [node name="TreeTop7" parent="Details" instance=ExtResource( 13 )] position = Vector2( -750, 2400 ) scale = Vector2( 0.5, 0.5 ) [node name="TreeTop10" parent="Details" instance=ExtResource( 13 )] position = Vector2( -450, 2800 ) scale = Vector2( 0.75, 0.75 ) [node name="TreeTop12" parent="Details" instance=ExtResource( 13 )] position = Vector2( -1700, 2400 ) scale = Vector2( 0.5, 0.5 ) [node name="TreeTop8" parent="Details" instance=ExtResource( 13 )] position = Vector2( -350, 2350 ) scale = Vector2( 0.9, 0.9 ) [node name="Fencing" parent="Details" instance=ExtResource( 11 )] position = Vector2( -1650, 1100 ) length = 7 [node name="Tree3" parent="Details" instance=ExtResource( 6 )] position = Vector2( -1250, 1300 ) rotation = 0.15455 palette = 3 [node name="Fencing10" parent="Details" instance=ExtResource( 11 )] position = Vector2( -1250, 1300 ) [node name="Tree12" parent="Details" instance=ExtResource( 6 )] position = Vector2( -700, 1300 ) rotation = -0.194593 scale = Vector2( -1, 1 ) [node name="Fencing11" parent="Details" instance=ExtResource( 11 )] position = Vector2( -700, 1300 ) [node name="Fencing7" parent="Details" instance=ExtResource( 11 )] position = Vector2( -1700, 2400 ) length = 5 is_offset = true [node name="Fencing3" parent="Details" instance=ExtResource( 11 )] position = Vector2( -1175, 1800 ) rotation = -3.14159 length = 6 [node name="Fencing8" parent="Details" instance=ExtResource( 11 )] position = Vector2( -700, 2900 ) rotation = -3.14159 length = 7 [node name="Fencing9" parent="Details" instance=ExtResource( 11 )] position = Vector2( -900, 2250 ) rotation = -1.57079 length = 7 [node name="Fencing4" parent="Details" instance=ExtResource( 11 )] position = Vector2( -1200, 2650 ) rotation = 1.57079 length = 5 is_offset = true [node name="Fencing6" parent="Details" instance=ExtResource( 11 )] position = Vector2( -1400, 2400 ) is_offset = true [node name="Tree15" parent="Details" instance=ExtResource( 6 )] position = Vector2( -1900, 2500 ) rotation = -1.41195 [node name="Fencing12" parent="Details" instance=ExtResource( 11 )] position = Vector2( -1900, 2500 ) rotation = -1.57079 is_offset = true [node name="Fencing5" parent="Details" instance=ExtResource( 11 )] position = Vector2( -750, 2400 ) rotation = -3.14159 length = 5 is_offset = true [node name="Fencing2" parent="Details" instance=ExtResource( 11 )] position = Vector2( -1900, 1800 ) rotation = -1.57079 length = 8 is_offset = true [node name="FlowerPetals" parent="Details" instance=ExtResource( 10 )] position = Vector2( -1975, 1725 ) palette = 2 [node name="FlowerPetals10" parent="Details" instance=ExtResource( 10 )] position = Vector2( -1625, 2325 ) [node name="FlowerPetals11" parent="Details" instance=ExtResource( 10 )] position = Vector2( -1775, 2325 ) palette = 2 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 10 )] position = Vector2( -1650, 1985 ) palette = 4 [node name="FlowerPetals5" parent="Details" instance=ExtResource( 10 )] position = Vector2( -1550, 1950 ) rotation = 0.785397 palette = 2 [node name="FlowerPetals6" parent="Details" instance=ExtResource( 10 )] position = Vector2( -1125, 2725 ) palette = 2 [node name="FlowerPetals12" parent="Details" instance=ExtResource( 10 )] position = Vector2( -450, 2450 ) rotation = 0.785397 palette = 2 [node name="FlowerPetals13" parent="Details" instance=ExtResource( 10 )] position = Vector2( -250, 2450 ) rotation = -0.785397 palette = 4 [node name="FlowerPetals14" parent="Details" instance=ExtResource( 10 )] position = Vector2( -225, 2350 ) [node name="FlowerPetals15" parent="Details" instance=ExtResource( 10 )] position = Vector2( -350, 2475 ) palette = 5 [node name="FlowerPetals17" parent="Details" instance=ExtResource( 10 )] position = Vector2( -350, 2800 ) palette = 2 [node name="FlowerPetals8" parent="Details" instance=ExtResource( 10 )] position = Vector2( -823.087, 2464.92 ) [node name="FlowerPetals9" parent="Details" instance=ExtResource( 10 )] position = Vector2( -677.423, 2465.63 ) palette = 3 [node name="FlowerPetals7" parent="Details" instance=ExtResource( 10 )] position = Vector2( -1125, 2575 ) palette = 4 [node name="FlowerPetals4" parent="Details" instance=ExtResource( 10 )] position = Vector2( -1515, 1850 ) palette = 3 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 10 )] position = Vector2( -1975, 1875 ) [node name="FlowerPetals16" parent="Details" instance=ExtResource( 10 )] position = Vector2( -2000, 1800 ) rotation = -0.785397 palette = 5 [node name="Flower5" parent="Details" instance=ExtResource( 4 )] position = Vector2( -2100, 2700 ) rotation = 4.71238 palette = 5 [node name="Flower13" parent="Details" instance=ExtResource( 4 )] position = Vector2( -1250, 2800 ) rotation = 3.14159 [node name="Flower14" parent="Details" instance=ExtResource( 4 )] position = Vector2( -1290, 2490 ) rotation = 0.785397 palette = 3 [node name="Flower10" parent="Details" instance=ExtResource( 4 )] position = Vector2( -1390, 1290 ) rotation = 7.06857 [node name="Flower11" parent="Details" instance=ExtResource( 4 )] position = Vector2( -1900, 1150 ) rotation = 4.71238 palette = 3 [node name="Flower8" parent="Details" instance=ExtResource( 4 )] position = Vector2( -1750, 2800 ) rotation = 3.14159 palette = 2 [node name="Flower9" parent="Details" instance=ExtResource( 4 )] position = Vector2( -1450, 2800 ) rotation = 3.14159 palette = 4 [node name="Flower7" parent="Details" instance=ExtResource( 4 )] position = Vector2( -600, 2700 ) rotation = 6.28318 palette = 4 [node name="Flower12" parent="Details" instance=ExtResource( 4 )] position = Vector2( -500, 2900 ) rotation = 3.14159 palette = 5 [node name="Flower6" parent="Details" instance=ExtResource( 4 )] position = Vector2( -800, 2700 ) palette = 0 [node name="Flower15" parent="Details" instance=ExtResource( 4 )] position = Vector2( -500, 1900 ) z_index = -5 ================================================ FILE: src/map/worlds/2/1.tscn ================================================ [gd_scene load_steps=17 format=2] [ext_resource path="res://src/detail/SignGrab.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=7] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=15] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=16] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 8 )] tile_data = PoolIntArray( -196611, 0, 0, -196610, 0, 0, -131079, 0, 0, -131078, 0, 0, -131077, 0, 0, -131076, 0, 0, -131075, 0, 0, -131074, 0, 0, -65543, 0, 0, -65542, 0, 0, -65541, 0, 0, -65540, 0, 0, -65539, 0, 0, -65538, 0, 0, -7, 0, 0, -6, 0, 0, 65529, 0, 0, 65530, 0, 0, 65531, 0, 0, 65532, 0, 0, 65533, 0, 0, 65534, 0, 0, 65535, 0, 0, 0, 0, 0, 1, 0, 0, 2, 1610612736, 0, 3, 0, 0, 131065, 0, 0, 131066, 0, 0, 131067, 0, 0, 131068, 0, 0, 131069, 0, 0, 131070, 0, 0, 131071, 0, 0, 65536, 0, 0, 65537, 0, 0, 65538, 1610612736, 0, 65539, 0, 0, 131074, 0, 0, 131075, 0, 0 ) detail = 1 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -131080, -1073741824, 0, -65533, 0, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( -100, 250 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -350, -50 ) can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( -450, -50 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -200, -250 ) rotation = -1.57079 scale = Vector2( 0.207201, 0.207201 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -100, 100 ) rotation = -2.35619 scale = Vector2( 0.184446, 0.184446 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 16 )] position = Vector2( -600, -200 ) rotation = 1.57079 scale = Vector2( 0.269801, 0.269801 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 16 )] position = Vector2( -575, 75 ) rotation = 3.14159 scale = Vector2( 0.269801, 0.269801 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 300, 150 ) scale = Vector2( 0.2, 0.2 ) [node name="SignGrab" parent="Details" instance=ExtResource( 1 )] position = Vector2( -100, -250 ) rotation = 1.65806 [node name="Lamppost" parent="Details" instance=ExtResource( 5 )] position = Vector2( 150, 0 ) [node name="Lamppost2" parent="Details" instance=ExtResource( 5 )] position = Vector2( -450, 200 ) rotation = 3.14159 [node name="TreeTop" parent="Details" instance=ExtResource( 7 )] position = Vector2( 200, 200 ) scale = Vector2( 0.9, 0.9 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 11 )] position = Vector2( 100, 300 ) palette = 4 [node name="Bench" parent="Details" instance=ExtResource( 10 )] position = Vector2( -600, 250 ) rotation = -3.14159 [node name="Fence" parent="Details" instance=ExtResource( 12 )] position = Vector2( -300, 200 ) rotation = -3.14159 [node name="Tree" parent="Details" instance=ExtResource( 13 )] position = Vector2( -300, 200 ) rotation = -3.30365 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree3" parent="Details" instance=ExtResource( 13 )] position = Vector2( -400, -300 ) rotation = -6.15504 scale = Vector2( -1, 1 ) palette = 6 [node name="Tree4" parent="Details" instance=ExtResource( 13 )] position = Vector2( -600, -300 ) rotation = -6.39237 palette = 5 [node name="Fence2" parent="Details" instance=ExtResource( 12 )] position = Vector2( -500, -300 ) rotation = -6.28318 length = 7 [node name="Tree2" parent="Details" instance=ExtResource( 13 )] position = Vector2( -500, -300 ) rotation = -6.325 scale = Vector2( -0.9, 0.9 ) z_index = -35 palette = 2 [node name="Flower" parent="Details" instance=ExtResource( 14 )] position = Vector2( -700, 100 ) rotation = -1.57079 palette = 3 [node name="Flower4" parent="Details" instance=ExtResource( 14 )] position = Vector2( 400, 150 ) rotation = 1.57079 palette = 5 [node name="Flower2" parent="Details" instance=ExtResource( 14 )] position = Vector2( -700, -100 ) rotation = -1.57079 [node name="Flower3" parent="Details" instance=ExtResource( 14 )] position = Vector2( -200, -400 ) palette = 2 ================================================ FILE: src/map/worlds/2/2.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=13] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 8 )] tile_data = PoolIntArray( -65538, 1610612736, 0, -65537, 0, 0, -131072, 0, 0, -131071, 0, 0, -2, -1610612736, 0, -1, -1610612736, 0, -65536, 0, 0, -65535, 0, 0, 0, 1610612736, 0, 1, 0, 0, 65536, 0, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 65541, 0, 0, 65542, 0, 0, 65543, 0, 0, 131072, 0, 0, 131073, 0, 0, 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, 0, 0, 196608, 1610612736, 0, 196609, 1610612736, 0, 262144, 1610612736, 0, 262145, 1610612736, 0 ) detail = 1 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -131070, -1610612736, 0, 7, 0, 0, 327680, 1610612736, 0, 327681, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( -50, 300 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -150, -250 ) can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 500, 550 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 125, 200 ) rotation = -0.785397 scale = Vector2( 0.237009, 0.236272 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( -100, -100 ) rotation = -1.57079 scale = Vector2( 0.158466, 0.157973 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 700, 200 ) scale = Vector2( 0.225823, 0.225823 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 100, 400 ) rotation = 3.14159 scale = Vector2( 0.207494, 0.207494 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( 85, -85 ) scale = Vector2( 0.22503, 0.22503 ) [node name="Fence" parent="Details" instance=ExtResource( 1 )] position = Vector2( 0, 150 ) rotation = -1.57079 [node name="Tree" parent="Details" instance=ExtResource( 5 )] position = Vector2( 0, 150 ) rotation = -1.72773 scale = Vector2( -1, 1 ) palette = 5 [node name="Fence2" parent="Details" instance=ExtResource( 1 )] position = Vector2( 350, 300 ) rotation = -3.14159 [node name="Tree2" parent="Details" instance=ExtResource( 5 )] position = Vector2( 350, 300 ) rotation = -3.03687 palette = 3 [node name="Fence3" parent="Details" instance=ExtResource( 1 )] position = Vector2( 650, 300 ) rotation = -3.14159 [node name="Tree3" parent="Details" instance=ExtResource( 5 )] position = Vector2( 650, 300 ) rotation = -3.24631 scale = Vector2( -1, 1 ) [node name="Flower" parent="Details" instance=ExtResource( 10 )] position = Vector2( 0, 425 ) rotation = -1.57079 [node name="Flower2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 800, 200 ) rotation = -4.71238 palette = 5 [node name="Flower5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 210, 310 ) rotation = -3.92699 palette = 3 [node name="Flower3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 210, 90 ) rotation = -5.49778 palette = 2 [node name="Flower4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 0, -200 ) rotation = -6.28318 palette = 4 [node name="Candle" parent="Details" instance=ExtResource( 7 )] position = Vector2( -200, -100 ) rotation = -1.57079 [node name="Lamppost" parent="Details" instance=ExtResource( 11 )] position = Vector2( 500, 100 ) [node name="Lamppost2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 500, 300 ) rotation = 3.14159 ================================================ FILE: src/map/worlds/2/3.tscn ================================================ [gd_scene load_steps=16 format=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( -393217, -1073741824, 0, -458752, -1610612736, 0, -458751, -1073741824, 0, -458750, -1073741824, 0, -458749, -1610612736, 0, -458748, -1610612736, 0, -327681, -1073741824, 0, -393216, -1073741824, 0, -393213, -1610612736, 0, -393212, -1610612736, 0, -262145, -1073741824, 0, -327680, -1073741824, 0, -327677, -1610612736, 0, -327676, -1610612736, 0, -196609, -1073741824, 0, -262144, -1073741824, 0, -262141, -1610612736, 0, -262140, -1610612736, 0, -196605, -1610612736, 0, -196604, -1610612736, 0, -65540, -1073741824, 0, -65539, -1073741824, 0, -65538, 0, 0, -65537, 0, 0, -131072, 0, 0, -131069, -1610612736, 0, -131068, -1610612736, 0, -4, -1073741824, 0, -3, -1073741824, 0, -2, 0, 0, -1, 0, 0, -65536, 0, 0, -65533, -1610612736, 0, -65532, -1610612736, 0, 65532, -1073741824, 0, 3, -1610612736, 0, 4, -1610612736, 0, 131068, -1073741824, 0, 65539, -1610612736, 0, 65540, -1610612736, 0, 196604, -1073741824, 0, 196605, -1073741824, 0, 196606, -1073741824, 0, 196607, -1073741824, 0, 131072, -1073741824, 0, 131073, -1073741824, 0, 131074, -1073741824, 0, 131075, -1073741824, 0, 131076, -1610612736, 0, 262140, -1610612736, 0, 262141, -1610612736, 0, 262142, -1610612736, 0, 262143, -1610612736, 0, 196608, -1610612736, 0, 196609, -1610612736, 0, 196610, -1610612736, 0, 196611, -1610612736, 0, 196612, -1610612736, 0 ) detail = 1 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( -196610, -1073741824, 0, -262142, -1073741824, 0, -196606, -1073741824, 0, -131070, -1073741824, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 6 )] position = Vector2( -150, 50 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 250, -750 ) can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 200, -550 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( -0.00012207, -400 ) rotation = -0.785397 scale = Vector2( 0.19401, 0.19401 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( -300, 300 ) rotation = -1.57079 scale = Vector2( 0.177165, 0.177165 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 400, -150 ) rotation = -2.35619 scale = Vector2( 0.154983, 0.154983 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( 375, 275 ) rotation = 1.57079 scale = Vector2( 0.28645, 0.28645 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( 0.00012207, -100 ) scale = Vector2( 0.227274, 0.227274 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( -300, -100 ) scale = Vector2( 0.2, 0.2 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( 50, 300 ) scale = Vector2( 0.170559, 0.170559 ) [node name="Circle3" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( 400, -600 ) scale = Vector2( 0.168941, 0.168941 ) [node name="Lamppost" parent="Details" instance=ExtResource( 2 )] position = Vector2( 300, 200 ) rotation = -0.785397 [node name="Lamppost2" parent="Details" instance=ExtResource( 2 )] position = Vector2( -100, -500 ) rotation = -1.57079 [node name="Fence" parent="Details" instance=ExtResource( 9 )] position = Vector2( -400, 100 ) rotation = -1.57079 length = 7 [node name="Tree" parent="Details" instance=ExtResource( 8 )] position = Vector2( -400, 100 ) rotation = -1.51074 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree2" parent="Details" instance=ExtResource( 8 )] position = Vector2( -400, 200 ) rotation = -1.69163 palette = 5 [node name="Tree3" parent="Details" instance=ExtResource( 8 )] position = Vector2( -400, 1.52588e-05 ) rotation = -1.38014 scale = Vector2( -1, 1 ) palette = 6 [node name="Fence2" parent="Details" instance=ExtResource( 9 )] position = Vector2( 500, -150 ) rotation = 1.57079 length = 7 [node name="Tree4" parent="Details" instance=ExtResource( 8 )] position = Vector2( 500, -150 ) rotation = 1.53334 scale = Vector2( -0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree5" parent="Details" instance=ExtResource( 8 )] position = Vector2( 500, -50 ) rotation = 1.83463 [node name="Tree6" parent="Details" instance=ExtResource( 8 )] position = Vector2( 500, -250 ) rotation = 1.34357 scale = Vector2( -1, 1 ) palette = 3 [node name="Candle" parent="Details" instance=ExtResource( 10 )] position = Vector2( -400, -100 ) rotation = -1.57079 [node name="Candle2" parent="Details" instance=ExtResource( 10 )] position = Vector2( -400, 300 ) rotation = -1.57079 [node name="Flower" parent="Details" instance=ExtResource( 11 )] position = Vector2( 100, -400 ) rotation = 1.57079 palette = 2 [node name="Flower5" parent="Details" instance=ExtResource( 11 )] position = Vector2( -95, -695 ) rotation = -0.785397 palette = 5 [node name="Flower2" parent="Details" instance=ExtResource( 11 )] position = Vector2( -250, 400 ) rotation = 3.14159 [node name="Flower6" parent="Details" instance=ExtResource( 11 )] position = Vector2( 500, 100 ) rotation = 1.57079 palette = 0 [node name="Flower3" parent="Details" instance=ExtResource( 11 )] position = Vector2( -50, 200 ) palette = 3 [node name="Flower4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 0 ) rotation = -1.57079 palette = 4 [node name="TreeTop" parent="Details" instance=ExtResource( 12 )] position = Vector2( 450, 350 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 450, -650 ) scale = Vector2( 0.8, 0.8 ) [node name="Bench" parent="Details" instance=ExtResource( 13 )] position = Vector2( 50, 450 ) rotation = 3.14159 ================================================ FILE: src/map/worlds/2/4.tscn ================================================ [gd_scene load_steps=15 format=2] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=7] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=14] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 8 )] tile_data = PoolIntArray( -131073, 0, 0, -196608, -1610612736, 0, -196607, -1610612736, 0, -196606, -1610612736, 0, -65537, 0, 0, -131072, 0, 0, -131071, -1610612736, 0, -131070, -1610612736, 0, 65528, 1610612736, 0, 65529, 1610612736, 0, 65530, 1610612736, 0, 65531, 1610612736, 0, 65532, 1610612736, 0, 65533, 0, 0, 131064, 1610612736, 0, 131065, 1610612736, 0, 131066, 1610612736, 0, 131067, 1610612736, 0, 131068, 0, 0, 131069, 0, 0, 196602, 0, 0, 196603, 0, 0, 262138, 0, 0, 262139, 0, 0, 327674, 0, 0, 327675, 0, 0, 393210, 1610612736, 0, 393211, 1610612736, 0, 458746, 1610612736, 0, 458747, 1610612736, 0 ) detail = 1 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -196605, -1610612736, 0, -131069, -1610612736, 0, -8, 0, 0, -3, 0, 0, 524282, 1610612736, 0, 524283, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( -350, 450 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/2/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 250, -350 ) can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( -750, 450 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( -500, 125 ) rotation = -0.785397 scale = Vector2( 0.223317, 0.223317 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( -500, 600 ) rotation = -1.57079 scale = Vector2( 0.207487, 0.207487 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( -700, 100 ) rotation = -1.57079 scale = Vector2( 0.2, 0.2 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 100, -200 ) scale = Vector2( 0.2, 0.2 ) [node name="Lamppost" parent="Details" instance=ExtResource( 1 )] position = Vector2( -600, 300 ) rotation = -1.57079 [node name="Lamppost2" parent="Details" instance=ExtResource( 1 )] position = Vector2( 100, -100 ) rotation = -3.14448 [node name="Fence" parent="Details" instance=ExtResource( 5 )] position = Vector2( -400, 300 ) rotation = 1.57079 [node name="Tree" parent="Details" instance=ExtResource( 7 )] position = Vector2( -400, 300 ) rotation = 1.65806 [node name="Fence3" parent="Details" instance=ExtResource( 5 )] position = Vector2( -500, 0 ) [node name="Tree3" parent="Details" instance=ExtResource( 7 )] position = Vector2( -500, 0 ) rotation = 0.175906 palette = 3 [node name="Fence2" parent="Details" instance=ExtResource( 5 )] position = Vector2( -400, 600 ) rotation = -4.71238 [node name="Tree2" parent="Details" instance=ExtResource( 7 )] position = Vector2( -400, 600 ) rotation = 1.48353 scale = Vector2( -1, 1 ) palette = 5 [node name="Flower" parent="Details" instance=ExtResource( 10 )] position = Vector2( -600, 600 ) rotation = -1.57079 palette = 2 [node name="Flower2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 250, -100 ) rotation = -3.14159 [node name="Flower3" parent="Details" instance=ExtResource( 10 )] position = Vector2( -50, -100 ) rotation = -3.14159 palette = 4 [node name="Bench" parent="Details" instance=ExtResource( 11 )] position = Vector2( -150, -200 ) rotation = -1.57079 [node name="TreeTop" parent="Details" instance=ExtResource( 12 )] position = Vector2( 100, -250 ) scale = Vector2( 0.7, 0.7 ) ================================================ FILE: src/map/worlds/2/5.tscn ================================================ [gd_scene load_steps=17 format=2] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=15] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=16] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 8 )] tile_data = PoolIntArray( -196608, -1610612736, 0, -196607, -1610612736, 0, -196606, -1610612736, 0, -131072, -1610612736, 0, -131071, -1610612736, 0, -131070, -1610612736, 0, -4, 0, 0, -3, 0, 0, -2, 0, 0, -1, 0, 0, -65536, -1610612736, 0, -65535, -1610612736, 0, -65534, -1610612736, 0, -65533, -1610612736, 0, -65532, -1610612736, 0, -65531, -1610612736, 0, -65530, -1610612736, 0, 65532, 0, 0, 65533, -1610612736, 0, 65534, -1610612736, 0, 65535, -1610612736, 0, 0, -1610612736, 0, 1, -1610612736, 0, 2, -1610612736, 0, 3, -1610612736, 0, 4, -1610612736, 0, 5, -1610612736, 0, 6, -1610612736, 0, 131068, 0, 0, 131069, -1610612736, 0, 131070, -1610612736, 0, 131071, -1610612736, 0, 65536, -1610612736, 0, 65537, -1610612736, 0, 65538, -1610612736, 0, 65539, -1610612736, 0, 65540, -1610612736, 0, 65541, -1610612736, 0, 65542, -1610612736, 0, 196607, 0, 0, 131072, 0, 0, 131073, -1610612736, 0, 131074, -1610612736, 0, 131075, 0, 0, 196608, 1610612736, 0, 196609, -1610612736, 0, 196610, -1610612736, 0, 262144, 1610612736, 0, 262145, -1610612736, 0, 262146, -1610612736, 0, 327680, 1610612736, 0, 327681, -1610612736, 0, 327682, -1610612736, 0, 393216, 1610612736, 0, 393217, 0, 0, 393218, 0, 0, 458752, 1610612736, 0, 458753, 1610612736, 0, 458754, 1610612736, 0 ) detail = 1 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -5, -1073741824, 0, -65529, -1610612736, 0, 524288, 1610612736, 0, 524290, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( -50, 550 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 150, -350 ) can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 550, 550 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 150, 100 ) rotation = -0.785397 scale = Vector2( 0.58021, 0.58021 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( -300, 100 ) rotation = -3.14159 scale = Vector2( 0.243269, 0.243269 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 15 )] position = Vector2( 600, 0 ) scale = Vector2( 0.243269, 0.243269 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 16 )] position = Vector2( 150, 650 ) scale = Vector2( 0.329694, 0.329694 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 16 )] position = Vector2( 150, -200 ) scale = Vector2( 0.194407, 0.194407 ) [node name="Fence" parent="Details" instance=ExtResource( 5 )] position = Vector2( -250, 200 ) rotation = 3.14159 [node name="Tree" parent="Details" instance=ExtResource( 1 )] position = Vector2( -250, 200 ) rotation = 3.27753 palette = 5 [node name="Fence2" parent="Details" instance=ExtResource( 5 )] position = Vector2( 0, 700 ) rotation = 4.71238 [node name="Tree2" parent="Details" instance=ExtResource( 1 )] position = Vector2( 0, 700 ) rotation = -1.70845 scale = Vector2( -1, 1 ) [node name="Fence3" parent="Details" instance=ExtResource( 5 )] position = Vector2( 300, 700 ) rotation = 7.85397 [node name="Tree3" parent="Details" instance=ExtResource( 1 )] position = Vector2( 300, 700 ) rotation = 1.72788 palette = 3 [node name="Fence4" parent="Details" instance=ExtResource( 5 )] position = Vector2( 300, 400 ) rotation = 7.85397 [node name="Tree4" parent="Details" instance=ExtResource( 1 )] position = Vector2( 300, 400 ) rotation = 1.41372 scale = Vector2( -1, 1 ) [node name="Candle" parent="Details" instance=ExtResource( 7 )] position = Vector2( -95, 295 ) rotation = -2.35619 [node name="Candle2" parent="Details" instance=ExtResource( 7 )] position = Vector2( 150, 800 ) rotation = -3.14159 [node name="Flower" parent="Details" instance=ExtResource( 10 )] position = Vector2( 0, 400 ) rotation = -1.57079 palette = 2 [node name="Flower2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 650, 200 ) rotation = -3.14159 palette = 4 [node name="Flower4" parent="Details" instance=ExtResource( 10 )] position = Vector2( -350, -100 ) palette = 4 [node name="Flower3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 700, 100 ) rotation = 1.57079 palette = 5 [node name="Lamppost" parent="Details" instance=ExtResource( 11 )] position = Vector2( -150, -100 ) [node name="Lamppost2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 550 ) rotation = 1.57079 [node name="Bench" parent="Details" instance=ExtResource( 12 )] position = Vector2( -50, -200 ) rotation = -1.57079 [node name="TreeTop" parent="Details" instance=ExtResource( 13 )] position = Vector2( 350, -150 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 14 )] position = Vector2( 350, -300 ) [node name="FlowerPetals2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 450, -250 ) rotation = -0.785397 palette = 3 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 14 )] position = Vector2( 500, -150 ) palette = 2 ================================================ FILE: src/map/worlds/2A/0_hub.tscn ================================================ [gd_scene load_steps=15 format=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorBig.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Snowman.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=15] [node name="Map" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( -196599, -1610612736, 0, -196598, -1610612736, 0, -196597, -1610612736, 0, -65538, 1610612736, 0, -65537, 1610612736, 0, -131072, 1610612736, 0, -131071, 1610612736, 0, -131070, 0, 0, -131069, 0, 0, -131068, 0, 0, -131067, 0, 0, -131066, 0, 0, -131063, -1610612736, 0, -131062, 1610612736, 0, -131061, 1610612736, 0, -2, 1610612736, 0, -1, 1610612736, 0, -65536, 1610612736, 0, -65535, 1610612736, 0, -65534, 0, 0, -65533, 0, 0, -65532, 0, 0, -65531, 0, 0, -65530, 0, 0, -65527, -1610612736, 0, -65526, -1610612736, 0, -65525, -1610612736, 0, -65524, 1610612736, 0, -65523, -1610612736, 0, 65534, 1610612736, 0, 65535, 1610612736, 0, 0, 1610612736, 0, 1, 1610612736, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0, 6, -1610612736, 0, 9, -1610612736, 0, 10, -1610612736, 0, 11, -1610612736, 0, 12, -1610612736, 0, 13, -1610612736, 0, 131070, 1610612736, 0, 131071, 1610612736, 0, 65536, 1610612736, 0, 65537, 1610612736, 0, 65538, 0, 0, 196605, -1610612736, 0, 196606, 1610612736, 0, 196607, 1610612736, 0, 131072, 1610612736, 0, 131073, 1610612736, 0, 262141, -1610612736, 0, 262142, 1610612736, 0, 262143, 1610612736, 0, 196608, 1610612736, 0, 196609, 1610612736, 0, 196621, -1610612736, 0, 196622, -1610612736, 0, 196623, -1610612736, 0, 327677, -1610612736, 0, 327678, 0, 0, 327679, 1610612736, 0, 262144, 0, 0, 262145, 1610612736, 0, 262155, -1610612736, 0, 262156, -1610612736, 0, 262157, -1610612736, 0, 262158, -1610612736, 0, 262159, -1610612736, 0, 393213, -1610612736, 0, 393214, 0, 0, 393215, 0, 0, 327680, 0, 0, 327681, 0, 0, 327687, -1610612736, 0, 327691, -1610612736, 0, 327692, -1610612736, 0, 327693, -1610612736, 0, 327694, -1610612736, 0, 327695, -1610612736, 0, 458750, 0, 0, 458751, 0, 0, 393216, 0, 0, 393217, 0, 0, 393218, 0, 0, 393221, -1610612736, 0, 393227, -1610612736, 0, 393228, -1610612736, 0, 393229, -1610612736, 0, 524286, 0, 0, 524287, 0, 0, 458752, 0, 0, 458753, 0, 0, 458754, 0, 0, 458757, -1610612736, 0, 458763, -1610612736, 0, 458764, -1610612736, 0, 458765, -1610612736, 0, 589822, 0, 0, 589823, 0, 0, 524288, 0, 0, 524289, 0, 0, 524290, 0, 0, 524299, -1610612736, 0, 524300, -1610612736, 0, 524301, -1610612736, 0, 655358, 0, 0, 655359, 0, 0, 589824, 0, 0, 589825, 0, 0, 589826, 0, 0, 589827, -1610612736, 0, 589835, -1610612736, 0, 589836, -1610612736, 0, 589837, -1610612736, 0, 720894, 0, 0, 720895, 0, 0, 655360, 0, 0, 655361, 0, 0, 655362, 0, 0, 655363, 0, 0, 655364, 1610612736, 0, 655365, 1610612736, 0, 655366, 1610612736, 0, 655367, -1610612736, 0, 655371, -1610612736, 0, 655372, -1610612736, 0, 655373, -1610612736, 0, 720896, 0, 0, 720897, 0, 0, 720898, 0, 0, 720899, 0, 0, 720900, 1610612736, 0, 720901, 1610612736, 0, 720902, 1610612736, 0, 720903, -1610612736, 0, 786432, 0, 0, 786433, 0, 0, 786434, 0, 0, 786435, 0, 0, 786436, 1610612736, 0, 786437, 1610612736, 0, 786438, 1610612736, 0, 786439, -1610612736, 0, 851982, 0, 0, 1048587, -1073741824, 0 ) detail = 2 bg_palette = 2 [node name="SpikeMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 655368, -1610612736, 0, 720904, -1610612736, 0, 786440, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="BigDoor" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -300, 750 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/0/0_hub.tscn" [node name="BigDoor2" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 1000, 600 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2C/0_hub.tscn" gem_count = 35 [node name="Door1" parent="Actors" instance=ExtResource( 6 )] position = Vector2( -250, 50 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2A/1.tscn" [node name="Door2" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 250, -250 ) scene_path = "res://src/map/worlds/2A/2.tscn" [node name="Door4" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 600, 150 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2A/4.tscn" [node name="Door5" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 250, 400 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/2A/5.tscn" [node name="Door6" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 650, 950 ) scene_path = "res://src/map/worlds/2A/6.tscn" [node name="Door7" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1450, 950 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/2A/7.tscn" [node name="NPC" parent="Actors" instance=ExtResource( 8 )] position = Vector2( 200, 1350 ) __meta__ = { "_editor_description_": "" } dir = 2 idle_anim = "idle2" dye = { "eye": 3, "fit": 10, "hair": 1, "skin": 0 } hairstyle_back = 0 hairstyle_front = 5 hat = 3 is_npc = true lines = [ "Aren't they marvelous?", "I rolled em up myself!", "Yeah, I'm pretty sick at rollin snow (;", "Balancing the last snowball is tricky!", "Now i feel tiny next to Snowbo", "I named them Snowbo!" ] [node name="NPC2" parent="Actors" instance=ExtResource( 8 )] position = Vector2( 1150, 150 ) __meta__ = { "_editor_description_": "" } dir = 2 idle_anim = "snowball" dye = { "eye": 3, "fit": 11, "hair": 15, "skin": 0 } hairstyle_front = 6 hat = 3 is_npc = true lines = [ "Wanna have a snowball fight? (:", "I'm gonna crush you!", "The snow is light and fluffy!", "It won't hurt thaat bad ;P", "I haven't seen Robbi since my astonishing victory (;", "Watch your back..", "Snowball Snowball Snooowbaaall", "Ooo yeah right in the face!" ] greeting = 0 [node name="NPC3" parent="Actors" instance=ExtResource( 8 )] position = Vector2( 650, 700 ) __meta__ = { "_editor_description_": "" } dir = 1 idle_anim = "invisible" dye = { "eye": 3, "fit": 10, "hair": 1, "skin": 0 } hairstyle_back = 0 hairstyle_front = 5 hat = 3 is_npc = true lines = [ "You found me! 0:", "I've been hiding in here all day!", "Tell my mom I'm fine!", "Psst.. can you bring me a soda?", "My friend rolled me up in here..", "Snow surrounds me in every direction..", "That's not yellow snow!.. I'ts something else", "*oof* Can you poke another air hole?", "Sure beats chores", "You gotta try this!", "I'm chillin!", "It's me, Robbi!", "Snowballs can't hurt me now!" ] greeting = 0 chat_offset = Vector2( 0, -220 ) ready_z_index = -50 [node name="NPC4" parent="Actors" instance=ExtResource( 8 )] position = Vector2( 350, 750 ) __meta__ = { "_editor_description_": "" } dir = 1 idle_anim = "ponder" dye = { "eye": 0, "fit": 15, "hair": 6, "skin": 5 } hairstyle_back = 3 hairstyle_front = 8 is_npc = true lines = [ "Cozy up and feel the candle warmth!", "I'm a lover not a snowball fighter..", "Hmm this puzzle has me stumped..", "Love that pine tree scent! Mmm..", "These are my flower friends (=", "Take a moment to relax and reflect..", "Do I really need that gem?" ] [node name="NPC5" parent="Actors" instance=ExtResource( 8 )] position = Vector2( -350, 400 ) __meta__ = { "_editor_description_": "" } dir = 3 idle_anim = "snowball" dye = { "eye": 15, "fit": 18, "hair": 11, "skin": 6 } hairstyle_back = 0 hairstyle_front = 3 is_npc = true lines = [ "*brrr* I forgot my coat!", "Find any pine cones?", "Wiggle the trees with me!", "We're playing hide and seek!", "Have you found my friend?", "I saw a gem through that door..", "My pappy told me to save my gems!" ] [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square4" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 50, 850 ) rotation = -0.785397 scale = Vector2( 0.566917, 0.566917 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 350, -50 ) rotation = -0.785397 scale = Vector2( 0.314772, 0.314772 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 1300, 4.1008e-05 ) rotation = -0.785397 scale = Vector2( 0.190054, 0.190054 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 1450, 450 ) rotation = -1.57079 scale = Vector2( 0.392879, 0.392879 ) [node name="Rocks12" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 100, 1200 ) rotation = -3.14159 scale = Vector2( 0.25, 0.25 ) [node name="Rocks11" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 1250, 700 ) rotation = -3.14159 scale = Vector2( 0.517075, 0.517075 ) [node name="Rocks10" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 1250, 850 ) scale = Vector2( 0.517075, 0.517075 ) [node name="Rocks9" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 100, 400 ) rotation = 1.57081 scale = Vector2( 0.25, 0.25 ) [node name="Rocks8" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 700, 1100 ) scale = Vector2( 0.25, 0.25 ) [node name="Rocks7" parent="Details/Rocks" instance=ExtResource( 3 )] rotation = -1.57078 scale = Vector2( 0.45, 0.45 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 250, 1100 ) scale = Vector2( 0.333241, 0.333241 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 550, 1200 ) scale = Vector2( 0.214811, 0.214811 ) [node name="Circle3" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( -100, 400 ) scale = Vector2( 0.383748, 0.383748 ) [node name="Circle4" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 200, 100 ) scale = Vector2( 0.190304, 0.190304 ) [node name="Circle5" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 200, 700 ) scale = Vector2( 0.190304, 0.190304 ) [node name="Circle6" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 600, -50 ) scale = Vector2( 0.212826, 0.212826 ) [node name="Circle7" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 1050, -150 ) scale = Vector2( 0.436193, 0.436193 ) [node name="Snowman" parent="Details" instance=ExtResource( 11 )] position = Vector2( 600, 1300 ) rotation = 3.14159 scale = Vector2( 0.3, 0.3 ) [node name="Snowman4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 600, 700 ) rotation = 7.85397 scale = Vector2( 0.3, 0.3 ) [node name="Snowman2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 400, -200 ) scale = Vector2( 0.3, 0.3 ) [node name="Snowman3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1500, 300 ) scale = Vector2( -0.3, 0.3 ) [node name="Bench2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 50, -250 ) [node name="Bench3" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1050, 1000 ) rotation = 4.71238 scale = Vector2( -1, 1 ) [node name="PineTree" parent="Details" instance=ExtResource( 10 )] position = Vector2( -200, 925 ) rotation = -1.60192 z_index = -5 [node name="PineTree2" parent="Details" instance=ExtResource( 10 )] position = Vector2( -300, 575 ) rotation = -1.49666 z_index = -5 [node name="PineTree5" parent="Details" instance=ExtResource( 10 )] position = Vector2( -300, 350 ) rotation = -1.52238 scale = Vector2( 0.3, 0.3 ) z_index = -5 [node name="PineTree6" parent="Details" instance=ExtResource( 10 )] modulate = Color( 0.94902, 0.94902, 0.94902, 1 ) position = Vector2( -300, 250 ) rotation = -1.6045 [node name="PineTree7" parent="Details" instance=ExtResource( 10 )] position = Vector2( -200, -100 ) rotation = -1.3983 scale = Vector2( 0.3, 0.3 ) z_index = -20 [node name="PineTree8" parent="Details" instance=ExtResource( 10 )] position = Vector2( -200, -200 ) rotation = -0.785397 [node name="PineTree9" parent="Details" instance=ExtResource( 10 )] position = Vector2( 600, -200 ) rotation = 0.261799 [node name="PineTree18" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1200, -300 ) rotation = 0.928788 [node name="PineTree19" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1390.46, -94.7027 ) rotation = 0.301479 scale = Vector2( 0.3, 0.3 ) [node name="PineTree20" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1400, 0 ) rotation = 1.29001 scale = Vector2( 0.3, 0.4 ) [node name="PineTree10" parent="Details" instance=ExtResource( 10 )] position = Vector2( 900, 100 ) rotation = 3.93668 [node name="PineTree13" parent="Details" instance=ExtResource( 10 )] position = Vector2( 300, 1300 ) rotation = 3.27945 [node name="PineTree14" parent="Details" instance=ExtResource( 10 )] position = Vector2( -16.6855, 1116.02 ) rotation = 3.93243 scale = Vector2( 0.35, 0.4 ) [node name="PineTree11" parent="Details" instance=ExtResource( 10 )] position = Vector2( 300, 200 ) rotation = 2.09439 scale = Vector2( 0.3, 0.3 ) [node name="PineTree12" parent="Details" instance=ExtResource( 10 )] position = Vector2( 300, 600 ) rotation = 1.0472 [node name="PineTree16" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1100, 750 ) rotation = -1.70267 [node name="PineTree24" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1100, 1100 ) rotation = -2.1472 scale = Vector2( 0.3, 0.3 ) [node name="PineTree23" parent="Details" instance=ExtResource( 10 )] modulate = Color( 0.94902, 0.94902, 0.94902, 1 ) position = Vector2( 1100, 850 ) rotation = -1.90138 scale = Vector2( 0.35, 0.35 ) z_index = -30 [node name="PineTree21" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1400, 700 ) rotation = -4.18549 [node name="PineTree22" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1600, 550 ) rotation = -4.44939 scale = Vector2( 0.3, 0.35 ) [node name="PineTree17" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1100, 450 ) rotation = -1.45521 [node name="PineTree3" parent="Details" instance=ExtResource( 10 )] modulate = Color( 0.94902, 0.94902, 0.94902, 1 ) position = Vector2( -300, 450 ) rotation = -1.60969 scale = Vector2( 0.3, 0.3 ) [node name="PineTree4" parent="Details" instance=ExtResource( 10 )] modulate = Color( 0.94902, 0.94902, 0.94902, 1 ) position = Vector2( -200, 1050 ) rotation = -1.53031 scale = Vector2( 0.3, 0.3 ) [node name="Flower" parent="Details" instance=ExtResource( 12 )] position = Vector2( 400, 1300 ) rotation = -3.14159 palette = 2 [node name="Flower4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 100, 1300 ) rotation = -3.14159 [node name="Flower2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 5, 1295 ) rotation = -2.35619 palette = 3 [node name="Flower3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 500, -200 ) palette = 4 [node name="Flower9" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1205, -105 ) rotation = 0.785397 [node name="Flower10" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1300, 100 ) rotation = 3.14159 palette = 3 [node name="Flower22" parent="Details" instance=ExtResource( 12 )] position = Vector2( 900, -100 ) rotation = 4.71238 palette = 0 [node name="Flower14" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1305, 305 ) rotation = 5.49778 palette = 0 [node name="Flower11" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1000, 100 ) rotation = 3.14159 palette = 5 [node name="Flower20" parent="Details" instance=ExtResource( 12 )] position = Vector2( 450, 100 ) rotation = 3.14159 palette = 2 [node name="Flower5" parent="Details" instance=ExtResource( 12 )] position = Vector2( -295, 205 ) rotation = -0.785397 palette = 5 [node name="Flower8" parent="Details" instance=ExtResource( 12 )] position = Vector2( -100, -200 ) palette = 2 [node name="Flower6" parent="Details" instance=ExtResource( 12 )] position = Vector2( -300, 500 ) rotation = -1.57079 z_index = -5 [node name="Flower7" parent="Details" instance=ExtResource( 12 )] position = Vector2( -200, 1000 ) rotation = -1.57079 z_index = -5 palette = 5 [node name="Flower15" parent="Details" instance=ExtResource( 12 )] position = Vector2( 300, 650 ) rotation = -4.71238 palette = 2 [node name="Flower21" parent="Details" instance=ExtResource( 12 )] position = Vector2( 200, 550 ) rotation = -4.71238 palette = 5 [node name="Flower16" parent="Details" instance=ExtResource( 12 )] position = Vector2( 395, 905 ) rotation = -5.49778 palette = 4 [node name="Flower17" parent="Details" instance=ExtResource( 12 )] position = Vector2( 500, 1000 ) rotation = -6.28318 palette = 3 [node name="Flower18" parent="Details" instance=ExtResource( 12 )] position = Vector2( 705, 505 ) rotation = -7.06857 [node name="Lamppost" parent="Details" instance=ExtResource( 15 )] position = Vector2( 150, -200 ) [node name="Candle" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1050, -300 ) [node name="Candle5" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1150, 400 ) [node name="Candle3" parent="Details" instance=ExtResource( 14 )] position = Vector2( 500, 750 ) rotation = -1.57079 [node name="Candle6" parent="Details" instance=ExtResource( 14 )] position = Vector2( 200, 300 ) rotation = -4.71238 [node name="Candle4" parent="Details" instance=ExtResource( 14 )] position = Vector2( 500, 1300 ) rotation = -3.14159 [node name="Flower12" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1405, 605 ) rotation = 2.35619 [node name="Flower19" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1300, 1100 ) rotation = 3.14159 palette = 2 [node name="Flower23" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1200, 1650 ) rotation = 1.57079 palette = 4 ================================================ FILE: src/map/worlds/2A/1.tscn ================================================ [gd_scene load_steps=12 format=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=1] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=11] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( 458749, 0, 0, 458750, 0, 0, 458751, -1610612736, 0, 393216, -1610612736, 0, 393217, -1610612736, 0, 393218, -1610612736, 0, 393219, -1610612736, 0, 393220, 0, 0, 524285, 0, 0, 524286, 0, 0, 524287, -1610612736, 0, 458752, -1610612736, 0, 458753, -1610612736, 0, 458754, -1610612736, 0, 458755, -1610612736, 0, 458756, 0, 0, 589821, 0, 0, 589822, 0, 0, 589823, -1610612736, 0, 524288, -1610612736, 0, 524289, -1610612736, 0, 524290, -1610612736, 0, 524291, -1610612736, 0, 524292, 0, 0, 589826, 1610612736, 0, 589827, 0, 0, 589828, 0, 0, 655363, 1610612736, 0, 655364, 0, 0, 720899, 1610612736, 0, 720900, 0, 0, 786435, 1610612736, 0, 786436, 0, 0 ) detail = 2 bg_palette = 2 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( 393213, 0, 0, 327683, 0, 0, 327684, 0, 0, 851971, 1610612736, 0, 851972, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 1 )] position = Vector2( 250, 1150 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2A/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 650, 950 ) [node name="Box" parent="Actors" instance=ExtResource( 5 )] position = Vector2( 50, 550 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 5 )] position = Vector2( 50, 450 ) can_spin = false [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 350, 800 ) rotation = -2.35619 scale = Vector2( 0.298864, 0.298491 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( -150, 750 ) rotation = -1.57079 scale = Vector2( 0.391072, 0.391072 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 11 )] position = Vector2( 400, 1200 ) scale = Vector2( 0.180012, 0.180012 ) [node name="PineTree" parent="Details" instance=ExtResource( 4 )] position = Vector2( 200, 1000 ) rotation = -2.14088 [node name="PineTree2" parent="Details" instance=ExtResource( 4 )] position = Vector2( -100, 600 ) rotation = -0.257952 [node name="PineTree3" parent="Details" instance=ExtResource( 4 )] position = Vector2( 250, 600 ) rotation = 0.138246 [node name="PineTree4" parent="Details" instance=ExtResource( 4 )] position = Vector2( 500, 850 ) rotation = 1.22173 scale = Vector2( 0.35, 0.35 ) [node name="PineTree5" parent="Details" instance=ExtResource( 4 )] position = Vector2( 500, 1050 ) rotation = 1.91986 scale = Vector2( 0.35, 0.35 ) [node name="Flower" parent="Details" instance=ExtResource( 8 )] position = Vector2( 500, 950 ) rotation = 1.57079 palette = 2 [node name="Flower2" parent="Details" instance=ExtResource( 8 )] position = Vector2( -150, 900 ) rotation = 3.14159 palette = 3 [node name="Flower3" parent="Details" instance=ExtResource( 8 )] position = Vector2( -300, 750 ) rotation = 4.71238 palette = 4 [node name="Candle" parent="Details" instance=ExtResource( 9 )] position = Vector2( 500, 1200 ) rotation = 1.57079 [node name="Candle2" parent="Details" instance=ExtResource( 9 )] position = Vector2( 500, 650 ) rotation = 1.57079 [node name="Candle3" parent="Details" instance=ExtResource( 9 )] position = Vector2( 0, 900 ) rotation = 3.14159 ================================================ FILE: src/map/worlds/2A/2.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Snowman.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=14] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( -65535, 1610612736, 0, -65534, 0, 0, -65533, -1073741824, 0, -65532, -1073741824, 0, -65531, -1073741824, 0, -65530, -1073741824, 0, -65529, -1073741824, 0, -65528, -1073741824, 0, -65527, -1073741824, 0, -65526, 0, 0, -65525, 1610612736, 0, 1, 1610612736, 0, 2, 0, 0, 3, -1073741824, 0, 4, -1073741824, 0, 5, -1073741824, 0, 6, -1073741824, 0, 7, -1073741824, 0, 8, -1073741824, 0, 9, -1073741824, 0, 10, 0, 0, 11, 1610612736, 0, 196613, -1073741824, 0, 196614, -1073741824, 0, 196615, -1073741824, 0, 262149, -1073741824, 0, 262150, -1073741824, 0, 262151, -1073741824, 0, 327685, -1073741824, 0, 327686, -1073741824, 0, 327687, -1073741824, 0, 524289, 0, 0, 524290, 0, 0, 524291, -1073741824, 0, 524292, -1073741824, 0, 524293, -1073741824, 0, 524294, -1073741824, 0, 524295, -1073741824, 0, 524296, -1073741824, 0, 524297, -1073741824, 0, 524298, 0, 0, 524299, 0, 0, 589825, 0, 0, 589826, 0, 0, 589827, -1073741824, 0, 589828, -1073741824, 0, 589829, -1073741824, 0, 589830, -1073741824, 0, 589831, -1073741824, 0, 589832, -1073741824, 0, 589833, -1073741824, 0, 589834, 0, 0, 589835, 0, 0 ) detail = 2 bg_palette = 2 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( 65537, 1610612736, 0, 65547, 1610612736, 0, 131078, 0, 0, 458753, 0, 0, 458763, 0, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 650, 1050 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2A/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 5 )] position = Vector2( 650, -250 ) [node name="Box" parent="Actors" instance=ExtResource( 8 )] position = Vector2( 650, 250 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 8 )] position = Vector2( 650, 650 ) dir = 2 can_spin = false [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 650, 900 ) scale = Vector2( 0.213638, 0.213638 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 1100, 6.10352e-05 ) scale = Vector2( 0.213638, 0.213638 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 200, 900 ) rotation = 0.785397 scale = Vector2( 0.184066, 0.184066 ) [node name="Square4" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 650, 0.000183105 ) rotation = 0.785397 scale = Vector2( 0.184066, 0.184066 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 1100, 900 ) rotation = 1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 200, 0 ) rotation = -1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 650, 450 ) scale = Vector2( 0.339523, 0.339523 ) [node name="PineTree" parent="Details" instance=ExtResource( 10 )] position = Vector2( 800, 450 ) rotation = 1.71042 [node name="PineTree2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 500, 450 ) rotation = -1.43117 [node name="PineTree3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 500, 1000 ) rotation = -2.79253 [node name="PineTree4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 800, 1000 ) rotation = -3.49066 [node name="PineTree5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 800, -100 ) rotation = 0.349066 [node name="PineTree6" parent="Details" instance=ExtResource( 10 )] position = Vector2( 500, -100 ) rotation = -0.349066 [node name="Bench" parent="Details" instance=ExtResource( 12 )] position = Vector2( 950, 750 ) [node name="Bench2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 350, 150 ) rotation = 3.14159 [node name="Candle" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 800 ) [node name="Candle2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1000, 100 ) rotation = -3.14159 [node name="Snowman" parent="Details" instance=ExtResource( 13 )] position = Vector2( 100, 900 ) rotation = -1.57079 scale = Vector2( 0.3, 0.3 ) [node name="Snowman2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1200, 6.10352e-05 ) rotation = -4.71238 scale = Vector2( 0.3, 0.3 ) [node name="Flower" parent="Details" instance=ExtResource( 14 )] position = Vector2( 200, 1000 ) rotation = 3.14159 [node name="Flower2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1100, 1000 ) rotation = 3.14159 palette = 3 [node name="Flower3" parent="Details" instance=ExtResource( 14 )] position = Vector2( 650, 800 ) palette = 2 [node name="Flower4" parent="Details" instance=ExtResource( 14 )] position = Vector2( 650, 100 ) rotation = 3.14159 palette = 5 [node name="Flower5" parent="Details" instance=ExtResource( 14 )] position = Vector2( 250, -100 ) rotation = 6.28318 palette = 3 [node name="Flower6" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1150, -100 ) rotation = 6.28318 palette = 2 [node name="Flower7" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1200, 900 ) rotation = 7.85397 palette = 4 [node name="Flower8" parent="Details" instance=ExtResource( 14 )] position = Vector2( 100, 0 ) rotation = 10.9956 palette = 0 ================================================ FILE: src/map/worlds/2A/4.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=13] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 7 )] tile_data = PoolIntArray( 65550, 1610612736, 0, 65551, 1610612736, 0, 65552, 0, 0, 65553, 1610612736, 0, 65554, 0, 0, 131074, 1610612736, 0, 131075, 0, 0, 131076, -1610612736, 0, 131077, -1610612736, 0, 131086, 1610612736, 0, 131087, 1610612736, 0, 131088, 0, 0, 131089, 1610612736, 0, 131090, 0, 0, 196610, 1610612736, 0, 196611, 0, 0, 196612, -1610612736, 0, 196613, -1610612736, 0, 196622, 1610612736, 0, 196623, 1610612736, 0, 196624, 1610612736, 0, 196625, 1610612736, 0, 196626, 0, 0, 262148, -1610612736, 0, 262149, -1610612736, 0, 262158, 1610612736, 0, 262159, 1610612736, 0, 262160, 1610612736, 0, 262161, 1610612736, 0, 262162, 1610612736, 0, 327684, -1610612736, 0, 327685, -1610612736, 0, 327694, 1610612736, 0, 327695, 1610612736, 0, 393220, -1610612736, 0, 393221, -1610612736, 0, 393222, -1610612736, 0, 393223, -1610612736, 0, 393224, -1610612736, 0, 393225, -1610612736, 0, 393226, -1610612736, 0, 393230, 1610612736, 0, 393231, 1610612736, 0, 458756, -1610612736, 0, 458757, -1610612736, 0, 458758, -1610612736, 0, 458759, 0, 0, 458760, 0, 0, 458761, -1610612736, 0, 458762, -1610612736, 0, 458766, 0, 0, 458767, 0, 0, 524292, 1610612736, 0, 524293, 1610612736, 0, 524294, 1610612736, 0, 524295, 1610612736, 0, 524296, 1610612736, 0, 524297, 1610612736, 0, 524298, -1610612736, 0, 524302, 0, 0, 524303, 0, 0, 589828, 1610612736, 0, 589829, 1610612736, 0, 589830, 0, 0, 589831, 1610612736, 0, 589832, 1610612736, 0, 589833, 1610612736, 0, 589834, 1610612736, 0, 589838, 1610612736, 0, 589839, 1610612736, 0, 655364, 1610612736, 0, 655365, 1610612736, 0, 655366, 0, 0, 655367, 1610612736, 0, 655368, 1610612736, 0, 655369, 1610612736, 0, 655370, 1610612736, 0 ) detail = 2 bg_palette = 2 [node name="SpikeMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( 18, 0, 0, 131078, -1610612736, 0, 327698, 1610612736, 0, 393227, -1610612736, 0, 720903, 1610612736, 0, 720904, 1610612736, 0, 720905, 1610612736, 0, 720906, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 350, 750 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2A/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 1 )] position = Vector2( 250, 150 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 1 )] position = Vector2( 1650, 950 ) dir = 1 can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 5 )] position = Vector2( 2050, 300 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 485, 315 ) rotation = -0.785397 scale = Vector2( 0.220126, 0.220126 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 1650, 300 ) scale = Vector2( 0.5194, 0.5194 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 600, 850 ) [node name="Rocks5" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 1500, 600 ) rotation = -1.57513 scale = Vector2( 0.25, 0.25 ) [node name="Rocks6" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 900, 850 ) rotation = -3.14159 [node name="Circle" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 1500, 900 ) scale = Vector2( 0.224167, 0.224167 ) [node name="PineTree" parent="Details" instance=ExtResource( 6 )] position = Vector2( 750, 600 ) rotation = 0.436332 [node name="PineTree4" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1400, 400 ) rotation = -1.86371 scale = Vector2( 0.35, 0.35 ) [node name="PineTree8" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1100, 850 ) rotation = 1.99747 scale = Vector2( 0.3, 0.3 ) [node name="PineTree6" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1600, 650 ) rotation = -4.34494 [node name="PineTree7" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1900, 200 ) rotation = 1.15192 scale = Vector2( 0.35, 0.35 ) [node name="PineTree5" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1400, 200 ) rotation = -1.19662 [node name="PineTree2" parent="Details" instance=ExtResource( 6 )] position = Vector2( 400, 600 ) rotation = -1.309 [node name="PineTree3" parent="Details" instance=ExtResource( 6 )] position = Vector2( 400, 900 ) rotation = -1.8326 [node name="Bench" parent="Details" instance=ExtResource( 12 )] position = Vector2( 500, 1150 ) rotation = 3.14159 [node name="Bench2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1550, 50 ) scale = Vector2( -1, 1 ) [node name="Flower" parent="Details" instance=ExtResource( 11 )] position = Vector2( 650, 1100 ) rotation = -3.14159 palette = 2 [node name="Flower6" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1500, 1000 ) rotation = -3.14159 palette = 5 [node name="Flower7" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1400, 700 ) rotation = -1.57079 [node name="Flower8" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1100, 1050 ) rotation = -4.71238 palette = 4 [node name="Flower2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 200, 300 ) rotation = -1.57079 [node name="Flower3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 450, 200 ) palette = 4 [node name="Flower4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1700, 100 ) palette = 3 [node name="Flower5" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1900, 400 ) rotation = 1.57079 palette = 2 [node name="Candle2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 600, 400 ) rotation = 1.57079 [node name="Candle3" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1400, 300 ) rotation = -1.57079 [node name="Candle4" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1650, 500 ) rotation = -3.14159 ================================================ FILE: src/map/worlds/2A/5.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=13] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -65530, -1073741824, 0, -65529, -1073741824, 0, -65528, -1073741824, 0, -65527, -1610612736, 0, 7, -1073741824, 0, 65543, -1073741824, 0, 196604, 0, 0, 196605, 0, 0, 196606, -1073741824, 0, 196607, -1073741824, 0, 131072, -1073741824, 0, 131073, -1073741824, 0, 131074, -1073741824, 0, 131079, -1073741824, 0, 262140, 0, 0, 262141, 0, 0, 262142, -1073741824, 0, 262143, -1073741824, 0, 196608, -1073741824, 0, 196609, -1073741824, 0, 196610, -1073741824, 0, 196615, -1073741824, 0, 262144, -1610612736, 0, 262145, -1073741824, 0, 262146, -1073741824, 0, 327681, -1610612736, 0, 327682, -1610612736, 0, 393217, -1610612736, 0, 393218, -1610612736, 0, 458753, -1610612736, 0, 458754, -1610612736, 0, 524289, -1610612736, 0, 524290, -1610612736, 0, 524291, -1610612736, 0, 524292, -1610612736, 0, 524293, -1610612736, 0, 524294, -1610612736, 0, 524295, 0, 0, 589825, -1610612736, 0, 589826, -1610612736, 0, 589827, -1610612736, 0, 589828, -1610612736, 0, 589829, -1610612736, 0, 589830, -1610612736, 0, 589831, 0, 0 ) detail = 2 bg_palette = 2 [node name="SpikeMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( -65531, -1073741824, 0, -65526, -1610612736, 0, 131068, 0, 0, 131069, 0, 0, 131075, -1610612736, 0, 196614, -1073741824, 0, 524296, -1610612736, 0, 589832, -1610612736, 0, 655361, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 1 )] position = Vector2( 50, 750 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2A/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 50, 150 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 850, 50 ) dir = 1 can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 800, -250 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 150, 350 ) rotation = -0.785397 scale = Vector2( 0.391677, 0.391677 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 700, 900 ) scale = Vector2( 0.221946, 0.221946 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 225, 875 ) rotation = 3.14159 scale = Vector2( 0.362502, 0.362502 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( -300, 300 ) scale = Vector2( 0.234953, 0.234953 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 750, -45 ) scale = Vector2( 0.101652, 0.101652 ) [node name="PineTree" parent="Details" instance=ExtResource( 10 )] position = Vector2( 400, 800 ) rotation = 0.44269 [node name="PineTree6" parent="Details" instance=ExtResource( 10 )] position = Vector2( 700, 200 ) rotation = -1.21956 [node name="PineTree7" parent="Details" instance=ExtResource( 10 )] position = Vector2( 700, -100 ) rotation = -0.279596 scale = Vector2( 0.3, 0.3 ) [node name="PineTree8" parent="Details" instance=ExtResource( 10 )] position = Vector2( 900, -100 ) rotation = 0.279253 scale = Vector2( 0.3, 0.3 ) [node name="PineTree4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 400, 1000 ) rotation = -2.83077 [node name="PineTree5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 650, 1000 ) rotation = -3.42128 [node name="PineTree2" parent="Details" instance=ExtResource( 10 )] position = Vector2( -100, 400 ) rotation = 3.5295 [node name="PineTree3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 100, 950 ) rotation = 4.86625 [node name="Bench" parent="Details" instance=ExtResource( 12 )] position = Vector2( 50, 600 ) rotation = -1.57079 scale = Vector2( -1, 1 ) [node name="Flower" parent="Details" instance=ExtResource( 11 )] position = Vector2( -350, 400 ) rotation = 3.14159 palette = 3 [node name="Flower2" parent="Details" instance=ExtResource( 11 )] position = Vector2( -100, 200 ) [node name="Flower3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 200, 200 ) palette = 4 [node name="Flower4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 400 ) rotation = 1.57079 palette = 2 [node name="Flower5" parent="Details" instance=ExtResource( 11 )] position = Vector2( 700, 800 ) palette = 5 [node name="Flower6" parent="Details" instance=ExtResource( 11 )] position = Vector2( 800, 300 ) rotation = 1.57079 palette = 3 [node name="Flower8" parent="Details" instance=ExtResource( 11 )] position = Vector2( 805, 5 ) rotation = 2.35619 [node name="Flower7" parent="Details" instance=ExtResource( 11 )] position = Vector2( 800, -100 ) palette = 0 [node name="Candle" parent="Details" instance=ExtResource( 13 )] position = Vector2( 525, 1000 ) rotation = -3.14159 [node name="Candle2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 300, 550 ) rotation = -4.71238 ================================================ FILE: src/map/worlds/2A/6.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=13] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( 196606, 0, 0, 196607, 0, 0, 131072, 0, 0, 131073, 0, 0, 262142, 0, 0, 262143, 0, 0, 196608, 0, 0, 196609, 0, 0, 327678, 0, 0, 327679, 0, 0, 262144, 0, 0, 262145, 0, 0, 393208, -1610612736, 0, 393209, -1610612736, 0, 393210, -1610612736, 0, 393211, -1610612736, 0, 393214, 0, 0, 393215, 0, 0, 327680, 0, 0, 327681, 0, 0, 327682, 0, 0, 327683, 1610612736, 0, 327684, -1073741824, 0, 458744, 0, 0, 458745, 0, 0, 458746, 0, 0, 458747, 0, 0, 458750, 0, 0, 458751, 0, 0, 393216, 1610612736, 0, 524286, 0, 0, 524287, 0, 0, 589822, 1610612736, 0, 589823, 1610612736, 0, 655358, -1073741824, 0, 655359, -1073741824, 0 ) detail = 2 bg_palette = 2 [node name="SpikeMap" parent="." instance=ExtResource( 8 )] tile_data = PoolIntArray( 65537, 0, 0, 196605, -1073741824, 0, 327685, -1610612736, 0, 589821, -1073741824, 0, 655357, -1073741824, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 250, 650 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2A/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 350, 350 ) [node name="Box" parent="Actors" instance=ExtResource( 3 )] position = Vector2( -750, 450 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 3 )] position = Vector2( -250, 250 ) dir = 3 can_spin = false [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 0.00012207, 400 ) rotation = -0.785397 scale = Vector2( 0.481466, 0.481466 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( -100, 900 ) rotation = 3.14159 scale = Vector2( 0.25, 0.25 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( 0, 600 ) rotation = 1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( -600, 600 ) scale = Vector2( 0.251939, 0.251939 ) [node name="PineTree" parent="Details" instance=ExtResource( 11 )] position = Vector2( -700, 700 ) rotation = 2.84425 [node name="PineTree4" parent="Details" instance=ExtResource( 11 )] position = Vector2( -550, 500 ) rotation = 0.313151 [node name="PineTree2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 0, 850 ) rotation = 1.88229 [node name="PineTree3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 400, 600 ) rotation = 2.88689 [node name="Flower" parent="Details" instance=ExtResource( 10 )] position = Vector2( -450, 700 ) rotation = 3.14159 palette = 2 [node name="Flower2" parent="Details" instance=ExtResource( 10 )] position = Vector2( -800, 600 ) rotation = 4.71238 [node name="Flower3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 450, 500 ) rotation = 6.28318 [node name="Flower4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 200, 250 ) rotation = 7.85397 palette = 3 [node name="Flower5" parent="Details" instance=ExtResource( 10 )] position = Vector2( -50, 200 ) rotation = 6.28318 palette = 4 [node name="Flower8" parent="Details" instance=ExtResource( 10 )] position = Vector2( 0, 750 ) rotation = 7.85397 palette = 4 [node name="Flower6" parent="Details" instance=ExtResource( 10 )] position = Vector2( -200, 450 ) rotation = 4.71238 palette = 5 [node name="Flower7" parent="Details" instance=ExtResource( 10 )] position = Vector2( -750, 500 ) rotation = 6.28318 palette = 0 [node name="Bench" parent="Details" instance=ExtResource( 12 )] position = Vector2( -100, 1050 ) rotation = 3.14159 [node name="Candle" parent="Details" instance=ExtResource( 13 )] position = Vector2( 150, 600 ) rotation = -3.14159 [node name="Candle2" parent="Details" instance=ExtResource( 13 )] position = Vector2( -400, 600 ) rotation = -4.71238 ================================================ FILE: src/map/worlds/2A/7.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Snowman.tscn" type="PackedScene" id=14] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 2 )] tile_data = PoolIntArray( -393203, -1610612736, 0, -393202, -1610612736, 0, -327667, 0, 0, -327666, -1610612736, 0, -262131, 0, 0, -262130, -1610612736, 0, -196595, 0, 0, -196594, -1610612736, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0, 8, 0, 0, 9, 0, 0, 10, 0, 0, 11, 0, 0, 12, 0, 0, 13, 0, 0, 65541, 0, 0, 65542, 0, 0, 65543, 0, 0, 65544, 0, 0, 65545, 0, 0, 65546, 0, 0, 65547, 0, 0, 65548, 0, 0, 65549, 0, 0, 131083, 0, 0, 131084, 0, 0, 131085, 0, 0, 196620, 0, 0, 196621, 0, 0, 262156, 1610612736, 0, 262157, 1610612736, 0, 327692, 1610612736, 0, 327693, 1610612736, 0, 393228, 1610612736, 0, 393229, 1610612736, 0 ) detail = 2 bg_palette = 2 [node name="SpikeMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( -458739, 0, 0, -458738, 0, 0, -196593, -1610612736, 0, -65531, 0, 0, -65530, 0, 0, -65523, 0, 0, 458764, 1610612736, 0, 458765, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 1150, 450 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2A/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 5 )] position = Vector2( 1050, -50 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 5 )] position = Vector2( 1250, -550 ) dir = 3 can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 1550, 350 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 1400, -400 ) rotation = -0.785397 scale = Vector2( 0.187977, 0.187977 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 900, 100 ) scale = Vector2( 0.177503, 0.177503 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 600, 100 ) rotation = -1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1300, 600 ) rotation = 1.57081 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 1250, 150 ) scale = Vector2( 0.432583, 0.432583 ) [node name="PineTree" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1200, 600 ) rotation = -1.71051 [node name="PineTree2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1000, 200 ) rotation = -2.82729 [node name="PineTree4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 850, 0 ) rotation = -0.250954 [node name="PineTree5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1300, -350 ) rotation = -1.86246 [node name="PineTree6" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1500, -450 ) rotation = -4.95082 [node name="PineTree7" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1400, 250 ) rotation = 1.3439 scale = Vector2( 0.3, 0.3 ) [node name="PineTree8" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1400, 450 ) rotation = 1.79769 scale = Vector2( 0.3, 0.3 ) [node name="PineTree3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 600, 200 ) rotation = -3.47007 [node name="Candle" parent="Details" instance=ExtResource( 11 )] position = Vector2( 800, 200 ) rotation = -3.14159 [node name="Candle2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1400, 350 ) rotation = -4.71238 [node name="Flower" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1200, 350 ) rotation = -1.57079 palette = 2 [node name="Flower2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1400, 100 ) rotation = 1.57079 [node name="Flower3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1400, -200 ) rotation = 3.14159 palette = 3 [node name="Flower4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1200, 0 ) palette = 4 [node name="Flower5" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1300, -550 ) rotation = -1.57079 palette = 5 [node name="Bench" parent="Details" instance=ExtResource( 13 )] position = Vector2( 450, 100 ) rotation = -1.57079 [node name="Snowman" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1400, 626 ) rotation = 1.57079 scale = Vector2( -0.3, 0.3 ) ================================================ FILE: src/map/worlds/2B/0_hub.tscn ================================================ [gd_scene load_steps=17 format=2] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=1] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorBig.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=15] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=17] [node name="Map" type="Node2D"] __meta__ = { "_edit_lock_": true } [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( 65533, 0, 0, 65534, 0, 0, 65535, -1073741824, 0, 131069, 0, 0, 131070, 0, 0, 131071, -1073741824, 0, 196605, 0, 0, 196606, 0, 0, 196607, -1073741824, 0, 131083, 0, 0, 131084, 0, 0, 131085, 0, 0, 131086, 0, 0, 262141, 0, 0, 262142, 0, 0, 262143, -1073741824, 0, 196608, -1073741824, 0, 196619, 0, 0, 196620, 0, 0, 196621, 0, 0, 196622, 0, 0, 327677, 0, 0, 327678, 0, 0, 327679, -1073741824, 0, 262144, -1073741824, 0, 262145, -1073741824, 0, 262146, -1073741824, 0, 262147, -1073741824, 0, 262148, -1073741824, 0, 262149, -1073741824, 0, 262150, -1073741824, 0, 262151, -1073741824, 0, 262152, -1073741824, 0, 262153, 0, 0, 262154, 0, 0, 262155, 0, 0, 262156, 0, 0, 262157, 0, 0, 262158, 0, 0, 393213, 0, 0, 393214, 0, 0, 393215, 0, 0, 327680, 0, 0, 327681, -1073741824, 0, 327682, -1073741824, 0, 327683, -1073741824, 0, 327684, -1073741824, 0, 327685, -1073741824, 0, 327686, -1073741824, 0, 327687, -1073741824, 0, 327688, -1073741824, 0, 327689, 0, 0, 327690, 0, 0, 327691, 0, 0, 327692, 0, 0, 327693, 0, 0, 327694, 0, 0, 393217, -1073741824, 0, 393218, -1073741824, 0, 393219, 0, 0, 393220, -1073741824, 0, 393221, -1073741824, 0, 393222, -1073741824, 0, 393223, -1073741824, 0, 393224, -1073741824, 0, 393225, 0, 0, 393226, 0, 0, 393227, 0, 0, 393228, 0, 0, 393229, 0, 0, 393230, 0, 0, 458753, -1073741824, 0, 458754, -1073741824, 0, 458760, 0, 0, 458761, 0, 0, 524289, 0, 0, 524290, 0, 0, 524296, 0, 0, 524297, 0, 0, 720896, 0, 0, 720897, 0, 0, 720905, 0, 0, 720906, 0, 0, 786432, 0, 0, 786433, 0, 0, 786436, 0, 0, 786437, 0, 0, 786438, 0, 0, 786441, 0, 0, 786442, 0, 0, 851972, 0, 0, 851973, 0, 0, 851974, 0, 0 ) detail = 1 [node name="SpikeMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -1, 0, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="BigDoor" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 550, 300 ) scene_path = "res://src/map/worlds/2/0_hub.tscn" [node name="Door1" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 1350, 150 ) scene_path = "res://src/map/worlds/2B/1.tscn" [node name="Door2" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 1250, 750 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2B/2.tscn" [node name="Door3" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 500, 1150 ) scene_path = "res://src/map/worlds/2B/3.tscn" [node name="Door4" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 600, 750 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2B/4.tscn" [node name="Door5" parent="Actors" instance=ExtResource( 4 )] position = Vector2( -100, 650 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2B/5.tscn" [node name="Door6" parent="Actors" instance=ExtResource( 4 )] position = Vector2( -350, 150 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2B/6.tscn" [node name="NPC" parent="Actors" instance=ExtResource( 17 )] position = Vector2( 906, 350 ) __meta__ = { "_editor_description_": "" } idle_anim = "tree_behind" dye = { "eye": 0, "fit": 3, "hair": 14, "skin": 4 } hairstyle_back = 1 hairstyle_front = 4 is_npc = true lines = [ "You didn't see me here...", "This is my tree!", "Climb your own!", "I'm a fly on the wall *bzz bzz*", "I'm on a secret mission (;", "I've said too much...", "Quit shaking it!" ] ready_z_index = -31 [node name="NPC2" parent="Actors" instance=ExtResource( 17 )] position = Vector2( 1150, 1210 ) __meta__ = { "_editor_description_": "" } dir = 1 idle_anim = "bench" dye = { "eye": 0, "fit": 14, "hair": 12, "skin": 16 } hairstyle_back = 0 hairstyle_front = 7 is_npc = true lines = [ "Who needs gems?!", "This beautiful view is everything (=", "I can sit here forever!", "I love watching the sunset!", "I'm keeping the seat warm!", "No more puzzles! Only chilling ;P", "Beep boop...q" ] [node name="NPC3" parent="Actors" instance=ExtResource( 17 )] position = Vector2( -350, 450 ) __meta__ = { "_editor_description_": "" } dir = 3 idle_anim = "idle2" dye = { "eye": 14, "fit": 10, "hair": 18, "skin": 6 } hairstyle_back = 3 hairstyle_front = 6 is_npc = true lines = [ "This puzzle has me stumped!", "I hope you reach that gem!", "Trees bring me life [:", "I saw something move in the trees earlier..", "Three blocks in one puzzle?", "This is overwhelming 0=", "Take a moment to relax.. think it out (:", "The answer will come to me..", "Would you like a hug?" ] [node name="NPC4" parent="Actors" instance=ExtResource( 17 )] position = Vector2( 200, 950 ) __meta__ = { "_editor_description_": "" } dir = 2 idle_anim = "ponder" dye = { "eye": 15, "fit": 13, "hair": 0, "skin": 8 } hairstyle_back = 2 hairstyle_front = 2 is_npc = true lines = [ "Have you seen my friend?", "We were playing hide and seek..", "I've been looking for hours! 0=", "Here's a nice place to catch my breath..", "Let me know if you see any movement (;", "I checked all the bushes.. no luck!", "Hmm.. I wonder where they could be..", "This is a great vantage point (;" ] [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( -150, 150 ) rotation = -1.57079 scale = Vector2( 0.373589, 0.373589 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( 250, 550 ) rotation = -1.57079 scale = Vector2( 0.21339, 0.21339 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( 1000, 1200 ) rotation = -2.35619 scale = Vector2( 0.16702, 0.16702 ) [node name="Square4" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( 1300, 450 ) rotation = -0.785397 scale = Vector2( 0.5, 0.5 ) [node name="Square5" parent="Details/Rocks" instance=ExtResource( 12 )] position = Vector2( 200, 800 ) rotation = -2.35619 scale = Vector2( 0.192862, 0.192862 ) [node name="Rocks5" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( 475, 550 ) scale = Vector2( 0.5, 0.5 ) [node name="Rocks6" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( -200, 500 ) rotation = 3.14159 scale = Vector2( 0.25, 0.25 ) [node name="Rocks7" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( 550, 1300 ) scale = Vector2( 0.25, 0.25 ) [node name="Rocks8" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( 625, 550 ) rotation = 3.14159 scale = Vector2( 0.5, 0.5 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( -50, 450 ) scale = Vector2( 0.351021, 0.351021 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 1000, 550 ) scale = Vector2( 0.190914, 0.190914 ) [node name="Circle3" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 100, 1200 ) scale = Vector2( 0.179658, 0.179658 ) [node name="Circle4" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 900, 800 ) scale = Vector2( 0.213001, 0.213001 ) [node name="Fence" parent="Details" instance=ExtResource( 1 )] position = Vector2( 299, 400 ) length = 7 [node name="Fence2" parent="Details" instance=ExtResource( 1 )] position = Vector2( 799, 400 ) length = 7 [node name="Fence5" parent="Details" instance=ExtResource( 1 )] position = Vector2( 625, 1200 ) [node name="Fence6" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1000, 1300 ) rotation = 3.14159 [node name="Fence7" parent="Details" instance=ExtResource( 1 )] position = Vector2( 100, 1300 ) rotation = 3.14159 [node name="Fence9" parent="Details" instance=ExtResource( 1 )] position = Vector2( 100, 800 ) rotation = 4.71238 [node name="Fence10" parent="Details" instance=ExtResource( 1 )] position = Vector2( -300, 400 ) rotation = 4.71238 length = 7 [node name="Fence3" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1500, 550 ) rotation = 1.57079 length = 5 [node name="Fence4" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1400, 700 ) rotation = 3.14159 [node name="Fence8" parent="Details" instance=ExtResource( 1 )] position = Vector2( 550, 1400 ) rotation = 3.14159 length = 7 [node name="Tree" parent="Details" instance=ExtResource( 7 )] position = Vector2( 400, 400 ) rotation = 0.0787788 z_index = -7 [node name="Tree4" parent="Details" instance=ExtResource( 7 )] position = Vector2( 700, 400 ) rotation = -0.0785398 scale = Vector2( -1, 1 ) [node name="Tree7" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1500, 500 ) rotation = 1.47949 [node name="Tree9" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1400, 700 ) rotation = 3.01895 palette = 3 [node name="Tree10" parent="Details" instance=ExtResource( 7 )] position = Vector2( 625, 1200 ) rotation = -0.165277 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree11" parent="Details" instance=ExtResource( 7 )] position = Vector2( 100, 1300 ) rotation = -2.96773 [node name="Tree16" parent="Details" instance=ExtResource( 7 )] position = Vector2( 100, 800 ) rotation = -1.72607 scale = Vector2( -1, 1 ) [node name="Tree12" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1000, 1300 ) rotation = -3.31613 scale = Vector2( -1, 1 ) [node name="Tree13" parent="Details" instance=ExtResource( 7 )] position = Vector2( 550, 1400 ) rotation = -3.24605 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree14" parent="Details" instance=ExtResource( 7 )] position = Vector2( 450, 1400 ) rotation = -3.04933 scale = Vector2( -1, 1 ) palette = 6 [node name="Tree15" parent="Details" instance=ExtResource( 7 )] position = Vector2( 650, 1400 ) rotation = -3.26896 palette = 5 [node name="Tree8" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1500, 600 ) rotation = 1.67681 scale = Vector2( -0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree2" parent="Details" instance=ExtResource( 7 )] position = Vector2( 300, 400 ) rotation = -0.0978286 scale = Vector2( -0.9, 0.9 ) palette = 2 [node name="Tree18" parent="Details" instance=ExtResource( 7 )] position = Vector2( -300, 400 ) rotation = -1.66143 scale = Vector2( -0.9, 0.9 ) palette = 2 [node name="Tree5" parent="Details" instance=ExtResource( 7 )] position = Vector2( 800, 400 ) rotation = 0.0977384 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree3" parent="Details" instance=ExtResource( 7 )] position = Vector2( 200, 400 ) rotation = -0.0978286 z_index = -25 palette = 3 [node name="Tree17" parent="Details" instance=ExtResource( 7 )] position = Vector2( -300, 500 ) rotation = -1.69297 z_index = -25 palette = 3 [node name="Tree6" parent="Details" instance=ExtResource( 7 )] position = Vector2( 900, 400 ) rotation = 0.0977384 palette = 5 [node name="Tree19" parent="Details" instance=ExtResource( 7 )] position = Vector2( -300, 300 ) rotation = -1.44862 scale = Vector2( -1, 1 ) palette = 5 [node name="Bench2" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1200, 150 ) scale = Vector2( -1, 1 ) [node name="Bench5" parent="Details" instance=ExtResource( 8 )] position = Vector2( -200, -50 ) [node name="Bench3" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1150, 1200 ) rotation = 1.57079 [node name="Bench4" parent="Details" instance=ExtResource( 8 )] position = Vector2( -50, 1200 ) rotation = -1.57079 scale = Vector2( -1, 1 ) [node name="Flower" parent="Details" instance=ExtResource( 9 )] position = Vector2( 0, 50 ) rotation = 1.57079 [node name="Flower2" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1090, 390 ) rotation = 5.49778 palette = 3 [node name="Flower3" parent="Details" instance=ExtResource( 9 )] position = Vector2( 700, 1300 ) rotation = 7.85397 palette = 4 [node name="Flower4" parent="Details" instance=ExtResource( 9 )] position = Vector2( 400, 1300 ) rotation = 4.71238 palette = 5 [node name="Flower5" parent="Details" instance=ExtResource( 9 )] position = Vector2( 200, 1200 ) rotation = 7.85397 [node name="Flower6" parent="Details" instance=ExtResource( 9 )] position = Vector2( 900, 1200 ) rotation = 4.71238 palette = 2 [node name="Flower8" parent="Details" instance=ExtResource( 9 )] position = Vector2( 100, 1100 ) rotation = 6.28318 palette = 2 [node name="Flower7" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1000, 1100 ) rotation = 6.28318 palette = 3 [node name="Flower9" parent="Details" instance=ExtResource( 9 )] position = Vector2( 100, 650 ) rotation = 4.71238 palette = 3 [node name="Flower10" parent="Details" instance=ExtResource( 9 )] position = Vector2( -200, 600 ) rotation = 3.14159 [node name="TreeTop" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1450, 250 ) [node name="TreeTop4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 300, 800 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 900, 750 ) scale = Vector2( 1.20218, 1.20218 ) palette = 5 [node name="FlowerPetals" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1550, 350 ) rotation = 0.785397 [node name="FlowerPetals5" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1040, 890 ) rotation = 0.785397 palette = 2 [node name="FlowerPetals6" parent="Details" instance=ExtResource( 11 )] position = Vector2( 900, 950 ) palette = 4 [node name="FlowerPetals10" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 950 ) palette = 4 [node name="FlowerPetals11" parent="Details" instance=ExtResource( 11 )] position = Vector2( 400, 900 ) rotation = -0.785397 [node name="FlowerPetals12" parent="Details" instance=ExtResource( 11 )] position = Vector2( 450, 800 ) palette = 5 [node name="FlowerPetals7" parent="Details" instance=ExtResource( 11 )] position = Vector2( 760, 890 ) rotation = 0.785397 palette = 0 [node name="FlowerPetals8" parent="Details" instance=ExtResource( 11 )] position = Vector2( 700, 750 ) palette = 3 [node name="FlowerPetals9" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1100, 750 ) [node name="FlowerPetals3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1600, 250 ) palette = 2 [node name="FlowerPetals4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1450, 100 ) palette = 4 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1550, 150 ) rotation = 0.785397 palette = 5 [node name="Candle" parent="Details" instance=ExtResource( 14 )] position = Vector2( 10, 290 ) rotation = 0.785398 [node name="Candle2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1100, 275 ) rotation = -1.57079 [node name="Candle3" parent="Details" instance=ExtResource( 14 )] position = Vector2( 310, 710 ) rotation = -3.92699 [node name="Candle4" parent="Details" instance=ExtResource( 14 )] position = Vector2( 190, 1290 ) rotation = -3.92699 [node name="Lamppost" parent="Details" instance=ExtResource( 15 )] position = Vector2( 1475, 675 ) rotation = 2.35619 [node name="Lamppost2" parent="Details" instance=ExtResource( 15 )] position = Vector2( 925, 1125 ) rotation = -0.785398 [node name="Lamppost3" parent="Details" instance=ExtResource( 15 )] position = Vector2( -275, 575 ) rotation = -2.35619 ================================================ FILE: src/map/worlds/2B/1.tscn ================================================ [gd_scene load_steps=17 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=15] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=16] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( 65546, 1610612736, 0, 65547, 0, 0, 65548, 1610612736, 0, 65549, 1610612736, 0, 65550, 1610612736, 0, 65551, 1610612736, 0, 65552, 1610612736, 0, 131082, 1610612736, 0, 131083, 1610612736, 0, 131084, 1610612736, 0, 131085, 1610612736, 0, 131086, 1610612736, 0, 131087, 1610612736, 0, 131088, 1610612736, 0, 196623, 1610612736, 0, 196624, 1610612736, 0, 262159, 1610612736, 0, 262160, 1610612736, 0, 327688, 0, 0, 327689, 1610612736, 0, 327690, 0, 0, 327693, 0, 0, 327694, 0, 0, 327695, 0, 0, 327696, 1610612736, 0, 393224, 0, 0, 393225, 0, 0, 393226, 0, 0, 393227, 0, 0, 393228, 0, 0, 393229, 0, 0, 393230, 0, 0, 393231, 0, 0, 393232, 1610612736, 0 ) detail = 1 [node name="SpikeMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( 10, 0, 0, 16, 0, 0, 196619, 1610612736, 0, 196620, 1610612736, 0, 196625, -1610612736, 0, 262161, -1610612736, 0, 327691, 0, 0, 327692, 0, 0, 458760, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 1200, 750 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2B/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1650, 50 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1650, -50 ) can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1650, -150 ) can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 1400, 400 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 950, 600 ) rotation = -0.785397 scale = Vector2( 0.188522, 0.188522 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 1100, 200 ) scale = Vector2( 0.188522, 0.188522 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1600, 600 ) rotation = 1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 1585, 215 ) scale = Vector2( 0.231284, 0.231284 ) [node name="Tree" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1700, 200 ) rotation = 1.39626 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1700, 600 ) rotation = 1.74533 [node name="Tree4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1350, 700 ) rotation = 3.35103 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1550, 700 ) rotation = 2.93215 palette = 6 [node name="Tree3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1450, 700 ) rotation = 3.18035 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Fence" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1450, 700 ) rotation = -3.14159 length = 7 [node name="Fence2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1700, 600 ) rotation = -4.71238 [node name="Tree6" parent="Details" instance=ExtResource( 10 )] position = Vector2( 800, 600 ) rotation = -1.74533 scale = Vector2( -1, 1 ) [node name="Fence4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 800, 600 ) rotation = -1.57079 [node name="Fence3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1700, 200 ) rotation = -4.71238 [node name="Bench" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1050, 750 ) rotation = -3.14159 [node name="Flower" parent="Details" instance=ExtResource( 12 )] position = Vector2( 950, 700 ) rotation = -3.14159 palette = 3 [node name="Flower2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1695, 695 ) rotation = 2.35619 [node name="Flower3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1000, 200 ) rotation = 4.71238 [node name="TreeTop" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1350, 100 ) scale = Vector2( 0.9, 0.9 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1200, 300 ) scale = Vector2( 0.9, 0.9 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 15 )] position = Vector2( 1350, -25 ) rotation = -0.785397 palette = 2 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 15 )] position = Vector2( 1250, 0 ) palette = 3 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 15 )] position = Vector2( 1450, 0 ) palette = 4 [node name="Candle" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1490, 490 ) rotation = -0.785398 [node name="Candle2" parent="Details" instance=ExtResource( 9 )] visible = false position = Vector2( 1400, 700 ) rotation = 3.14159 [node name="Candle3" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1300, 100 ) [node name="Lamppost" parent="Details" instance=ExtResource( 16 )] position = Vector2( 900, 500 ) ================================================ FILE: src/map/worlds/2B/2.tscn ================================================ [gd_scene load_steps=17 format=2] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=15] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=16] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -65533, 0, 0, -65532, 0, 0, 3, 0, 0, 4, -1073741824, 0, 65539, 0, 0, 65540, -1073741824, 0, 131075, 0, 0, 131076, -1073741824, 0, 262143, -1073741824, 0, 196608, 0, 0, 196609, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, -1073741824, 0, 196614, -1073741824, 0, 196615, -1073741824, 0, 196616, -1073741824, 0, 327679, -1073741824, 0, 262144, 0, 0, 262145, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, -1073741824, 0, 262150, 0, 0, 262151, 1610612736, 0, 262152, 1610612736, 0, 327682, -1073741824, 0, 327683, 0, 0, 327684, 0, 0, 327686, 0, 0, 327687, 1610612736, 0, 327688, 1610612736, 0, 393219, 0, 0, 393220, 0, 0, 458755, 0, 0, 458756, 0, 0, 524291, 0, 0, 524292, 0, 0, 589827, 1610612736, 0, 589828, 1610612736, 0, 655363, 1610612736, 0, 655364, 1610612736, 0, 655365, 0, 0, 655366, 0, 0, 655367, 0, 0, 655368, 0, 0, 655369, 0, 0, 720899, 1610612736, 0, 720900, 1610612736, 0, 720901, 1610612736, 0, 720902, 1610612736, 0, 720903, 1610612736, 0, 720904, 1610612736, 0, 720905, 1610612736, 0 ) detail = 1 [node name="SpikeMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( -131069, 0, 0, -131068, 0, 0, 262142, -1073741824, 0, 327678, -1073741824, 0, 589833, 0, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 250, 1050 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2B/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 650, 250 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 950, 450 ) dir = 1 can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 650, 650 ) dir = 2 can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 5 )] position = Vector2( 150, 150 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 750, 450 ) rotation = -0.785397 scale = Vector2( 0.297159, 0.297159 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 415, 1085 ) rotation = -0.785397 scale = Vector2( 0.249809, 0.249809 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 400, 800 ) scale = Vector2( 0.15, 0.15 ) [node name="Square4" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 650, 1100 ) scale = Vector2( 0.15, 0.15 ) [node name="Square5" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 400, 0 ) scale = Vector2( 0.194542, 0.194542 ) [node name="Square6" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 400, 200 ) rotation = -0.785397 scale = Vector2( 0.13, 0.13 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 0, 400 ) rotation = 3.14159 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 350, 450 ) scale = Vector2( 0.363808, 0.363808 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 900, 1100 ) scale = Vector2( 0.22382, 0.22382 ) [node name="Tree" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 800 ) rotation = -1.6057 scale = Vector2( -0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 900 ) rotation = -1.74533 palette = 6 [node name="Tree3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 700 ) rotation = -1.39626 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 750, 1200 ) rotation = -3.20503 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree8" parent="Details" instance=ExtResource( 11 )] position = Vector2( 650, 1000 ) rotation = -0.0613112 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree5" parent="Details" instance=ExtResource( 11 )] position = Vector2( 850, 1200 ) rotation = -3.31613 palette = 5 [node name="Tree7" parent="Details" instance=ExtResource( 11 )] position = Vector2( 750, 1000 ) rotation = 0.137765 scale = Vector2( -1, 1 ) [node name="Tree9" parent="Details" instance=ExtResource( 11 )] position = Vector2( 500, 50 ) rotation = 1.46358 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree6" parent="Details" instance=ExtResource( 11 )] position = Vector2( 650, 1200 ) rotation = -2.96706 scale = Vector2( -1, 1 ) [node name="Fence" parent="Details" instance=ExtResource( 10 )] position = Vector2( 300, 800 ) rotation = -1.57079 length = 7 [node name="Fence2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 750, 1200 ) rotation = -3.14159 length = 7 [node name="Fence3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 700, 1000 ) length = 5 [node name="Fence4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 500, 50 ) rotation = 1.57079 [node name="Flower" parent="Details" instance=ExtResource( 12 )] position = Vector2( -50, 500 ) rotation = 3.14159 [node name="Flower2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 305, 1195 ) rotation = 3.92699 palette = 3 [node name="Flower3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1000, 1100 ) rotation = 1.57079 palette = 4 [node name="Flower4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 510, 990 ) rotation = 0.785397 palette = 2 [node name="Flower5" parent="Details" instance=ExtResource( 12 )] position = Vector2( 600, 450 ) rotation = -1.57079 palette = 5 [node name="Flower6" parent="Details" instance=ExtResource( 12 )] position = Vector2( 750, 600 ) rotation = -3.14159 palette = 0 [node name="Flower7" parent="Details" instance=ExtResource( 12 )] position = Vector2( 750, 300 ) rotation = -6.28318 palette = 3 [node name="Flower8" parent="Details" instance=ExtResource( 12 )] position = Vector2( 900, 450 ) rotation = -4.71238 [node name="Bench" parent="Details" instance=ExtResource( 13 )] position = Vector2( 450, 1250 ) rotation = 3.14159 [node name="Bench2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 550, 200 ) rotation = 1.57079 [node name="TreeTop" parent="Details" instance=ExtResource( 14 )] position = Vector2( 250, 250 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 15 )] position = Vector2( 100, 250 ) palette = 3 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 15 )] position = Vector2( 250, 100 ) [node name="Candle" parent="Details" instance=ExtResource( 9 )] position = Vector2( 300, 850 ) rotation = -1.5708 [node name="Candle4" parent="Details" instance=ExtResource( 9 )] position = Vector2( 290, 290 ) rotation = -0.785398 [node name="Candle5" parent="Details" instance=ExtResource( 9 )] position = Vector2( 500, 550 ) rotation = 1.5708 [node name="Candle2" parent="Details" instance=ExtResource( 9 )] position = Vector2( 700, 1200 ) rotation = -3.14159 [node name="Candle3" parent="Details" instance=ExtResource( 9 )] position = Vector2( 700, 1000 ) [node name="Lamppost" parent="Details" instance=ExtResource( 16 )] position = Vector2( 875, 325 ) rotation = 0.785398 ================================================ FILE: src/map/worlds/2B/3.tscn ================================================ [gd_scene load_steps=16 format=2] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -131071, 0, 0, -131070, 0, 0, -131069, 0, 0, -131062, -1073741824, 0, -131061, -1073741824, 0, -131060, -1073741824, 0, -65526, -1073741824, 0, -65525, -1073741824, 0, -65524, -1073741824, 0, 10, -1073741824, 0, 11, -1073741824, 0, 12, -1073741824, 0, 131080, 0, 0, 131081, 0, 0, 131082, 0, 0, 131083, -1073741824, 0, 131084, -1073741824, 0, 131085, -1073741824, 0, 131086, -1073741824, 0, 131087, -1073741824, 0, 196616, 0, 0, 196617, 0, 0, 196621, -1073741824, 0, 196622, -1073741824, 0, 196623, -1073741824, 0, 196627, -1610612736, 0, 196628, -1610612736, 0, 262152, -1073741824, 0, 262157, -1073741824, 0, 262158, -1073741824, 0, 262159, -1073741824, 0, 262163, -1610612736, 0, 262164, -1610612736, 0, 327688, -1073741824, 0, 393224, -1073741824, 0, 458760, -1073741824, 0, 524296, -1073741824, 0 ) detail = 1 [node name="SpikeMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( -131072, -1073741824, 0, -131068, -1610612736, 0, 131088, -1610612736, 0, 131091, 0, 0, 131092, 0, 0, 196624, -1610612736, 0, 262160, -1610612736, 0, 458759, -1073741824, 0, 524295, -1073741824, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 950, 650 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/2B/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 950, 50 ) dir = 3 can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 1350, 50 ) dir = 1 can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 1150, -250 ) can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 5 )] position = Vector2( 250, -350 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1150, -50 ) rotation = -0.785397 scale = Vector2( 0.279741, 0.279741 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 910, 310 ) rotation = -1.57081 scale = Vector2( 0.25, 0.25 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 1990, 390 ) rotation = 1.57078 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 1450, 350 ) scale = Vector2( 0.350536, 0.350536 ) [node name="TreeTop" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1000, 400 ) [node name="TreeTop3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1150, -200 ) scale = Vector2( 0.864361, 0.864361 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2000, 400 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1000, 550 ) palette = 4 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1100, 500 ) rotation = -0.785397 palette = 2 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1150, 400 ) palette = 3 [node name="FlowerPetals7" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1060, -290 ) palette = 4 [node name="FlowerPetals8" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1240, -290 ) palette = 2 [node name="FlowerPetals4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1850, 400 ) [node name="FlowerPetals5" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2000, 550 ) palette = 3 [node name="FlowerPetals6" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2150, 400 ) palette = 5 [node name="Fence" parent="Details" instance=ExtResource( 12 )] position = Vector2( 900, 800 ) rotation = 1.57079 [node name="Fence3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 800, 450 ) rotation = -1.57079 length = 7 [node name="Tree" parent="Details" instance=ExtResource( 13 )] position = Vector2( 900, 800 ) rotation = 1.48198 scale = Vector2( -1, 1 ) palette = 5 [node name="Fence2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1450, 500 ) rotation = 3.14159 [node name="Fence4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 250, -100 ) rotation = 3.14159 length = 7 [node name="Tree2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1450, 500 ) rotation = 3.33898 [node name="Fence5" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1450, 200 ) rotation = 6.28318 [node name="Tree9" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1450, 200 ) rotation = 0.362726 [node name="Tree4" parent="Details" instance=ExtResource( 13 )] position = Vector2( 800, 550 ) rotation = -1.74533 [node name="Tree8" parent="Details" instance=ExtResource( 13 )] position = Vector2( 350, -100 ) rotation = -3.31613 palette = 6 [node name="Tree5" parent="Details" instance=ExtResource( 13 )] position = Vector2( 800, 350 ) rotation = -1.39626 palette = 3 [node name="Tree7" parent="Details" instance=ExtResource( 13 )] position = Vector2( 150, -100 ) rotation = -2.96706 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree3" parent="Details" instance=ExtResource( 13 )] position = Vector2( 800, 450 ) rotation = -1.57079 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree6" parent="Details" instance=ExtResource( 13 )] position = Vector2( 250, -100 ) rotation = -3.09654 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Flower" parent="Details" instance=ExtResource( 14 )] position = Vector2( 150, -200 ) palette = 3 [node name="Flower2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 350, -200 ) palette = 2 [node name="Flower3" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1000, -50 ) rotation = -1.57079 [node name="Flower4" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1300, -50 ) rotation = 1.57079 palette = 3 [node name="Flower5" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1150, 100 ) rotation = 3.14159 palette = 5 [node name="Flower6" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1305, 495 ) rotation = -2.35619 palette = 0 [node name="Candle" parent="Details" instance=ExtResource( 9 )] position = Vector2( 250, -200 ) [node name="Candle2" parent="Details" instance=ExtResource( 9 )] position = Vector2( 990, 390 ) rotation = 2.35619 [node name="Candle3" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1290, -190 ) rotation = 1.0472 [node name="Lamppost" parent="Details" instance=ExtResource( 15 )] position = Vector2( 825, 225 ) rotation = -0.785398 [node name="Lamppost2" parent="Details" instance=ExtResource( 15 )] position = Vector2( 2075, 475 ) rotation = 2.35619 ================================================ FILE: src/map/worlds/2B/4.tscn ================================================ [gd_scene load_steps=17 format=2] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=15] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=16] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( 65537, -1610612736, 0, 65538, -1610612736, 0, 65539, -1610612736, 0, 65547, 0, 0, 65548, 0, 0, 65549, 0, 0, 131073, -1610612736, 0, 131074, -1610612736, 0, 131075, -1610612736, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327687, 0, 0, 327688, 0, 0, 327689, 0, 0, 327690, 0, 0, 393220, 0, 0, 393221, 0, 0, 393222, 0, 0, 393223, 0, 0, 393224, 0, 0, 393225, 0, 0, 393226, 0, 0, 458756, -1610612736, 0, 458757, -1610612736, 0, 458758, -1610612736, 0, 458759, -1610612736, 0, 458760, -1610612736, 0, 458761, -1610612736, 0, 458762, -1610612736, 0 ) detail = 1 [node name="SpikeMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( 65546, -1073741824, 0, 65550, -1610612736, 0, 262154, 0, 0, 458755, -1073741824, 0, 458763, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 5 )] position = Vector2( 800, 850 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2B/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1050, 450 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1150, 750 ) dir = 1 can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 150, 50 ) can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 1250, -50 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 4 )] position = Vector2( 250, 200 ) rotation = -0.785397 scale = Vector2( 0.180586, 0.180586 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 500, 600 ) rotation = -1.57081 scale = Vector2( 0.25, 0.25 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 1000, 700 ) rotation = 1.57078 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 750, 650 ) scale = Vector2( 0.428033, 0.428033 ) [node name="Fence" parent="Details" instance=ExtResource( 11 )] position = Vector2( 750, 500 ) length = 7 [node name="Fence2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 250, 300 ) rotation = 3.14159 [node name="Tree" parent="Details" instance=ExtResource( 10 )] position = Vector2( 750, 500 ) rotation = 0.069016 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 650, 500 ) rotation = -0.191986 palette = 3 [node name="Tree4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 250, 300 ) rotation = -2.87979 [node name="Fence3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1250, 200 ) rotation = 3.14159 [node name="Tree5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1250, 200 ) rotation = -3.40339 scale = Vector2( -1, 1 ) [node name="Fence4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 950, 800 ) rotation = 3.14159 [node name="Tree6" parent="Details" instance=ExtResource( 10 )] position = Vector2( 950, 800 ) rotation = -3.34265 palette = 5 [node name="Tree3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 850, 500 ) rotation = 0.191986 scale = Vector2( -1, 1 ) palette = 6 [node name="TreeTop" parent="Details" instance=ExtResource( 12 )] position = Vector2( 500, 750 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 13 )] position = Vector2( 600, 850 ) palette = 3 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 500, 900 ) rotation = -0.785397 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 13 )] position = Vector2( 400, 850 ) palette = 2 [node name="Flower" parent="Details" instance=ExtResource( 14 )] position = Vector2( 500, 500 ) palette = 0 [node name="Flower2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1100, 600 ) rotation = 1.57079 [node name="Flower4" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1150, 100 ) palette = 3 [node name="Flower5" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1350, 100 ) [node name="Flower3" parent="Details" instance=ExtResource( 14 )] position = Vector2( 400, 200 ) rotation = 1.57079 palette = 5 [node name="Bench" parent="Details" instance=ExtResource( 15 )] position = Vector2( 50, 200 ) rotation = -1.57079 [node name="Candle" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1250, 100 ) [node name="Lamppost" parent="Details" instance=ExtResource( 16 )] position = Vector2( 375, 125 ) rotation = 0.785398 [node name="Lamppost2" parent="Details" instance=ExtResource( 16 )] position = Vector2( 700, 800 ) rotation = 3.14159 ================================================ FILE: src/map/worlds/2B/5.tscn ================================================ [gd_scene load_steps=17 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=15] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=16] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -393211, -1073741824, 0, -327675, -1073741824, 0, -262139, -1073741824, 0, -196603, -1610612736, 0, -196602, -1073741824, 0, -196601, -1610612736, 0, -196600, -1610612736, 0, -131064, -1610612736, 0, -65528, -1610612736, 0, 8, -1610612736, 0, 131070, -1073741824, 0, 131071, -1073741824, 0, 65536, -1073741824, 0, 65537, -1073741824, 0, 65544, -1610612736, 0, 65547, -1073741824, 0, 65548, -1073741824, 0, 65549, -1073741824, 0, 196606, -1073741824, 0, 196607, -1073741824, 0, 131072, -1073741824, 0, 131073, -1073741824, 0, 131083, -1073741824, 0, 131084, -1073741824, 0, 131085, -1073741824, 0, 262142, -1073741824, 0, 262143, -1073741824, 0, 196608, -1073741824, 0, 196609, -1073741824, 0, 327685, -1610612736, 0, 327686, -1610612736, 0, 327687, -1610612736, 0, 327688, -1610612736, 0, 327692, -1610612736, 0, 327693, -1610612736, 0, 393221, -1610612736, 0, 393222, -1610612736, 0, 393223, -1610612736, 0, 393224, -1610612736, 0, 393228, -1073741824, 0, 393229, -1073741824, 0, 458757, 1610612736, 0, 458758, 1610612736, 0, 458759, 1610612736, 0, 458760, 1610612736, 0, 458764, -1073741824, 0, 458765, -1073741824, 0 ) detail = 1 [node name="SpikeMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( -458747, 0, 0, -196599, -1610612736, 0, 65538, -1610612736, 0, 131074, -1610612736, 0, 262141, -1073741824, 0, 196610, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 0, 50 ) scene_path = "res://src/map/worlds/2B/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 1350, 50 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 1450, 750 ) dir = 1 can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 550, 450 ) can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 5 )] position = Vector2( 750, -450 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 700, 650 ) rotation = -0.785397 scale = Vector2( 0.34022, 0.34022 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 1250, 200 ) scale = Vector2( 0.212057, 0.212057 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1300, 670 ) rotation = -0.785397 scale = Vector2( 0.336393, 0.336393 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 0, 250 ) scale = Vector2( 0.391571, 0.391571 ) [node name="Fence" parent="Details" instance=ExtResource( 11 )] position = Vector2( 800, 50 ) rotation = -1.57079 length = 7 [node name="Fence2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 900, 650 ) rotation = -4.71238 [node name="Tree" parent="Details" instance=ExtResource( 8 )] position = Vector2( 800, 50 ) rotation = -1.53682 scale = Vector2( 0.9, 0.9 ) z_index = -35 palette = 2 [node name="Tree2" parent="Details" instance=ExtResource( 8 )] position = Vector2( 800, 150 ) rotation = -1.74533 palette = 5 [node name="Tree4" parent="Details" instance=ExtResource( 8 )] position = Vector2( 900, 650 ) rotation = 1.72437 scale = Vector2( 0.9, 0.9 ) palette = 6 [node name="Fence3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 900, -49.9999 ) rotation = -4.71238 [node name="Tree5" parent="Details" instance=ExtResource( 8 )] position = Vector2( 900, -49.9999 ) rotation = 1.40603 scale = Vector2( -1, 1 ) [node name="Fence4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 500, -500 ) rotation = -7.85397 [node name="Tree6" parent="Details" instance=ExtResource( 8 )] position = Vector2( 500, -500 ) rotation = -1.34903 [node name="Fence5" parent="Details" instance=ExtResource( 11 )] position = Vector2( -200, 200 ) rotation = -7.85397 [node name="Tree7" parent="Details" instance=ExtResource( 8 )] position = Vector2( -200, 200 ) rotation = -1.78846 scale = Vector2( -1, 1 ) palette = 6 [node name="Tree3" parent="Details" instance=ExtResource( 8 )] position = Vector2( 800, -50 ) rotation = -1.39626 scale = Vector2( -1, 1 ) palette = 3 [node name="TreeTop" parent="Details" instance=ExtResource( 12 )] position = Vector2( -4.57764e-05, 400 ) scale = Vector2( 0.929655, 0.929655 ) [node name="TreeTop3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 700, 500 ) scale = Vector2( 0.929655, 0.929655 ) [node name="TreeTop5" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1150, 250 ) scale = Vector2( 0.748015, 0.748015 ) [node name="TreeTop4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 700, 800 ) scale = Vector2( 0.929655, 0.929655 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1.09139e-11, 99.9999 ) scale = Vector2( 0.929655, 0.929655 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 13 )] position = Vector2( -100, 500 ) palette = 3 [node name="FlowerPetals4" parent="Details" instance=ExtResource( 13 )] position = Vector2( -100, 0 ) palette = 5 [node name="FlowerPetals5" parent="Details" instance=ExtResource( 13 )] position = Vector2( 100, 0 ) [node name="FlowerPetals2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 100, 500 ) palette = 4 [node name="FlowerPetals6" parent="Details" instance=ExtResource( 13 )] position = Vector2( 600, 400 ) palette = 3 [node name="FlowerPetals7" parent="Details" instance=ExtResource( 13 )] position = Vector2( 800, 400 ) [node name="FlowerPetals12" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1150, 350 ) palette = 2 [node name="FlowerPetals13" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1050, 250 ) palette = 4 [node name="FlowerPetals8" parent="Details" instance=ExtResource( 13 )] position = Vector2( 700, 360 ) palette = 0 [node name="FlowerPetals9" parent="Details" instance=ExtResource( 13 )] position = Vector2( 600, 900 ) palette = 2 [node name="FlowerPetals10" parent="Details" instance=ExtResource( 13 )] position = Vector2( 800, 900 ) palette = 5 [node name="FlowerPetals11" parent="Details" instance=ExtResource( 13 )] position = Vector2( 700, 940 ) palette = 0 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 13 )] position = Vector2( 0, 540 ) rotation = -0.785397 palette = 2 [node name="Bench" parent="Details" instance=ExtResource( 14 )] position = Vector2( 450, 650 ) rotation = -1.57079 [node name="Bench3" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1300, 850 ) rotation = -3.14159 scale = Vector2( -1, 1 ) [node name="Bench2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 450, -350 ) rotation = -1.57079 scale = Vector2( -1, 1 ) [node name="Flower" parent="Details" instance=ExtResource( 15 )] position = Vector2( 505, -205 ) rotation = -2.35619 palette = 0 [node name="Flower2" parent="Details" instance=ExtResource( 15 )] position = Vector2( 610, -310 ) rotation = 0.785397 palette = 0 [node name="Flower3" parent="Details" instance=ExtResource( 15 )] position = Vector2( 1400, 600 ) rotation = 1.57079 [node name="Flower4" parent="Details" instance=ExtResource( 15 )] position = Vector2( 1400, 200 ) rotation = 1.57079 palette = 3 [node name="Candle" parent="Details" instance=ExtResource( 10 )] position = Vector2( 0, 400 ) rotation = -3.14159 [node name="Candle5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 700, 800 ) rotation = -3.14159 [node name="Candle2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 790, -190 ) rotation = -2.35619 [node name="Candle3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 600, -550 ) rotation = -4.71239 [node name="Candle4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1390, 290 ) rotation = -3.92699 [node name="Lamppost3" parent="Details" instance=ExtResource( 16 )] position = Vector2( 875, 525 ) rotation = 0.785398 [node name="Lamppost4" parent="Details" instance=ExtResource( 16 )] position = Vector2( 175, 125 ) rotation = 0.785398 ================================================ FILE: src/map/worlds/2B/6.tscn ================================================ [gd_scene load_steps=17 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Fence.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=15] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=16] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -65538, 1610612736, 0, -65537, -1073741824, 0, -131072, -1073741824, 0, -131062, -1610612736, 0, -131061, -1610612736, 0, -131060, 1610612736, 0, -2, 1610612736, 0, -1, -1073741824, 0, -65536, -1073741824, 0, -65526, -1610612736, 0, -65525, -1610612736, 0, -65524, 1610612736, 0, 131075, -1073741824, 0, 131076, -1073741824, 0, 131077, -1073741824, 0, 131078, -1073741824, 0, 196611, -1073741824, 0, 196612, -1073741824, 0, 196613, -1073741824, 0, 196614, -1073741824, 0, 262147, -1073741824, 0, 262148, -1073741824, 0, 262149, -1073741824, 0, 262150, -1073741824, 0, 327683, -1073741824, 0, 327684, -1073741824, 0, 327685, -1073741824, 0, 327686, -1073741824, 0 ) detail = 1 [node name="SpikeMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( -131071, -1610612736, 0, -131063, -1073741824, 0, -65535, -1610612736, 0, -65527, -1073741824, 0, 65534, 1610612736, 0, 65535, 1610612736, 0, 0, 1610612736, 0, 10, 1610612736, 0, 11, 1610612736, 0, 12, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 1150, -250 ) scene_path = "res://src/map/worlds/2B/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 350, 150 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 450, 150 ) can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 750, 550 ) dir = 1 can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 5 )] position = Vector2( -50, -350 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( -50, -99.9999 ) rotation = -0.785397 scale = Vector2( 0.188522, 0.188522 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1170, -100 ) rotation = -2.3562 scale = Vector2( 0.339535, 0.339535 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 500, 400 ) scale = Vector2( 0.53102, 0.53102 ) [node name="TreeTop" parent="Details" instance=ExtResource( 10 )] position = Vector2( 350, 550 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 50, 0 ) scale = Vector2( 0.9, 0.9 ) [node name="TreeTop3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1050, 0 ) scale = Vector2( 0.9, 0.9 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 11 )] position = Vector2( 200, 550 ) palette = 3 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 350, 700 ) palette = 2 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 450, 650 ) rotation = -0.785397 palette = 5 [node name="FlowerPetals4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 250, 450 ) rotation = 0.785397 [node name="FlowerPetals6" parent="Details" instance=ExtResource( 11 )] position = Vector2( -50, 100 ) [node name="FlowerPetals7" parent="Details" instance=ExtResource( 11 )] position = Vector2( 150, 100 ) palette = 4 [node name="FlowerPetals10" parent="Details" instance=ExtResource( 11 )] position = Vector2( 950, 100 ) palette = 3 [node name="FlowerPetals11" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1150, 100 ) [node name="FlowerPetals12" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1050, 140 ) rotation = -0.785397 palette = 4 [node name="FlowerPetals8" parent="Details" instance=ExtResource( 11 )] position = Vector2( 50, 140 ) rotation = 0.785397 palette = 2 [node name="FlowerPetals5" parent="Details" instance=ExtResource( 11 )] position = Vector2( 250, 650 ) rotation = -0.791661 palette = 0 [node name="Fence" parent="Details" instance=ExtResource( 13 )] position = Vector2( 700, 350 ) rotation = 1.57079 [node name="Tree" parent="Details" instance=ExtResource( 12 )] position = Vector2( 700, 350 ) rotation = 1.7229 palette = 5 [node name="Fence3" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1300, -100 ) rotation = 1.57079 [node name="Tree3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1300, -100 ) rotation = 2.00713 palette = 6 [node name="Fence4" parent="Details" instance=ExtResource( 13 )] position = Vector2( -200, -100 ) rotation = -1.57079 [node name="Tree4" parent="Details" instance=ExtResource( 12 )] position = Vector2( -200, -100 ) rotation = -1.309 [node name="Fence2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 600, 200 ) [node name="Tree2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 600, 200 ) rotation = -0.152776 scale = Vector2( -1, 1 ) palette = 3 [node name="Bench" parent="Details" instance=ExtResource( 14 )] position = Vector2( -100, -250 ) scale = Vector2( -1, 1 ) [node name="Bench2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 600, 650 ) rotation = 3.14159 scale = Vector2( -1, 1 ) [node name="Flower" parent="Details" instance=ExtResource( 15 )] position = Vector2( 50, -200 ) palette = 0 [node name="Flower2" parent="Details" instance=ExtResource( 15 )] position = Vector2( 695, 205 ) rotation = 0.785397 palette = 0 [node name="Candle3" parent="Details" instance=ExtResource( 9 )] position = Vector2( 700, 450 ) rotation = 1.5708 [node name="Candle4" parent="Details" instance=ExtResource( 9 )] position = Vector2( 300, 300 ) rotation = 4.71239 [node name="Lamppost" parent="Details" instance=ExtResource( 16 )] position = Vector2( 400, 600 ) rotation = -3.14159 [node name="Lamppost2" parent="Details" instance=ExtResource( 16 )] position = Vector2( 100, -100 ) rotation = 1.5708 [node name="Lamppost3" parent="Details" instance=ExtResource( 16 )] position = Vector2( 1000, -100 ) rotation = 4.71239 ================================================ FILE: src/map/worlds/2C/0_hub.tscn ================================================ [gd_scene load_steps=15 format=2] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=1] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorBig.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Snowman.tscn" type="PackedScene" id=14] [node name="Map" type="Node2D"] __meta__ = { "_edit_lock_": true } [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( 458777, 0, 0, 458778, 0, 0, 524313, 0, 0, 524314, 0, 0, 589849, 0, 0, 589850, 0, 0, 655384, 0, 0, 655385, 0, 0, 655386, 0, 0, 720909, 0, 0, 720910, 0, 0, 720911, 0, 0, 720912, 0, 0, 720913, 0, 0, 720914, 0, 0, 720915, 0, 0, 720916, 0, 0, 720917, 0, 0, 720918, 0, 0, 720919, 0, 0, 720920, 0, 0, 720921, 0, 0, 720922, 0, 0, 786445, 0, 0, 786446, 0, 0, 786447, 0, 0, 786448, 0, 0, 786449, 0, 0, 786450, 0, 0, 786451, 0, 0, 786452, 0, 0, 786453, 0, 0, 786454, 0, 0, 786455, 0, 0, 786456, 0, 0, 786457, 0, 0, 786458, 0, 0, 786461, 0, 0, 851981, 0, 0, 851982, 0, 0, 851983, 0, 0, 851984, 0, 0, 851985, 0, 0, 851986, 0, 0, 851987, 0, 0, 851988, 0, 0, 851989, 0, 0, 851990, 0, 0, 851991, 0, 0, 851992, 0, 0, 851997, 0, 0, 851998, 0, 0, 917517, 0, 0, 917518, 0, 0, 917519, 0, 0, 917520, 0, 0, 917521, 0, 0, 917522, 0, 0, 917523, 0, 0, 917524, 0, 0, 917525, 0, 0, 917526, 0, 0, 917527, 0, 0, 917528, 0, 0, 917533, 0, 0, 917534, 0, 0, 983057, 0, 0, 983058, 0, 0, 1048593, 0, 0, 1048594, 0, 0, 1114138, 0, 0, 1114139, 0, 0, 1114140, 0, 0, 1179674, 0, 0, 1179675, 0, 0, 1179676, 0, 0, 1245201, 0, 0, 1245202, 0, 0, 1245203, 0, 0, 1245211, 0, 0, 1245212, 0, 0, 1310737, 0, 0, 1310738, 0, 0, 1310739, 0, 0, 1310742, 0, 0, 1310743, 0, 0, 1310744, 0, 0, 1376278, 0, 0, 1376279, 0, 0, 1376280, 0, 0 ) detail = 2 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 393241, 0, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="BigDoor" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1800, 1000 ) scene_path = "res://src/map/worlds/2A/0_hub.tscn" [node name="D1" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 1250, 1300 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2C/1.tscn" [node name="D2" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 1450, 1550 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2C/2.tscn" [node name="D3" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 1850, 1850 ) scene_path = "res://src/map/worlds/2C/3.tscn" [node name="D4" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 2350, 2250 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2C/4.tscn" [node name="D5" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 2950, 1850 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/2C/5.tscn" [node name="D6" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 2850, 1350 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2C/6.tscn" [node name="BigDoor2" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 2200, 1600 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/0/2_end.tscn" gem_count = 50 [node name="NPC" parent="Actors" instance=ExtResource( 12 )] position = Vector2( 2450, 800 ) dir = 3 idle_anim = "invisible" dye = { "eye": 3, "fit": 5, "hair": 14, "skin": 0 } hairstyle_back = 2 hat = 3 is_npc = true lines = [ "Here I am!", "What gave me away? ;P", "Did you see me wiggle? d;", "It's quite cozy in here...", "It does get a little stinky... o:", "I've been hiding since morning!", "I'm supposed to be in class...", "I packed my own lunch! (-;", "Want a carrot?", "Find your own snowman!!.. Or we can share (;", "Hop in! The snow is fine ^.^" ] greeting = 0 chat_offset = Vector2( 0, -220 ) ready_z_index = -50 [node name="NPC2" parent="Actors" instance=ExtResource( 12 )] position = Vector2( 2750, 840 ) dir = 1 idle_anim = "bench" dye = { "eye": 3, "fit": 5, "hair": 14, "skin": 0 } hairstyle_back = 2 hat = 3 is_npc = true lines = [ "Hey! Come chill.. (:", "I hope I don't melt in the sun! ;P", "There's snow place I'd rather be! ^.^", "Look at this! Take it all in..", "What did we do to deserve such beauty? (:", "Join me for the sunrise! <3", "It's a lovely day to be outside! <3", "Remember to breathe...", "Starlight be praised!", "This is where I belong..." ] greeting = 0 [node name="NPC3" parent="Actors" instance=ExtResource( 12 )] position = Vector2( 1850, 1750 ) dir = 2 idle_anim = "snowball" dye = { "eye": 3, "fit": 4, "hair": 11, "skin": 0 } hairstyle_back = 2 hairstyle_front = 2 hat = 3 is_npc = true lines = [ "Hey babe! (;", "Watch how far I can throw!! (=", "I'm throwing this one into orbit! ;P", "Look at her goooo!", "I'll knock that star out of the sky!!", "Check this out (;", "Take this!", "Witness the power of concentrated snow! 0=", "Oh they are going down!", "I'm the best snowballer around!! (:<" ] greeting = 0 [node name="NPC4" parent="Actors" instance=ExtResource( 12 )] position = Vector2( 2290, 1950 ) idle_anim = "ponder" is_idle_flip = true dye = { "eye": 16, "fit": 12, "hair": 3, "skin": 0 } hairstyle_back = 3 hairstyle_front = 7 hat = 3 is_npc = true lines = [ "What's good!? ^.^", "You've come a long way!", "Few puzzlers make it out this far..", "What brings you so deep into the frost?", "I came here searching for more gems!", "It's nice to breathe some fresh air (:", "I've been stumped on this puzzle all day..", "Swap the two and slide one over.. hmm...", "These puzzles perplex me..", "A-ha! That might work.." ] greeting = 0 [node name="NPC5" parent="Actors" instance=ExtResource( 12 )] position = Vector2( 3000, 1550 ) dir = 2 idle_anim = "handstand" dye = { "eye": 0, "fit": 17, "hair": 10, "skin": 5 } hairstyle_back = 3 is_npc = true lines = [ "Hey friend! (-:", "I'm giving my brain a break!", "All the blood is rushing to my head! 0=", "More blood flow = more brain power!!", "Wiggle your fingers and your toes! ;P", "I feel wild from all these puzzles!", "I had to get up and move my body!", "I gotta stay moving! (;", "Feel the balance!", "Let it happen... <3" ] greeting = 0 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 1500, 1300 ) scale = Vector2( 0.5, 0.5 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 1800, 1300 ) rotation = -2.35619 scale = Vector2( 0.25, 0.25 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 3000, 1400 ) rotation = -2.35619 scale = Vector2( 0.172698, 0.172698 ) [node name="Square4" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 1850, 2000 ) rotation = -2.35619 scale = Vector2( 0.197116, 0.197116 ) [node name="Rocks6" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( 2600, 800 ) scale = Vector2( 0.25, 0.25 ) [node name="Rocks7" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( 1800, 1600 ) rotation = -3.14159 scale = Vector2( 0.25, 0.25 ) [node name="Rocks8" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( 2300, 1300 ) rotation = -3.14159 scale = Vector2( 0.6, 0.6 ) [node name="Rocks9" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( 2100, 1300 ) scale = Vector2( 0.6, 0.6 ) [node name="Rocks10" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( 2350, 2085 ) rotation = 2.3562 scale = Vector2( 0.31534, 0.31534 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 11 )] position = Vector2( 2550, 1150 ) scale = Vector2( 0.4, 0.4 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 11 )] position = Vector2( 2785, 1815 ) scale = Vector2( 0.262608, 0.262608 ) [node name="PineTree" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1650, 1100 ) rotation = -0.153275 z_index = -5 [node name="PineTree2" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1950, 1100 ) rotation = 0.153589 z_index = -5 [node name="PineTree9" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2700, 1000 ) rotation = 1.4766 z_index = -5 [node name="PineTree10" parent="Details" instance=ExtResource( 1 )] modulate = Color( 0.95, 0.95, 0.95, 1 ) position = Vector2( 2690, 1100 ) rotation = 1.86029 scale = Vector2( 0.3, 0.3 ) [node name="PineTree4" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2225, 1100 ) rotation = -0.0815702 scale = Vector2( 0.3, 0.3 ) z_index = -5 [node name="PineTree17" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1325, 1125 ) rotation = -0.785397 scale = Vector2( 0.35, 0.35 ) z_index = -5 [node name="PineTree3" parent="Details" instance=ExtResource( 1 )] modulate = Color( 0.94902, 0.94902, 0.94902, 1 ) position = Vector2( 2100, 1115 ) scale = Vector2( 0.3, 0.3 ) [node name="PineTree5" parent="Details" instance=ExtResource( 1 )] modulate = Color( 0.94902, 0.94902, 0.94902, 1 ) position = Vector2( 1525, 1120 ) rotation = -0.0809851 scale = Vector2( 0.3, 0.3 ) [node name="PineTree7" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2050, 1500 ) rotation = 3.43512 z_index = -5 [node name="PineTree15" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1700, 1600 ) rotation = 4.22568 z_index = -5 [node name="PineTree16" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1325, 1475 ) rotation = 3.92699 scale = Vector2( 0.35, 0.35 ) z_index = -5 [node name="PineTree8" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2350, 1500 ) rotation = 2.84838 z_index = -5 [node name="PineTree11" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2750, 1715 ) rotation = 6.28318 scale = Vector2( 0.3, 0.3 ) z_index = -5 [node name="PineTree12" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2475, 2100 ) rotation = -4.55646 z_index = -5 [node name="PineTree13" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2225, 2025 ) rotation = -6.81406 scale = Vector2( 0.3, 0.3 ) z_index = -5 [node name="PineTree14" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1775, 2075 ) rotation = -2.72455 z_index = -5 [node name="Lamppost" parent="Details" instance=ExtResource( 7 )] position = Vector2( 2415, 1015 ) rotation = -0.785397 [node name="Lamppost4" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1400, 1100 ) [node name="Lamppost3" parent="Details" instance=ExtResource( 7 )] position = Vector2( 2500, 1300 ) rotation = -3.92699 [node name="Lamppost2" parent="Details" instance=ExtResource( 7 )] position = Vector2( 2350, 2000 ) [node name="Candle" parent="Details" instance=ExtResource( 13 )] position = Vector2( 3100, 1400 ) rotation = -4.71238 [node name="Candle2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2890, 1990 ) rotation = -3.92699 [node name="Candle3" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2210, 2190 ) rotation = -2.35619 [node name="Candle4" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1750, 1700 ) rotation = -3.14159 [node name="Candle5" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1300, 1400 ) rotation = -1.57079 [node name="Bench" parent="Details" instance=ExtResource( 8 )] position = Vector2( 2750, 850 ) rotation = 1.57079 scale = Vector2( -1, 1 ) [node name="Bench2" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1650, 2000 ) rotation = 4.71238 [node name="Snowman" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1900, 2100 ) rotation = 3.14159 scale = Vector2( 0.3, 0.3 ) [node name="Snowman2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 2500, 800 ) rotation = 4.71238 scale = Vector2( 0.3, 0.3 ) [node name="Flower2" parent="Details" instance=ExtResource( 9 )] position = Vector2( 2890, 1710 ) rotation = 0.785397 palette = 2 [node name="Flower9" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1300, 1200 ) rotation = -1.57079 [node name="Flower11" parent="Details" instance=ExtResource( 9 )] position = Vector2( 2325, 1100 ) palette = 2 [node name="Flower3" parent="Details" instance=ExtResource( 9 )] position = Vector2( 2910, 1490 ) rotation = -2.35619 palette = 5 [node name="Flower10" parent="Details" instance=ExtResource( 9 )] position = Vector2( 2490, 1490 ) rotation = -3.92699 palette = 3 [node name="Flower4" parent="Details" instance=ExtResource( 9 )] position = Vector2( 2700, 1250 ) rotation = -4.71238 palette = 4 [node name="Flower5" parent="Details" instance=ExtResource( 9 )] position = Vector2( 2610, 1890 ) rotation = -2.35619 [node name="Flower6" parent="Details" instance=ExtResource( 9 )] position = Vector2( 2200, 2100 ) rotation = -1.57079 palette = 2 [node name="Flower7" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1990, 1910 ) rotation = 0.785397 palette = 4 [node name="Flower8" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1650, 1500 ) rotation = 3.14159 palette = 5 ================================================ FILE: src/map/worlds/2C/1.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Snowman.tscn" type="PackedScene" id=14] [node name="Node2D" type="Node2D"] __meta__ = { "_edit_lock_": true } [node name="SolidTileMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( -131046, 1610612736, 0, -131045, -1073741824, 0, -65510, 1610612736, 0, -65509, 1610612736, 0, 26, 1610612736, 0, 27, 1610612736, 0, 262163, -1610612736, 0, 262164, -1610612736, 0, 262165, 0, 0, 262166, 0, 0, 327699, -1610612736, 0, 327700, 0, 0, 327701, 0, 0, 327702, 0, 0, 393235, -1610612736, 0, 393236, 0, 0, 393237, 0, 0, 393238, -1610612736, 0, 458771, -1610612736, 0, 458772, 0, 0, 458773, 0, 0, 458774, -1610612736, 0, 524307, -1073741824, 0, 524308, -1073741824, 0, 524309, -1073741824, 0, 524310, -1073741824, 0, 720921, 1610612736, 0, 720922, 1610612736, 0, 786457, 1610612736, 0, 786458, 1610612736, 0, 851993, -1073741824, 0, 851994, -1073741824, 0 ) detail = 2 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( -131047, -1073741824, 0, -65511, -1073741824, 0, 25, -1073741824, 0, 65562, 1610612736, 0, 65563, 1610612736, 0, 655385, 0, 0, 655386, 0, 0, 720920, -1073741824, 0, 786456, -1073741824, 0, 851992, -1073741824, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 2750, 1250 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/2C/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1950, 350 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2350, 650 ) dir = 1 can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2350, 750 ) dir = 1 can_spin = false [node name="Box4" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2350, 850 ) dir = 1 can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 2950, -50 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 2100, 650 ) rotation = -0.785397 scale = Vector2( 0.507202, 0.507202 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 2700, -30 ) rotation = -0.785397 scale = Vector2( 0.341742, 0.341742 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 2600, 1250 ) scale = Vector2( 0.210269, 0.210269 ) [node name="PineTree" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2700, 1150 ) rotation = 1.35626 [node name="PineTree3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2800, 50 ) rotation = 1.79408 scale = Vector2( 0.35, 0.35 ) [node name="PineTree4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2795, -190 ) rotation = 0.785397 scale = Vector2( 0.3, 0.3 ) [node name="PineTree2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2650, 1400 ) rotation = 2.90132 [node name="PineTree5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2250, 900 ) rotation = 2.87979 [node name="PineTree8" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1950, 900 ) rotation = 3.40339 [node name="PineTree9" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1900, 450 ) rotation = 5.12937 scale = Vector2( 0.35, 0.35 ) [node name="PineTree10" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2300, 500 ) rotation = 7.33037 [node name="PineTree7" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2600, 1100 ) rotation = 0.135865 scale = Vector2( 0.45, 0.45 ) [node name="PineTree6" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2600, -50.0001 ) rotation = -1.74533 scale = Vector2( 0.45, 0.45 ) [node name="Lamppost" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2700, 1350 ) rotation = 1.57079 [node name="Lamppost3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2100, 900 ) rotation = 3.14159 [node name="Lamppost4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2100, 400 ) rotation = 6.28418 [node name="Lamppost2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2800, -150 ) rotation = 1.57079 [node name="Flower" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2695, 1395 ) rotation = 2.35619 palette = 2 [node name="Flower2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2550, 1400 ) rotation = 3.14159 palette = 4 [node name="Flower8" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1950, 400 ) rotation = 6.28318 palette = 0 [node name="Flower4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2025, 900 ) rotation = 3.14159 [node name="Flower9" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2300, 650 ) rotation = 1.57079 palette = 4 [node name="Flower6" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1900, 675 ) rotation = 4.71238 palette = 2 [node name="Flower7" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2200, 400 ) rotation = 6.28318 palette = 5 [node name="Flower5" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2175, 900 ) rotation = 3.14159 palette = 3 [node name="Flower3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2800, -50 ) rotation = 1.57079 [node name="Bench" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2700, -250 ) scale = Vector2( -1, 1 ) [node name="Bench2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1850, 800 ) rotation = -1.57079 scale = Vector2( -1, 1 ) [node name="Snowman" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1900, 575 ) rotation = -1.57079 scale = Vector2( -0.3, 0.3 ) ================================================ FILE: src/map/worlds/2C/2.tscn ================================================ [gd_scene load_steps=15 format=2] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Snowman.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] __meta__ = { "_edit_lock_": true } [node name="SolidTileMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( -65509, 1610612736, 0, -65508, 1610612736, 0, -65507, 1610612736, 0, 27, 1610612736, 0, 28, 1610612736, 0, 29, 1610612736, 0, 262163, 1610612736, 0, 262164, 0, 0, 262165, 0, 0, 262166, 0, 0, 327699, 1610612736, 0, 327700, 0, 0, 327701, 0, 0, 327702, 0, 0, 393235, 1610612736, 0, 393236, 0, 0, 393237, 0, 0, 393238, 0, 0, 458771, 1610612736, 0, 458772, 1610612736, 0, 458773, 1610612736, 0, 458774, 1610612736, 0, 524302, 1610612736, 0, 524303, 1610612736, 0, 524304, 1610612736, 0, 589838, 1610612736, 0, 589839, 1610612736, 0, 589840, 1610612736, 0 ) detail = 2 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( -65510, -1073741824, 0, 26, -1073741824, 0, 65563, 1610612736, 0, 65564, 1610612736, 0, 65565, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 1550, 1050 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/2C/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2050, 350 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2350, 550 ) dir = 1 can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2150, 850 ) dir = 2 can_spin = false [node name="Box4" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1850, 650 ) dir = 3 can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 2850, -250 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 2850, 0.00012207 ) rotation = -0.785397 scale = Vector2( 0.191837, 0.191837 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 1550, 880 ) rotation = 2.35619 scale = Vector2( 0.35, 0.35 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 2100, 600 ) scale = Vector2( 0.542518, 0.542518 ) [node name="Snowman" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1550, 800 ) scale = Vector2( 0.3, 0.3 ) [node name="Snowman2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 3000, 0 ) rotation = 1.57079 scale = Vector2( -0.3, 0.3 ) [node name="Lamppost" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2700, 100 ) rotation = -2.35619 [node name="Lamppost2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2275, 775 ) rotation = 2.35619 [node name="Lamppost3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1925, 425 ) rotation = 5.49778 [node name="PineTree" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2750, -100 ) rotation = -0.244346 scale = Vector2( 0.3, 0.3 ) [node name="PineTree3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1450, 1000 ) rotation = -2.79253 scale = Vector2( 0.35, 0.35 ) [node name="PineTree4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1650, 1000 ) rotation = 2.79253 scale = Vector2( 0.35, 0.35 ) [node name="PineTree5" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2275, 425 ) rotation = 0.785397 scale = Vector2( 0.35, 0.35 ) [node name="PineTree8" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2000, 800 ) rotation = 3.52 scale = Vector2( 0.3, 0.3 ) [node name="PineTree6" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2300, 700 ) rotation = 1.74533 scale = Vector2( 0.35, 0.35 ) [node name="PineTree7" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1900, 500 ) rotation = -1.39626 scale = Vector2( 0.35, 0.35 ) [node name="PineTree2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2950, -100 ) rotation = 0.244346 scale = Vector2( 0.3, 0.3 ) [node name="Flower" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2850, -100 ) palette = 2 [node name="Flower2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1450, 800 ) palette = 3 [node name="Flower3" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1650, 800 ) palette = 4 [node name="Flower6" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1900, 750 ) rotation = -1.57079 palette = 2 [node name="Flower4" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2250, 800 ) rotation = -3.14159 palette = 5 [node name="Flower5" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1950, 400 ) [node name="Bench" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1350, 900 ) rotation = -1.57079 [node name="Candle" parent="Details" instance=ExtResource( 15 )] position = Vector2( 1700, 900 ) rotation = 1.57079 ================================================ FILE: src/map/worlds/2C/3.tscn ================================================ [gd_scene load_steps=12 format=2] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Snowman.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=12] [node name="Node2D" type="Node2D"] __meta__ = { "_edit_lock_": true } [node name="SolidTileMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( -65515, 0, 0, -65514, 0, 0, -65513, 0, 0, -65512, -1073741824, 0, 131100, 0, 0, 196636, 0, 0, 262163, 1610612736, 0, 262164, 0, 0, 262165, 0, 0, 262166, 0, 0, 262172, 0, 0, 327699, 1610612736, 0, 327700, 0, 0, 327701, 0, 0, 327702, 0, 0, 327708, 0, 0, 393235, 1610612736, 0, 393236, 0, 0, 393237, 0, 0, 393238, 0, 0, 458771, 1610612736, 0, 458772, 1610612736, 0, 458773, 1610612736, 0, 458774, 1610612736, 0 ) detail = 2 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( -65516, -1073741824, 0, -65511, -1610612736, 0, 65564, 0, 0, 393244, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 2950, 450 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/2C/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2050, 350 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2350, 550 ) dir = 1 can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2150, 850 ) dir = 2 can_spin = false [node name="Box4" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1850, 650 ) dir = 3 can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 2300, -250 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 2100, 600 ) rotation = 0.785397 scale = Vector2( 0.480133, 0.480133 ) [node name="Lamppost" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2800, 450 ) rotation = -1.57079 [node name="Lamppost3" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1925, 775 ) rotation = -2.35619 [node name="Lamppost2" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2250, 0 ) rotation = -3.14159 [node name="PineTree" parent="Details" instance=ExtResource( 8 )] position = Vector2( 2400, 3.05176e-05 ) rotation = 3.05433 scale = Vector2( 0.35, 0.35 ) [node name="PineTree2" parent="Details" instance=ExtResource( 8 )] position = Vector2( 2800, 300 ) rotation = -1.39626 scale = Vector2( 0.35, 0.35 ) [node name="PineTree3" parent="Details" instance=ExtResource( 8 )] position = Vector2( 2900, 550 ) rotation = -4.42835 [node name="PineTree4" parent="Details" instance=ExtResource( 8 )] position = Vector2( 2290, 790 ) rotation = -3.92699 [node name="PineTree5" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1910, 410 ) rotation = -7.06857 [node name="PineTree6" parent="Details" instance=ExtResource( 8 )] position = Vector2( 2200, -100 ) rotation = -0.261799 scale = Vector2( 0.3, 0.3 ) [node name="PineTree7" parent="Details" instance=ExtResource( 8 )] position = Vector2( 2400, -100 ) rotation = 0.261799 scale = Vector2( 0.3, 0.3 ) [node name="Snowman" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2900, 300 ) rotation = 1.57079 scale = Vector2( 0.3, 0.3 ) [node name="Snowman2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2150, 0 ) rotation = 3.14159 scale = Vector2( -0.3, 0.3 ) [node name="Flower" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2800, 550 ) rotation = -1.57079 palette = 2 [node name="Flower5" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2300, 700 ) rotation = -4.71238 palette = 4 [node name="Flower6" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2295, 405 ) rotation = 0.785398 palette = 3 [node name="Flower3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2000, 800 ) rotation = -3.14159 palette = 5 [node name="Flower4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1900, 650 ) rotation = -1.57079 palette = 3 [node name="Flower2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2300, -100 ) [node name="Flower7" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2150, 400 ) palette = 0 [node name="Bench" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1850, 500 ) rotation = -1.57079 ================================================ FILE: src/map/worlds/2C/4.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Snowman.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=14] [node name="Node2D" type="Node2D"] __meta__ = { "_edit_lock_": true } [node name="SolidTileMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( 27, -1073741824, 0, 28, -1073741824, 0, 29, -1073741824, 0, 30, -1073741824, 0, 65563, -1073741824, 0, 65564, -1073741824, 0, 65565, -1073741824, 0, 65566, -1073741824, 0, 262163, -1610612736, 0, 262164, -1610612736, 0, 262165, 0, 0, 262166, 0, 0, 327699, -1610612736, 0, 327700, -1610612736, 0, 327701, 0, 0, 327702, 0, 0, 393235, -1610612736, 0, 393236, -1610612736, 0, 393237, -1610612736, 0, 393238, -1610612736, 0, 458771, -1610612736, 0, 458772, -1610612736, 0, 458773, -1610612736, 0, 458774, -1610612736, 0, 655385, 1610612736, 0, 655386, -1610612736, 0, 720921, 1610612736, 0, 720922, -1610612736, 0, 786457, 1610612736, 0, 786458, -1610612736, 0, 851993, 1610612736, 0, 851994, -1610612736, 0 ) detail = 2 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( 26, -1073741824, 0, 31, -1610612736, 0, 65562, -1073741824, 0, 65567, -1610612736, 0, 589849, 0, 0, 589850, 0, 0, 917529, 1610612736, 0, 917530, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 2750, 1250 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/2C/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2050, 350 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2350, 650 ) dir = 1 can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1950, 350 ) can_spin = false [node name="Box4" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2350, 750 ) dir = 1 can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 2900, -150 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 2025, 675 ) scale = Vector2( 0.265711, 0.265711 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 2800, 99.9999 ) rotation = 0.785397 scale = Vector2( 0.17, 0.17 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 3000, 100 ) rotation = 0.785397 scale = Vector2( 0.17, 0.17 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 2150, 550 ) scale = Vector2( 0.46716, 0.46716 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 2600, 1200 ) scale = Vector2( 0.208171, 0.208171 ) [node name="Lamppost" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2700, 1150 ) rotation = 1.57079 [node name="Lamppost2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2500, 1250 ) rotation = 4.71238 [node name="Lamppost3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1925, 775 ) rotation = 3.92699 [node name="Lamppost4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2275, 425 ) rotation = 0.785397 [node name="PineTree" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2700, 1050 ) rotation = 1.23394 scale = Vector2( 0.3, 0.3 ) [node name="PineTree3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2500, 1350 ) rotation = -1.91986 scale = Vector2( 0.3, 0.3 ) [node name="PineTree2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2700, 1350 ) rotation = 1.83259 scale = Vector2( 0.35, 0.35 ) [node name="PineTree4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2500, 1050 ) rotation = -1.309 scale = Vector2( 0.35, 0.35 ) [node name="PineTree11" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2300, 550 ) rotation = 1.81161 [node name="PineTree5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2800, 200 ) rotation = -2.96706 scale = Vector2( 0.35, 0.35 ) [node name="PineTree8" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2200, 400 ) rotation = 0.174533 scale = Vector2( 0.35, 0.35 ) [node name="PineTree10" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1900, 575 ) rotation = -1.38494 scale = Vector2( 0.3, 0.3 ) [node name="PineTree9" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2000, 800 ) rotation = -2.96706 scale = Vector2( 0.35, 0.35 ) [node name="PineTree7" parent="Details" instance=ExtResource( 10 )] position = Vector2( 3000, 200 ) rotation = 2.96706 scale = Vector2( 0.35, 0.35 ) [node name="PineTree6" parent="Details" instance=ExtResource( 10 )] modulate = Color( 0.94902, 0.94902, 0.94902, 1 ) position = Vector2( 2900, 200 ) rotation = -3.14159 scale = Vector2( 0.3, 0.3 ) z_index = -30 [node name="Flower" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2500, 1150 ) rotation = -1.57079 palette = 2 [node name="Snowman2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 3050, 0 ) scale = Vector2( -0.3, 0.3 ) [node name="Snowman3" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1900, 700 ) rotation = -1.57079 scale = Vector2( -0.3, 0.3 ) [node name="Bench" parent="Details" instance=ExtResource( 14 )] position = Vector2( 2900, -50 ) scale = Vector2( -1, 1 ) [node name="Bench2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 2150, 850 ) rotation = -3.14159 scale = Vector2( -1, 1 ) [node name="Flower2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2750, 0 ) [node name="Flower3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1900, 450 ) rotation = -1.57079 palette = 3 [node name="Flower4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2250, 800 ) rotation = -3.14159 [node name="Flower5" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2300, 450 ) rotation = -4.71238 palette = 5 ================================================ FILE: src/map/worlds/2C/5.tscn ================================================ [gd_scene load_steps=15 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Snowman.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] __meta__ = { "_edit_lock_": true } [node name="SolidTileMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( 11, -1073741824, 0, 12, -1073741824, 0, 13, -1073741824, 0, 65547, -1073741824, 0, 65548, -1073741824, 0, 65549, -1073741824, 0, 262163, -1073741824, 0, 262164, -1073741824, 0, 262165, -1073741824, 0, 262166, -1073741824, 0, 327699, -1073741824, 0, 327700, -1073741824, 0, 327701, -1073741824, 0, 327702, -1073741824, 0, 393235, -1073741824, 0, 393236, -1073741824, 0, 393237, -1073741824, 0, 393238, -1073741824, 0, 589839, -1073741824, 0, 589840, -1073741824, 0, 655375, -1073741824, 0, 655376, -1073741824, 0, 720911, -1073741824, 0, 720912, -1073741824, 0 ) detail = 2 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( 14, -1610612736, 0, 65550, -1610612736, 0, 131083, 1610612736, 0, 131084, 1610612736, 0, 131085, 1610612736, 0, 524303, 0, 0, 524304, 0, 0, 589841, -1610612736, 0, 655377, -1610612736, 0, 720913, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 1450, 1050 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/2C/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2350, 650 ) dir = 1 can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2250, 350 ) can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1850, 550 ) dir = 3 can_spin = false [node name="Box4" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1850, 650 ) dir = 3 can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 1250, -150 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 1250, 100 ) rotation = -0.785397 scale = Vector2( 0.185311, 0.185311 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1600, 1025 ) rotation = 2.35619 scale = Vector2( 0.378503, 0.378503 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 2100, 550 ) scale = Vector2( 0.384488, 0.384488 ) [node name="Lamppost" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1600, 900 ) [node name="Lamppost2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1375, 175 ) rotation = 2.35619 [node name="PineTree" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1500, 950 ) rotation = -1.22173 [node name="PineTree5" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2000, 700 ) rotation = -2.87979 scale = Vector2( 0.35, 0.35 ) [node name="PineTree6" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2200, 700 ) rotation = 2.87979 scale = Vector2( 0.35, 0.35 ) [node name="PineTree8" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2300, 500 ) rotation = 1.25866 scale = Vector2( 0.35, 0.35 ) [node name="PineTree9" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1925, 425 ) rotation = -0.785397 scale = Vector2( 0.35, 0.35 ) [node name="PineTree3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1150, 0 ) rotation = -0.174533 scale = Vector2( 0.3, 0.3 ) [node name="PineTree4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1350, 1.41561e-05 ) rotation = 0.174533 scale = Vector2( 0.3, 0.3 ) [node name="PineTree2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1500, 1150 ) rotation = -1.91986 [node name="Bench" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1050, 100 ) rotation = -1.57079 scale = Vector2( -1, 1 ) [node name="Bench2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2100, 750 ) rotation = -3.14159 scale = Vector2( -1, 1 ) [node name="Flower" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1600, 1200 ) rotation = -3.14159 palette = 2 [node name="Flower2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1250, 0 ) rotation = -6.28318 [node name="Flower4" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2150, 400 ) rotation = -6.28318 palette = 3 [node name="Flower5" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1900, 550 ) rotation = -1.57079 palette = 4 [node name="Snowman" parent="Details" instance=ExtResource( 14 )] position = Vector2( 2000, 400 ) scale = Vector2( -0.3, 0.3 ) [node name="Candle" parent="Details" instance=ExtResource( 15 )] position = Vector2( 2300, 550 ) rotation = 1.57079 ================================================ FILE: src/map/worlds/2C/6.tscn ================================================ [gd_scene load_steps=15 format=2] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=6] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/PineTree.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Snowman.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] __meta__ = { "_edit_lock_": true } [node name="SolidTileMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( 28, 1610612736, 0, 29, 1610612736, 0, 30, 1610612736, 0, 65564, -1073741824, 0, 65565, -1073741824, 0, 65566, -1073741824, 0, 131100, -1073741824, 0, 131101, -1073741824, 0, 131102, -1073741824, 0, 262163, -1073741824, 0, 262164, -1073741824, 0, 262165, -1073741824, 0, 262166, -1073741824, 0, 327699, -1073741824, 0, 327700, -1073741824, 0, 327701, -1073741824, 0, 327702, -1073741824, 0, 393235, -1073741824, 0, 393236, -1073741824, 0, 393237, -1073741824, 0, 393238, -1073741824, 0, 458771, -1073741824, 0, 458772, -1073741824, 0, 458773, -1073741824, 0, 458774, -1073741824, 0, 851993, 1610612736, 0, 851994, 1610612736, 0, 851995, 1610612736, 0, 917529, 1610612736, 0, 917530, 1610612736, 0, 917531, 1610612736, 0, 983065, 1610612736, 0, 983066, 1610612736, 0, 983067, 1610612736, 0 ) detail = 2 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( 27, -1073741824, 0, 65563, -1073741824, 0, 131099, -1073741824, 0, 196636, 1610612736, 0, 196637, 1610612736, 0, 196638, 1610612736, 0, 786457, 0, 0, 786458, 0, 0, 786459, 0, 0, 851992, -1073741824, 0, 917528, -1073741824, 0, 983064, -1073741824, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 2850, 1450 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/2C/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2050, 350 ) can_spin = false [node name="Box2" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2050, 850 ) dir = 2 can_spin = false [node name="Box3" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2350, 450 ) dir = 1 can_spin = false [node name="Box4" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 2350, 750 ) dir = 1 can_spin = false [node name="Goal" parent="Actors" instance=ExtResource( 7 )] position = Vector2( 2950, -150 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 2650, 1450 ) rotation = -0.785397 scale = Vector2( 0.316908, 0.316908 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 2035, 535 ) scale = Vector2( 0.3, 0.3 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 2175, 675 ) rotation = 1.57079 scale = Vector2( 0.333, 0.333 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 2950, 150 ) scale = Vector2( 0.375362, 0.375362 ) [node name="PineTree" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2650, 1300 ) rotation = 0.148962 scale = Vector2( 0.45, 0.45 ) [node name="PineTree4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2950, 300 ) rotation = 3.22886 scale = Vector2( 0.45, 0.45 ) [node name="PineTree6" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2850, -1.52588e-05 ) rotation = -0.174533 scale = Vector2( 0.3, 0.3 ) [node name="PineTree7" parent="Details" instance=ExtResource( 10 )] position = Vector2( 3050, 5.47469e-05 ) rotation = 0.174533 scale = Vector2( 0.3, 0.3 ) [node name="PineTree5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2800, 150 ) rotation = -1.65806 scale = Vector2( 0.45, 0.45 ) [node name="PineTree2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2500, 1450 ) rotation = -1.73226 scale = Vector2( 0.45, 0.45 ) [node name="PineTree3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2200, 800 ) rotation = -3.53059 [node name="PineTree11" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2200, 400 ) rotation = -5.93693 scale = Vector2( 0.3, 0.3 ) [node name="PineTree9" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1900, 750 ) rotation = -1.8326 scale = Vector2( 0.3, 0.3 ) [node name="PineTree10" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1900, 450 ) rotation = -1.309 scale = Vector2( 0.3, 0.3 ) [node name="PineTree8" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2300, 550 ) rotation = -4.3838 [node name="Lamppost" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2525, 1325 ) rotation = -0.785397 [node name="Lamppost3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1900, 600 ) rotation = -1.57079 [node name="Lamppost2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2825, 275 ) rotation = -2.35619 [node name="Bench" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2700, 1650 ) rotation = 3.14159 scale = Vector2( -1, 1 ) [node name="Bench2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 3150, 200 ) rotation = 1.57079 [node name="Snowman" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2575, 1600 ) rotation = 3.14159 scale = Vector2( -0.3, 0.3 ) [node name="Snowman2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 3100, 75 ) rotation = 1.57079 scale = Vector2( 0.3, 0.3 ) [node name="Candle" parent="Details" instance=ExtResource( 14 )] position = Vector2( 2800, 1550 ) rotation = 1.57079 [node name="Flower" parent="Details" instance=ExtResource( 15 )] position = Vector2( 2800, 1350 ) rotation = 1.57079 palette = 4 [node name="Flower5" parent="Details" instance=ExtResource( 15 )] position = Vector2( 2150, 800 ) rotation = 3.14159 [node name="Flower6" parent="Details" instance=ExtResource( 15 )] position = Vector2( 2150, 400 ) rotation = 6.28318 palette = 5 [node name="Flower2" parent="Details" instance=ExtResource( 15 )] position = Vector2( 2950, 0 ) palette = 2 [node name="Flower3" parent="Details" instance=ExtResource( 15 )] position = Vector2( 1900, 675 ) rotation = -1.57079 palette = 3 [node name="Flower4" parent="Details" instance=ExtResource( 15 )] position = Vector2( 1900, 525 ) rotation = -1.57079 palette = 4 ================================================ FILE: src/map/worlds/3/0_hub.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/door/DoorBig.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=8] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=11] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=12] [sub_resource type="GDScript" id=1] script/source = "extends Node export var is_act := true func _ready(): if !Shared.is_demo and is_act: get_parent().queue_free() " [node name="Map" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 12 )] tile_data = PoolIntArray( 327693, 0, 0, 327694, 0, 0, 393229, 0, 0, 393230, 0, 0, 393233, 0, 0, 458755, 0, 0, 458756, 0, 0, 458765, 0, 0, 458766, 0, 0, 458772, -1610612736, 0, 458773, -1610612736, 0, 524291, 0, 0, 524292, 0, 0, 524293, 0, 0, 524294, 0, 0, 524295, 0, 0, 524296, 0, 0, 524297, 0, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 524308, -1610612736, 0, 524309, -1610612736, 0, 589828, 0, 0, 589829, 0, 0, 589831, 0, 0, 589832, 0, 0, 589833, 0, 0, 589834, 0, 0, 589835, 0, 0, 589836, 0, 0, 589837, 0, 0, 589838, 0, 0, 589844, -1610612736, 0, 589845, -1610612736, 0, 655364, 0, 0, 655365, 0, 0, 655366, 0, 0, 655367, 0, 0, 655368, 0, 0, 655369, 0, 0, 655370, 0, 0, 655371, 1610612736, 0, 720901, 0, 0, 720902, 0, 0, 720904, 0, 0, 720905, 0, 0, 720906, 1610612736, 0, 851966, -1073741824, 0, 851967, -1073741824, 0, 786432, -1073741824, 0, 786437, 0, 0, 786438, 0, 0, 786440, 0, 0, 786441, 0, 0, 786442, 1610612736, 0, 786449, -1610612736, 0, 786450, -1610612736, 0, 786451, -1610612736, 0, 917502, -1073741824, 0, 917503, -1073741824, 0, 851968, -1073741824, 0, 851973, 0, 0, 851974, 0, 0, 851976, 0, 0, 851977, 0, 0, 851978, 1610612736, 0, 851983, 0, 0, 851985, -1610612736, 0, 851986, -1610612736, 0, 851987, -1610612736, 0, 983038, -1610612736, 0, 983039, -1610612736, 0, 917509, 0, 0, 917510, 0, 0, 917512, 0, 0, 917513, 0, 0, 917514, 1610612736, 0, 983045, 0, 0, 983046, 0, 0, 983047, 0, 0, 983048, 0, 0, 983049, 0, 0, 983050, 1610612736, 0, 1048582, 0, 0, 1048583, 0, 0, 1048584, 0, 0, 1048585, 0, 0, 1048586, 1610612736, 0, 1048596, 0, 0, 1048597, 0, 0, 1048598, 0, 0, 1114118, 0, 0, 1114119, 0, 0, 1114120, 0, 0, 1114121, 0, 0, 1114126, 0, 0, 1114127, -1610612736, 0, 1114128, -1610612736, 0, 1114129, -1610612736, 0, 1114132, 0, 0, 1114133, 0, 0, 1114134, 0, 0, 1179651, 0, 0, 1179652, 0, 0, 1179653, 0, 0, 1179654, 0, 0, 1179655, 0, 0, 1179656, 0, 0, 1179657, 0, 0, 1179662, 0, 0, 1179663, -1610612736, 0, 1179665, -1610612736, 0, 1179668, 0, 0, 1179669, 0, 0, 1245187, 0, 0, 1245188, 1610612736, 0, 1245189, 0, 0, 1245190, 0, 0, 1245191, 0, 0, 1245198, 0, 0, 1245199, -1610612736, 0, 1245200, -1610612736, 0, 1245201, -1610612736, 0, 1245204, 0, 0, 1245205, 0, 0, 1245206, 0, 0, 1245207, 0, 0, 1310723, 0, 0, 1310725, 0, 0, 1310726, 0, 0, 1310727, 0, 0, 1310731, 1610612736, 0, 1310742, 0, 0, 1310743, 0, 0, 1376259, 0, 0, 1376260, 0, 0, 1376261, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507340, 0, 0, 1507341, -1610612736, 0, 1507342, -1610612736, 0, 1507343, -1610612736, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1572872, 0, 0, 1572873, 0, 0, 1572876, 0, 0, 1572877, 0, 0, 1572878, 0, 0, 1572879, 0, 0, 1572882, 0, 0, 1572883, 0, 0, 1572884, 0, 0, 1572885, 0, 0, 1572888, -1610612736, 0, 1638400, -1610612736, 0, 1638412, -1610612736, 0, 1638413, -1610612736, 0, 1638420, 0, 0, 1638421, 0, 0 ) detail = 3 bg_palette = 3 [node name="SpikeMap" parent="." instance=ExtResource( 2 )] tile_data = PoolIntArray( 327695, -1610612736, 0, 393231, -1610612736, 0, 458767, -1610612736, 0, 524303, -1610612736, 0, 589830, 1610612736, 0, 786430, 0, 0, 786431, 0, 0, 720896, 0, 0, 720903, -1610612736, 0, 851965, -1073741824, 0, 786433, -1610612736, 0, 786439, -1610612736, 0, 917501, -1073741824, 0, 851969, -1610612736, 0, 851975, -1073741824, 0, 983037, -1073741824, 0, 917511, -1073741824, 0, 1048574, 1610612736, 0, 1048575, 1610612736, 0, 1179664, -1073741824, 0, 1310724, 1610612736, 0, 1572864, 0, 0, 1703935, -1073741824, 0, 1638401, -1610612736, 0, 1703936, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="BigDoor" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 900, 700 ) scene_path = "res://src/map/worlds/0/0_hub.tscn" [node name="BigDoor2" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 1200, 1400 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/3B/0_hub.tscn" gem_count = 30 [node name="Door1" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 450, 1500 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3/1.tscn" [node name="Door2" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 250, 2100 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3/2.tscn" [node name="Door3" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1150, 2450 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3/3.tscn" [node name="Door4" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 2000, 2250 ) scene_path = "res://src/map/worlds/3/4.tscn" [node name="Door5" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1950, 1800 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3/5.tscn" [node name="Door6" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1850, 1450 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/3/6.tscn" [node name="Door7" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1950, 850 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3/7.tscn" [node name="NPC" parent="Actors" instance=ExtResource( 9 )] position = Vector2( 1350, 450 ) __meta__ = { "_editor_description_": "" } idle_anim = "idle2" dye = { "eye": 14, "fit": 13, "hair": 11, "skin": 17 } hairstyle_back = 0 hairstyle_front = 10 is_npc = true lines = [ "You found my shortcut!", "I'm watching the door for new friends (:", "I can see it all from up here!", "Which way is up?..", "Spikes! Be careful..", "Have you seen the snow? I hear it's lovely (:" ] greeting = 0 [node name="NPC2" parent="Actors" instance=ExtResource( 9 )] position = Vector2( 1300, 2250 ) __meta__ = { "_editor_description_": "" } idle_anim = "ponder" dye = { "eye": 0, "fit": 18, "hair": 11, "skin": 16 } hairstyle_back = 3 hairstyle_front = 10 is_npc = true lines = [ "Me and my twin!", "This flower matches my hair (=", "What brings you out to the desert?", "Are you a gem collector too?", "Free hugs! Hope you like pricklies (;", "I love twirling the petals around!" ] [node name="NPC3" parent="Actors" instance=ExtResource( 9 )] position = Vector2( 450, 1250 ) __meta__ = { "_editor_description_": "" } dir = 3 dye = { "eye": 13, "fit": 10, "hair": 15, "skin": 17 } hairstyle_back = 0 hairstyle_front = 10 is_npc = true lines = [ "Welcome to Dry Land!", "Shake my hand! Don't mind the sting", "Watch your head...", "These blocks make my head spin!", "Ooo that cool desert breeze...", "Come to check out the rocks?", "Saguaro-k!" ] greeting = 0 [node name="NPC4" parent="Actors" instance=ExtResource( 9 )] position = Vector2( 1600, 1650 ) __meta__ = { "_editor_description_": "" } dye = { "eye": 10, "fit": 3, "hair": 0, "skin": 6 } hairstyle_back = 6 hairstyle_front = 8 is_npc = true lines = [ "24... 25... 26...", "I've been saving up my gems to open this door!", "I almost have enough...", "Have you seen these rotating blocks? Marvelous..", "Now, how can I reach that gem?...", "I found a smooth rock (:", "Turn this block, push that block over top... hmm", "Bask in the starlight!" ] greeting = 7 [node name="NPC5" parent="Actors" instance=ExtResource( 9 )] position = Vector2( 2250, 2450 ) __meta__ = { "_editor_description_": "" } dir = 1 dye = { "eye": 15, "fit": 18, "hair": 13, "skin": 4 } hairstyle_back = 3 hairstyle_front = 4 is_npc = true lines = [ "Do you have any water?", "It gets a little toasty out here!", "I'm thirsty...", "Have you ever drank from a cactus?", "These spinny blocks are bending my brain 0=", "Look at all the cuute cacti!", "I adore that pink blossom" ] [node name="NPC6" parent="Actors" instance=ExtResource( 9 )] position = Vector2( 250, 1850 ) __meta__ = { "_editor_description_": "" } dir = 3 idle_anim = "ponder" dye = { "eye": 11, "fit": 2, "hair": 0, "skin": 3 } hairstyle_back = 0 hairstyle_front = 3 is_npc = true lines = [ "Psst! Hey...", "Over here kid...", "Notice how all these doors are locked?", "You want em open? You gotta do me a favor...", "You unlock the full game, I unlock these doors!", "Capiche? (;", "Scram kid!", "Act natural...", "I've heard enough outta you!", "The demo's over kid!", "Nothing to see here...", "Hmm... did you find any clocks? (;", "Go on, get the full game!", "So many puzzles ahead! <3" ] greeting = 0 queue_write = "1,2,3,4,5" [node name="Node" type="Node" parent="Actors/NPC6"] script = SubResource( 1 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 950, 975 ) rotation = -0.785397 scale = Vector2( 0.467326, 0.467326 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 800, 1700 ) rotation = -0.785397 scale = Vector2( 0.467326, 0.467326 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 1400, 900 ) rotation = -1.57079 scale = Vector2( 0.173807, 0.173612 ) [node name="Square4" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 1500, 1800 ) rotation = -1.57079 scale = Vector2( 0.173807, 0.173612 ) [node name="Square5" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 2100, 800 ) rotation = -1.57079 scale = Vector2( 0.173807, 0.173612 ) [node name="Square6" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 2100, 2500 ) rotation = -2.35619 scale = Vector2( 0.177769, 0.17757 ) [node name="Square7" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 2100, 1700 ) rotation = -2.35619 scale = Vector2( 0.126804, 0.126662 ) [node name="Square8" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 600, 1100 ) rotation = -1.57079 scale = Vector2( 0.131662, 0.131515 ) [node name="Square9" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 600, 1500 ) rotation = -1.57079 scale = Vector2( 0.131662, 0.131515 ) [node name="Square10" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 650, 1950 ) rotation = -1.57079 scale = Vector2( 0.331732, 0.331361 ) [node name="Rocks9" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1400, 600 ) scale = Vector2( 0.2, 0.2 ) [node name="Rocks10" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 400, 800 ) rotation = -1.57079 scale = Vector2( 0.2, 0.2 ) [node name="Rocks11" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 950, 1500 ) rotation = -1.57079 scale = Vector2( 0.58385, 0.58385 ) [node name="Rocks12" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1900, 2400 ) rotation = -1.57079 scale = Vector2( 0.2, 0.2 ) [node name="Rocks13" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 2300, 2000 ) rotation = 1.57079 scale = Vector2( 0.2, 0.2 ) [node name="Rocks14" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1900, 1300 ) scale = Vector2( 0.2, 0.2 ) [node name="Rocks15" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 950, 1300 ) rotation = 1.57081 scale = Vector2( 0.58385, 0.58385 ) [node name="Rocks16" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 400, 2200 ) rotation = 2.8798 scale = Vector2( 0.2, 0.2 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( -100, 1300 ) scale = Vector2( 0.2, 0.2 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 1300, 2400 ) scale = Vector2( 0.146224, 0.146224 ) [node name="Saguaro" parent="Details" instance=ExtResource( 7 )] position = Vector2( 740, 800 ) rotation = -0.0349066 z_index = -15 [node name="Saguaro3" parent="Details" instance=ExtResource( 7 )] position = Vector2( 310, 710 ) rotation = -0.785397 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro4" parent="Details" instance=ExtResource( 7 )] position = Vector2( 10, 1410 ) rotation = 2.35619 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro18" parent="Details" instance=ExtResource( 7 )] position = Vector2( 500, 1350 ) rotation = 4.97418 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro5" parent="Details" instance=ExtResource( 7 )] position = Vector2( 300, 2200 ) rotation = 4.66026 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro6" parent="Details" instance=ExtResource( 7 )] position = Vector2( 900, 2300 ) rotation = 0.212938 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro8" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1100, 1175 ) rotation = 1.9635 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro9" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1100, 1625 ) rotation = 1.1781 z_index = -15 [node name="Saguaro10" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1490, 990 ) rotation = 2.88214 z_index = -15 [node name="Saguaro11" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1400, 1900 ) rotation = 4.9921 scale = Vector2( -0.4, 0.4 ) z_index = -15 [node name="Saguaro7" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1650, 2000 ) rotation = 2.81336 [node name="Saguaro13" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1700, 1350 ) rotation = -2.47864 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro14" parent="Details" instance=ExtResource( 7 )] position = Vector2( 2200, 1600 ) rotation = 0.185385 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro17" parent="Details" instance=ExtResource( 7 )] position = Vector2( 2200, 850 ) rotation = 1.32761 [node name="Saguaro15" parent="Details" instance=ExtResource( 7 )] position = Vector2( 2490, 2490 ) rotation = 2.35915 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro16" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1500, 2500 ) rotation = 3.4137 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro2" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1060, 800 ) rotation = 0.0349066 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro12" parent="Details" instance=ExtResource( 7 )] position = Vector2( 1425, 500 ) rotation = -0.233925 [node name="BarrelCacti" parent="Details" instance=ExtResource( 4 )] position = Vector2( 600, 750 ) [node name="BarrelCacti2" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1200, 750 ) palette = 2 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1250, 600 ) rotation = -1.57079 palette = 4 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 4 )] position = Vector2( 250, 800 ) rotation = -1.57079 palette = 5 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 4 )] position = Vector2( 375, 1125 ) rotation = -2.35619 palette = 0 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 4 )] position = Vector2( 550, 1700 ) rotation = -1.57079 [node name="BarrelCacti7" parent="Details" instance=ExtResource( 4 )] position = Vector2( 400, 1750 ) palette = 2 [node name="BarrelCacti8" parent="Details" instance=ExtResource( 4 )] position = Vector2( 250, 2000 ) rotation = -1.57079 palette = 4 [node name="BarrelCacti9" parent="Details" instance=ExtResource( 4 )] position = Vector2( 450, 2350 ) rotation = -3.14159 [node name="BarrelCacti10" parent="Details" instance=ExtResource( 4 )] position = Vector2( 650, 2150 ) rotation = -3.92699 palette = 2 [node name="BarrelCacti11" parent="Details" instance=ExtResource( 4 )] position = Vector2( 850, 2000 ) rotation = -4.71238 palette = 4 [node name="BarrelCacti22" parent="Details" instance=ExtResource( 4 )] position = Vector2( 775, 2525 ) rotation = -2.35619 palette = 4 [node name="BarrelCacti23" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1225, 2125 ) rotation = -3.92699 [node name="BarrelCacti24" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1450, 2250 ) rotation = -6.28318 palette = 2 [node name="BarrelCacti25" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1750, 2450 ) rotation = -7.85397 [node name="BarrelCacti26" parent="Details" instance=ExtResource( 4 )] position = Vector2( 2100, 2650 ) rotation = -9.42476 palette = 2 [node name="BarrelCacti27" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1975, 2025 ) rotation = -2.35619 palette = 4 [node name="BarrelCacti28" parent="Details" instance=ExtResource( 4 )] position = Vector2( 2325, 1825 ) rotation = 2.35619 [node name="BarrelCacti12" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1150, 1525 ) rotation = -4.71238 palette = 4 [node name="BarrelCacti13" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1150, 1275 ) rotation = -4.71238 [node name="BarrelCacti14" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1350, 1050 ) rotation = -3.14159 palette = 5 [node name="BarrelCacti15" parent="Details" instance=ExtResource( 4 )] position = Vector2( 3050, 1200 ) rotation = -1.57079 palette = 2 [node name="BarrelCacti16" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1450, 1650 ) palette = 2 [node name="BarrelCacti17" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1750, 1650 ) palette = 3 [node name="BarrelCacti18" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1950, 1650 ) rotation = -1.57079 palette = 2 [node name="BarrelCacti19" parent="Details" instance=ExtResource( 4 )] position = Vector2( 2100, 1050 ) rotation = -3.14159 palette = 2 [node name="BarrelCacti20" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1850, 1150 ) rotation = -6.28318 palette = 4 [node name="BarrelCacti21" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1850, 650 ) rotation = -4.71238 palette = 3 [node name="Candle" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1300, 700 ) rotation = -1.57079 [node name="Candle2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 450, 700 ) [node name="Candle3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 810, 2310 ) rotation = -0.785397 [node name="Candle4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1550, 2000 ) rotation = -3.14159 [node name="Candle5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1000, 1800 ) rotation = 1.57079 [node name="Candle6" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1500, 1350 ) rotation = -1.5708 [node name="Lamppost" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1750, 700 ) rotation = 3.14159 [node name="Lamppost2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2200, 2000 ) rotation = 3.92699 [node name="Lamppost3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 1900 ) rotation = 4.71238 [node name="Lamppost4" parent="Details" instance=ExtResource( 11 )] position = Vector2( -200, 1200 ) rotation = 5.49778 ================================================ FILE: src/map/worlds/3/1.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/SignSpin.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=14] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 7 )] tile_data = PoolIntArray( -589826, -1073741824, 0, -589825, -1073741824, 0, -655360, -1073741824, 0, -655359, -1073741824, 0, -655358, -1073741824, 0, -655357, -1073741824, 0, -655356, -1073741824, 0, -655355, -1073741824, 0, -655354, -1073741824, 0, -655353, -1073741824, 0, -655352, -1073741824, 0, -524290, 1610612736, 0, -524289, 0, 0, -589824, 1610612736, 0, -589823, 1610612736, 0, -589822, 1610612736, 0, -589821, 1610612736, 0, -589820, 1610612736, 0, -589819, 1610612736, 0, -589818, 1610612736, 0, -589817, 1610612736, 0, -589816, -1073741824, 0, -458754, 1610612736, 0, -458753, 0, 0, -524281, 1610612736, 0, -524280, -1073741824, 0, -393218, 1610612736, 0, -393217, 0, 0, -458745, 1610612736, 0, -458744, -1073741824, 0, -327685, -1073741824, 0, -327684, -1073741824, 0, -327683, 1610612736, 0, -327682, 1610612736, 0, -327681, 0, 0, -393209, 1610612736, 0, -393208, -1073741824, 0, -262149, -1073741824, 0, -262148, -1073741824, 0, -262147, 0, 0, -262146, 0, 0, -262145, 0, 0, -327680, 0, 0, -327679, 0, 0, -327678, 0, 0, -327677, 0, 0, -327673, 1610612736, 0, -327672, -1073741824, 0, -196613, -1073741824, 0, -196612, 0, 0, -196611, 0, 0, -262142, 0, 0, -262141, 0, 0, -262137, 1610612736, 0, -262136, -1073741824, 0, -131077, -1073741824, 0, -131076, 0, 0, -196606, 0, 0, -196605, 0, 0, -196601, 1610612736, 0, -196600, -1073741824, 0, -65541, -1073741824, 0, -65540, 0, 0, -131070, 0, 0, -131069, 0, 0, -131065, 1610612736, 0, -131064, -1073741824, 0, -5, -1073741824, 0, -4, 0, 0, -65529, 1610612736, 0, -65528, -1073741824, 0, 65531, -1073741824, 0, 65532, 0, 0, 65533, 0, 0, 7, 1610612736, 0, 8, -1073741824, 0, 131067, -1073741824, 0, 131068, -1610612736, 0, 131069, 0, 0, 131070, 0, 0, 131071, 0, 0, 65536, 0, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 65541, 0, 0, 65542, 0, 0, 65543, 1610612736, 0, 65544, -1073741824, 0, 196603, -1073741824, 0, 196604, -1073741824, 0, 196605, -1073741824, 0, 196606, -1073741824, 0, 196607, -1073741824, 0, 131072, -1073741824, 0, 131073, -1073741824, 0, 131074, -1073741824, 0, 131075, -1073741824, 0, 131076, -1073741824, 0, 131077, -1073741824, 0, 131078, -1073741824, 0, 131079, -1073741824, 0, 131080, -1073741824, 0 ) detail = 3 bg_palette = 3 [node name="SpikeMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( -655361, 0, 0, -720896, 0, 0, -720895, 0, 0, -720892, 0, 0, -720889, 0, 0, -524291, -1073741824, 0, -589815, -1610612736, 0, -524279, -1610612736, 0, -393220, 0, 0, -458743, -1610612736, 0, -393213, 0, 0, -262135, -1610612736, 0, -131078, -1073741824, 0, -65542, -1073741824, 0, -6, -1073741824, 0, -65527, -1610612736, 0, 9, -1610612736, 0, 196602, -1073741824, 0, 262139, 1610612736, 0, 262143, 1610612736, 0, 196608, 1610612736, 0, 196609, 1610612736, 0, 196613, 1610612736, 0, 196614, 1610612736, 0, 196615, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 450, -250 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/3/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 150, -650 ) [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -50, -350 ) dir = 2 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( -350, 150 ) rotation = -1.57079 scale = Vector2( 0.391769, 0.391769 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 250, 200 ) rotation = -2.35619 scale = Vector2( 0.168683, 0.168683 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( -400, -150 ) rotation = -2.35619 scale = Vector2( 0.168683, 0.168683 ) [node name="Square4" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 800, -150 ) rotation = -2.35619 scale = Vector2( 0.168683, 0.168683 ) [node name="Square5" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 800, -550 ) rotation = -3.14159 scale = Vector2( 0.146077, 0.146077 ) [node name="Square6" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( -85, -885 ) rotation = -0.785397 scale = Vector2( 0.2, 0.2 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 300, -200 ) rotation = 3.14159 scale = Vector2( 0.2, 0.2 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 800, -900 ) rotation = 3.14159 scale = Vector2( 0.338449, 0.338449 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( -350, -450 ) scale = Vector2( 0.411227, 0.411227 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 785, 185 ) scale = Vector2( 0.25559, 0.25559 ) [node name="Circle3" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 400, -900 ) scale = Vector2( 0.201876, 0.201876 ) [node name="SignSpin" parent="Details" instance=ExtResource( 5 )] position = Vector2( -300, -150 ) rotation = 1.48353 [node name="Saguaro" parent="Details" instance=ExtResource( 8 )] position = Vector2( 200, -200 ) rotation = -1.93783 [node name="Saguaro4" parent="Details" instance=ExtResource( 8 )] position = Vector2( -150, 300 ) rotation = -2.93634 [node name="Saguaro5" parent="Details" instance=ExtResource( 8 )] position = Vector2( 350, 300 ) rotation = -3.41494 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro6" parent="Details" instance=ExtResource( 8 )] position = Vector2( 900, -200 ) rotation = -5.11313 [node name="Saguaro7" parent="Details" instance=ExtResource( 8 )] position = Vector2( 300, -1000 ) rotation = -6.04302 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro8" parent="Details" instance=ExtResource( 8 )] position = Vector2( -500, -450 ) rotation = -7.38939 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro2" parent="Details" instance=ExtResource( 8 )] position = Vector2( 500, 100 ) rotation = 0.286639 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro3" parent="Details" instance=ExtResource( 8 )] position = Vector2( 650, -800 ) rotation = -2.59089 [node name="BarrelCacti" parent="Details" instance=ExtResource( 14 )] position = Vector2( 950, -500 ) rotation = 1.57079 [node name="BarrelCacti2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 600, -1050 ) palette = 2 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 14 )] position = Vector2( -250, -700 ) rotation = -1.57079 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 14 )] position = Vector2( -550, 100 ) rotation = -1.57079 palette = 5 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 14 )] position = Vector2( -300, 350 ) rotation = -3.14159 palette = 2 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 14 )] position = Vector2( 950, 200 ) rotation = 1.57079 palette = 3 [node name="BarrelCacti7" parent="Details" instance=ExtResource( 14 )] position = Vector2( 650, -350 ) rotation = 4.71238 palette = 0 [node name="BarrelCacti8" parent="Details" instance=ExtResource( 14 )] position = Vector2( 250, -750 ) rotation = 3.14159 palette = 3 [node name="BarrelCacti9" parent="Details" instance=ExtResource( 14 )] position = Vector2( 50, -550 ) rotation = 1.57079 palette = 4 [node name="BarrelCacti10" parent="Details" instance=ExtResource( 14 )] position = Vector2( 450, -400 ) rotation = 1.57079 palette = 5 [node name="BarrelCacti11" parent="Details" instance=ExtResource( 14 )] position = Vector2( 300, -50 ) rotation = 3.14159 [node name="BarrelCacti12" parent="Details" instance=ExtResource( 14 )] position = Vector2( 150, 50 ) palette = 4 [node name="BarrelCacti13" parent="Details" instance=ExtResource( 14 )] position = Vector2( 50, -350 ) rotation = -3.14159 palette = 2 [node name="Candle" parent="Details" instance=ExtResource( 11 )] position = Vector2( 200, -300 ) rotation = -1.5708 [node name="Candle2" parent="Details" instance=ExtResource( 11 )] position = Vector2( -300, -50 ) rotation = -4.71239 [node name="Candle3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 0, -800 ) rotation = -3.92699 [node name="Candle4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 700, 100 ) rotation = -0.785398 [node name="Lamppost" parent="Details" instance=ExtResource( 12 )] position = Vector2( 50, 300 ) rotation = 3.14159 [node name="Lamppost2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 900, -750 ) rotation = 1.5708 ================================================ FILE: src/map/worlds/3/2.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=12] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 7 )] tile_data = PoolIntArray( -327668, 0, 0, -327667, -1610612736, 0, -327666, -1610612736, 0, -327665, 1610612736, 0, -327664, 1610612736, 0, -327663, 1610612736, 0, -327662, 1610612736, 0, -327661, 1610612736, 0, -262132, 0, 0, -262131, -1610612736, 0, -262130, -1610612736, 0, -262129, 1610612736, 0, -262128, 1610612736, 0, -262127, 1610612736, 0, -262126, 1610612736, 0, -262125, 1610612736, 0, -196596, 0, 0, -196595, -1610612736, 0, -196594, -1610612736, 0, -131060, 0, 0, -131059, -1610612736, 0, -131058, -1610612736, 0, -65524, 0, 0, -65523, -1610612736, 0, -65522, -1610612736, 0, 12, 0, 0, 13, -1610612736, 0, 14, -1610612736, 0, 65548, 0, 0, 65549, 0, 0, 65550, 0, 0 ) detail = 3 bg_palette = 3 [node name="SpikeMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( -393204, 0, 0, -196589, 1610612736, 0, 65551, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1150, -200 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 1650, -650 ) [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 1250, 250 ) dir = 2 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 1350, 50 ) rotation = -1.57079 scale = Vector2( 0.373535, 0.373535 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 5 )] position = Vector2( 1600, -400 ) rotation = 2.3562 scale = Vector2( 0.158957, 0.158957 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 1350, -350 ) rotation = -1.57079 scale = Vector2( 0.368484, 0.368484 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 1900, -400 ) scale = Vector2( 0.17876, 0.17876 ) [node name="Saguaro" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1750, -300 ) rotation = -3.44493 [node name="Saguaro4" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1200, 100 ) rotation = -1.22612 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro2" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1800, -500 ) rotation = 0.261799 [node name="Saguaro3" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1500, -500 ) rotation = -0.261799 scale = Vector2( -0.4, 0.4 ) [node name="BarrelCacti" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1650, -550 ) palette = 0 [node name="BarrelCacti2" parent="Details" instance=ExtResource( 8 )] position = Vector2( 2050, -400 ) rotation = 1.57079 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1550, -250 ) rotation = 2.35619 palette = 4 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1550, 50 ) rotation = 1.57079 palette = 2 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1150, -50 ) rotation = -1.57079 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1150, -400 ) rotation = -1.57079 palette = 5 [node name="Candle" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1500, -100 ) rotation = -4.71239 [node name="Candle2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1350, -500 ) rotation = -6.28319 [node name="Lamppost" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1400, 200 ) rotation = 3.14159 ================================================ FILE: src/map/worlds/3/3.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=12] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 7 )] tile_data = PoolIntArray( -262129, 1610612736, 0, -262128, -1610612736, 0, -196593, 1610612736, 0, -196592, -1610612736, 0, -131057, 1610612736, 0, -131056, -1610612736, 0, -131048, 1610612736, 0, -131047, 1610612736, 0, -131046, 0, 0, -65521, 1610612736, 0, -65520, -1610612736, 0, -65512, 1610612736, 0, -65511, 1610612736, 0, -65510, -1610612736, 0, 15, 1610612736, 0, 16, -1610612736, 0, 24, 1610612736, 0, 25, 1610612736, 0, 26, 0, 0, 65551, 1610612736, 0, 65552, -1610612736, 0, 65553, -1610612736, 0, 65554, -1610612736, 0, 65555, -1610612736, 0, 65556, -1610612736, 0, 65560, 1610612736, 0, 65561, -1610612736, 0, 65562, -1610612736, 0, 131087, 1610612736, 0, 131088, 1610612736, 0, 131089, 1610612736, 0, 131090, 1610612736, 0, 131091, 1610612736, 0, 131092, 1610612736, 0, 131096, 1610612736, 0, 131097, 1610612736, 0, 131098, 1610612736, 0 ) detail = 3 bg_palette = 3 [node name="SpikeMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( -262127, -1610612736, 0, -196584, 0, 0, 196623, 1610612736, 0, 196634, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1450, -50 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 2850, 50 ) [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 1750, -350 ) dir = 1 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 2550, 50 ) rotation = -0.785397 scale = Vector2( 0.320031, 0.320031 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 1600, -300 ) rotation = -1.57079 scale = Vector2( 0.188125, 0.188125 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 1625, 175 ) rotation = 3.14159 scale = Vector2( 0.341297, 0.341297 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 2000, 200 ) scale = Vector2( 0.174067, 0.174067 ) [node name="Saguaro" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1700, 99.9999 ) rotation = 0.664022 [node name="Saguaro4" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1900, 300 ) rotation = 3.4574 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro5" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2700, 150 ) rotation = 2.09439 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro7" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2400, 0.000144958 ) rotation = 4.99789 [node name="Saguaro6" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2700, -49.9999 ) rotation = 1.0472 [node name="Saguaro2" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1500, 200 ) rotation = -1.87824 [node name="Saguaro3" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1500, -300 ) rotation = -1.01137 scale = Vector2( -0.4, 0.4 ) [node name="BarrelCacti" parent="Details" instance=ExtResource( 8 )] position = Vector2( 2150, 200 ) rotation = 1.57079 [node name="BarrelCacti2" parent="Details" instance=ExtResource( 8 )] position = Vector2( 2500, 350 ) rotation = 3.14159 palette = 3 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 8 )] position = Vector2( 2750, 50 ) rotation = 1.57079 palette = 2 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 8 )] position = Vector2( 2600, -250 ) palette = 4 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1600, -450 ) palette = 0 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1450, -200 ) rotation = -1.57079 palette = 4 [node name="BarrelCacti7" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1450, 100 ) rotation = -1.57079 palette = 2 [node name="Candle" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1700, 300 ) rotation = 3.14159 [node name="Candle2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2700, -150 ) rotation = -4.71239 [node name="Lamppost" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2000, 100 ) ================================================ FILE: src/map/worlds/3/4.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=12] [node name="Node2D" type="Node2D"] __meta__ = { "_edit_horizontal_guides_": [ ], "_edit_lock_": true, "_edit_vertical_guides_": [ ] } [node name="SolidTileMap" parent="." instance=ExtResource( 7 )] tile_data = PoolIntArray( -458736, -1610612736, 0, -458735, -1610612736, 0, -458734, -1610612736, 0, -393200, 0, 0, -393199, 0, 0, -393198, 0, 0, -327664, 0, 0, -327663, 0, 0, -327662, 0, 0, -262128, 0, 0, -262127, 0, 0, -262126, 0, 0, -196592, 0, 0, -196591, 0, 0, -196590, 0, 0, -65525, 0, 0, -65524, 0, 0, -65523, 0, 0, 11, 0, 0, 12, 0, 0, 13, 0, 0, 65547, 0, 0, 65548, 0, 0, 65549, 0, 0, 196624, 0, 0, 196625, 0, 0, 196626, 0, 0, 262160, 0, 0, 262161, 0, 0, 262162, 0, 0, 327696, 0, 0, 327697, 0, 0, 327698, 0, 0, 393232, 0, 0, 393233, 0, 0, 393234, 0, 0, 458768, -1610612736, 0, 458769, -1610612736, 0, 458770, -1610612736, 0 ) detail = 3 bg_palette = 3 [node name="SpikeMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( -458737, -1073741824, 0, -196589, -1610612736, 0, 196627, -1610612736, 0, 458767, -1073741824, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1950, 650 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/3/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 1750, -850 ) [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 1550, 750 ) dir = 3 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 1750, 450 ) rotation = -0.785397 scale = Vector2( 0.343654, 0.343654 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 1750, -350 ) rotation = -1.57079 scale = Vector2( 0.375011, 0.375011 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 1800, 700 ) rotation = 1.57079 scale = Vector2( 0.2, 0.2 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 1700, -600 ) rotation = -1.57081 scale = Vector2( 0.2, 0.2 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 1250, 50 ) scale = Vector2( 0.375998, 0.375998 ) [node name="Saguaro" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1400, 0 ) rotation = 1.22173 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro2" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1400, 100 ) rotation = 1.91986 [node name="Saguaro3" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1100, 50 ) rotation = 4.62046 scale = Vector2( 0.35, 0.35 ) [node name="Saguaro4" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1900, 500 ) rotation = 7.59217 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro5" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1600, -450 ) rotation = 5.02199 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro6" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1850, -700 ) rotation = 6.5361 [node name="Saguaro7" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1900, -400 ) rotation = 8.12679 scale = Vector2( -0.35, 0.35 ) [node name="BarrelCacti" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1800, 250 ) [node name="BarrelCacti2" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1550, 550 ) rotation = -1.57079 palette = 3 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1750, 850 ) rotation = -3.14159 palette = 4 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1250, 250 ) rotation = -3.14159 palette = 0 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1250, -150 ) palette = 2 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1550, -300 ) rotation = -1.57079 palette = 5 [node name="BarrelCacti7" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1800, -150 ) rotation = -3.14159 palette = 4 [node name="BarrelCacti8" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1950, -550 ) rotation = -4.71238 palette = 3 [node name="Candle" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1900, 750 ) rotation = 1.5708 [node name="Candle2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1700, -700 ) [node name="Lamppost" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1350, 200 ) rotation = 3.14159 ================================================ FILE: src/map/worlds/3/5.tscn ================================================ [gd_scene load_steps=12 format=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=11] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 7 )] tile_data = PoolIntArray( -524276, -1073741824, 0, -524275, -1073741824, 0, -524274, -1073741824, 0, -524273, -1073741824, 0, -524272, -1073741824, 0, -458740, -1073741824, 0, -458739, -1073741824, 0, -458738, -1073741824, 0, -458737, -1073741824, 0, -458736, -1073741824, 0, -393204, -1073741824, 0, -393203, -1073741824, 0, -393202, -1073741824, 0, -393201, 0, 0, -393200, -1073741824, 0, -327665, 0, 0, -327664, -1073741824, 0, -262135, -1610612736, 0, -262134, -1073741824, 0, -262133, -1073741824, 0, -262129, 0, 0, -262128, -1073741824, 0, -196599, -1610612736, 0, -196598, 0, 0, -196597, 0, 0, -196593, 0, 0, -196592, -1073741824, 0, -131057, 0, 0, -131056, -1073741824, 0, -65521, -1073741824, 0, -65520, -1073741824, 0 ) detail = 3 bg_palette = 3 [node name="SpikeMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( -589812, 0, 0, -524271, -1610612736, 0, -65522, -1073741824, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1750, -350 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/3/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 1500, -950 ) [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 950, -150 ) dir = 2 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 1050, -300 ) rotation = -0.785397 scale = Vector2( 0.168792, 0.168792 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 1550, -650 ) rotation = -1.57079 scale = Vector2( 0.374386, 0.374386 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 1300, -600 ) rotation = -3.14159 scale = Vector2( 0.2, 0.2 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 1600, -100 ) scale = Vector2( 0.201854, 0.201854 ) [node name="Saguaro" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1500, -500 ) rotation = -2.49048 [node name="Saguaro4" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1050, -400 ) rotation = -0.321548 [node name="Saguaro2" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1700, -450 ) rotation = 1.13373 [node name="Saguaro5" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1600, -800 ) rotation = 0.436332 [node name="Saguaro6" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1400, -800 ) rotation = -0.436332 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro3" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1700, -250 ) rotation = 2.00713 scale = Vector2( -0.4, 0.4 ) [node name="BarrelCacti" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1750, -650 ) rotation = 1.57079 [node name="BarrelCacti2" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1500, -850 ) palette = 0 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1150, -700 ) rotation = -1.57079 palette = 3 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 8 )] position = Vector2( 850, -300 ) rotation = -1.57079 palette = 5 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1100, -150 ) rotation = 3.14159 palette = 0 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1450, -200 ) rotation = 4.71238 palette = 2 [node name="BarrelCacti7" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1600, 50 ) rotation = 3.14159 palette = 3 [node name="BarrelCacti8" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1750, -100 ) rotation = 1.57079 palette = 4 [node name="Candle" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1200, -350 ) rotation = 1.5708 [node name="Candle3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1700, -550 ) rotation = 1.5708 [node name="Candle2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1200, -600 ) rotation = -1.5708 ================================================ FILE: src/map/worlds/3/6.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=12] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 7 )] tile_data = PoolIntArray( -524277, -1610612736, 0, -524276, -1610612736, 0, -524275, -1610612736, 0, -524274, -1610612736, 0, -458741, -1610612736, 0, -458740, -1073741824, 0, -458739, -1073741824, 0, -458738, -1073741824, 0, -393205, -1610612736, 0, -393204, -1073741824, 0, -393203, -1073741824, 0, -393202, -1073741824, 0, -327669, -1610612736, 0, -327668, -1073741824, 0, -327667, -1073741824, 0, -327666, -1073741824, 0, -262133, -1610612736, 0, -262132, -1073741824, 0, -262131, -1073741824, 0, -262130, -1073741824, 0, -131058, -1073741824, 0, -131057, -1073741824, 0, -131056, -1073741824, 0, -131055, -1073741824, 0, -131054, -1073741824, 0, -65522, -1073741824, 0, -65521, -1073741824, 0, -65520, -1073741824, 0, -65519, -1073741824, 0, -65518, -1073741824, 0, 14, -1073741824, 0, 15, -1073741824, 0, 16, -1073741824, 0, 17, -1073741824, 0, 18, -1073741824, 0, 65550, -1610612736, 0, 65551, -1610612736, 0, 65552, -1610612736, 0, 65553, -1610612736, 0, 65554, -1610612736, 0 ) detail = 3 bg_palette = 3 [node name="SpikeMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( -524278, -1073741824, 0, -524273, -1610612736, 0, -458742, -1073741824, 0, 65549, -1073741824, 0, 65555, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1650, 250 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/3/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 1300, -950 ) [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 1050, -650 ) dir = 3 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 1650, 0 ) rotation = -0.785397 scale = Vector2( 0.4242, 0.4242 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 1400, -400 ) rotation = 1.57079 scale = Vector2( 0.2, 0.2 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 10 )] position = Vector2( 1500, -100 ) rotation = -1.57081 scale = Vector2( 0.2, 0.2 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 1300, -550 ) scale = Vector2( 0.469114, 0.469114 ) [node name="Saguaro" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1300, -300 ) rotation = 3.59904 [node name="Saguaro4" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1100, -500 ) rotation = -1.2573 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro2" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1650, -200 ) rotation = 6.70674 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro5" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1200, -800 ) rotation = -0.366519 [node name="Saguaro6" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1400, -800 ) rotation = 0.366519 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro3" parent="Details" instance=ExtResource( 5 )] position = Vector2( 1800, 200 ) rotation = 9.08117 [node name="BarrelCacti" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1550, -600 ) rotation = 1.57079 [node name="BarrelCacti2" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1075, -275 ) rotation = -2.35619 palette = 2 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1850, -250 ) palette = 2 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1950, 0 ) rotation = 1.57079 palette = 4 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 8 )] position = Vector2( 1500, 250 ) rotation = 3.14159 palette = 0 [node name="Lamppost" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1400, 50 ) rotation = -1.5708 [node name="Lamppost2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1500, -500 ) rotation = 1.5708 [node name="Candle" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1300, -800 ) [node name="Candle2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1750, 200 ) rotation = -3.14159 ================================================ FILE: src/map/worlds/3/7.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=13] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 7 )] tile_data = PoolIntArray( -327660, 0, 0, -327659, 0, 0, -327658, 0, 0, -327657, 0, 0, -327656, 0, 0, -327655, 0, 0, -327654, 0, 0, -262124, 0, 0, -262123, 0, 0, -262122, 0, 0, -262121, 0, 0, -262120, 0, 0, -262119, 0, 0, -262118, 0, 0, -196583, 0, 0, -196582, 0, 0, -131047, 0, 0, -131046, 0, 0, -65511, 0, 0, -65510, 0, 0, 25, 0, 0, 26, 0, 0, 65561, 0, 0, 65562, 0, 0, 131092, 0, 0, 131093, 0, 0, 131094, 0, 0, 131095, 0, 0, 131096, 0, 0, 131097, 0, 0, 131098, 0, 0, 196628, 0, 0, 196629, 0, 0, 196630, 0, 0, 196631, 0, 0, 196632, 0, 0, 196633, 0, 0, 196634, 0, 0 ) detail = 3 bg_palette = 3 [node name="SpikeMap" parent="." instance=ExtResource( 1 )] tile_data = PoolIntArray( -196588, 1610612736, 0, -196581, -1610612736, 0, -131045, -1610612736, 0, -65509, -1610612736, 0, 27, -1610612736, 0, 65556, 0, 0, 65563, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 2350, 450 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/3/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 2350, -650 ) [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 2050, 150 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 2100, -400 ) rotation = -0.785397 scale = Vector2( 0.188319, 0.188319 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 2585, 285 ) rotation = -1.57079 scale = Vector2( 0.195253, 0.195253 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 9 )] position = Vector2( 2575, -375 ) scale = Vector2( 0.338844, 0.338844 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 6 )] position = Vector2( 2100, 300 ) scale = Vector2( 0.2, 0.2 ) [node name="Saguaro" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2350, 200 ) rotation = -0.523599 [node name="Saguaro3" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2450, 400 ) rotation = -3.49066 [node name="Saguaro5" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2700, 300 ) rotation = 1.13446 [node name="Saguaro6" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2700, -400 ) rotation = 2.00713 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro7" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2450, -500 ) rotation = 0.349066 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro8" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2250, -500 ) rotation = -0.349066 [node name="Saguaro4" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2250, 400 ) rotation = -2.79253 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro2" parent="Details" instance=ExtResource( 5 )] position = Vector2( 2250, -300 ) rotation = -3.66519 [node name="BarrelCacti" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2600, -550 ) [node name="BarrelCacti2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2100, -550 ) palette = 5 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1950, -400 ) rotation = -1.57079 palette = 3 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2150, -250 ) rotation = -3.14159 palette = 4 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2450, 100 ) rotation = -1.57079 palette = 2 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 13 )] position = Vector2( 1950, 300 ) rotation = -1.57079 [node name="BarrelCacti7" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2100, 450 ) rotation = -3.14159 palette = 0 [node name="BarrelCacti8" parent="Details" instance=ExtResource( 13 )] position = Vector2( 2600, 450 ) rotation = -3.14159 palette = 5 [node name="Lamppost" parent="Details" instance=ExtResource( 10 )] position = Vector2( 2700, -50 ) rotation = 1.5708 [node name="Candle" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2350, -500 ) [node name="Candle2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2500, -300 ) rotation = -2.35619 [node name="Candle3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2200, 200 ) ================================================ FILE: src/map/worlds/3A/0_hub.tscn ================================================ [gd_scene load_steps=16 format=2] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=1] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=3] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=4] [ext_resource path="res://src/actor/door/DoorBig.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=6] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=8] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=9] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=14] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=15] [node name="Map" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 9 )] tile_data = PoolIntArray( 196625, 0, 0, 196626, 0, 0, 196627, 0, 0, 196628, 0, 0, 196629, 0, 0, 196630, -1073741824, 0, 262161, 0, 0, 262162, 0, 0, 262163, 0, 0, 262164, 0, 0, 262165, 0, 0, 262166, -1073741824, 0, 327697, 0, 0, 327698, 0, 0, 327699, -1073741824, 0, 393232, 0, 0, 393233, 0, 0, 393234, 0, 0, 393240, 0, 0, 393241, -1073741824, 0, 393242, -1073741824, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 0, 0, 458762, 0, 0, 458763, 0, 0, 458764, 0, 0, 458765, 0, 0, 458766, 0, 0, 458767, 0, 0, 458768, 0, 0, 458769, 0, 0, 458770, 0, 0, 458776, 0, 0, 458777, -1073741824, 0, 458778, -1073741824, 0, 524293, 0, 0, 524294, 0, 0, 524295, 0, 0, 524296, 0, 0, 524297, 0, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 524303, 0, 0, 524304, 0, 0, 524305, 0, 0, 524306, 0, 0, 524312, 0, 0, 524313, -1073741824, 0, 524314, -1073741824, 0, 589829, 0, 0, 589830, 0, 0, 589831, 0, 0, 589832, 0, 0, 589833, 0, 0, 589834, 0, 0, 589835, 0, 0, 589836, 0, 0, 589837, 0, 0, 589838, 0, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 589842, 0, 0, 655365, 0, 0, 655366, 0, 0, 655367, 0, 0, 655372, 0, 0, 655373, 0, 0, 655374, 0, 0, 655375, -1073741824, 0, 720901, 0, 0, 720902, 0, 0, 720909, 0, 0, 720910, 0, 0, 720911, -1073741824, 0, 720919, 0, 0, 720920, -1073741824, 0, 786437, 0, 0, 786438, 0, 0, 786445, 0, 0, 786446, 0, 0, 786447, -1073741824, 0, 786450, 0, 0, 786451, 0, 0, 786452, -1073741824, 0, 786455, 0, 0, 786456, -1073741824, 0, 851981, 0, 0, 851982, 0, 0, 851983, -1073741824, 0, 851986, 0, 0, 851987, 0, 0, 851988, -1073741824, 0, 917522, 0, 0, 917523, 0, 0, 917524, -1073741824, 0 ) bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 7 )] tile_data = PoolIntArray( 131089, 0, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="BigDoor" parent="Actors" instance=ExtResource( 5 )] position = Vector2( 1150, 600 ) scene_path = "res://src/map/worlds/1/0_hub.tscn" [node name="Door1" parent="Actors" instance=ExtResource( 10 )] position = Vector2( 450, 950 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3A/1.tscn" [node name="Door2" parent="Actors" instance=ExtResource( 10 )] position = Vector2( 1050, 1050 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/3A/2.tscn" [node name="Door3" parent="Actors" instance=ExtResource( 10 )] position = Vector2( 1450, 1450 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/3A/3.tscn" [node name="Door4" parent="Actors" instance=ExtResource( 10 )] position = Vector2( 1950, 1150 ) scene_path = "res://src/map/worlds/3A/4.tscn" [node name="Door5" parent="Actors" instance=ExtResource( 10 )] position = Vector2( 2350, 750 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3A/5.tscn" [node name="Door6" parent="Actors" instance=ExtResource( 10 )] position = Vector2( 2050, 250 ) scene_path = "res://src/map/worlds/3A/6.tscn" [node name="NPC" parent="Actors" instance=ExtResource( 15 )] position = Vector2( 1650, 475 ) __meta__ = { "_editor_description_": "" } dir = 3 idle_anim = "idle2" dye = { "eye": 2, "fit": 2, "hair": 1, "skin": 0 } hairstyle_back = 3 hairstyle_front = 4 is_npc = true lines = [ "Good day!", "I lost my colors..", "You look vibrant!", "Have you seen a mirror around here?", "I came here searching for gems (:", "Twist that block.. slide it over there.. hmm", "Have any dye?", "I love these colorful flowers (=" ] greeting = 0 queue_write = "1" [node name="NPC2" parent="Actors" instance=ExtResource( 15 )] position = Vector2( 600, 1350 ) __meta__ = { "_editor_description_": "" } dir = 2 idle_anim = "idle2" dye = { "eye": 18, "fit": 8, "hair": 3, "skin": 4 } hairstyle_back = 2 hairstyle_front = 9 hat = 1 is_npc = true lines = [ "Heellloooo!", "Lighten up!", "Too dark to handle? Bring a candle! (;", "I'm not afraid of the dark anymore!", "I'm Candle Candice! Sorry it doesn't rhyme...", "It's pine-scented! Have a sniff ^.^", "Have you seen Randall? Tell them hiii", "I'll trade you my candle for 50 gems... SIKE!", "Let the flames guide you... (:" ] greeting = 0 [node name="NPC3" parent="Actors" instance=ExtResource( 15 )] position = Vector2( 1950, 865 ) __meta__ = { "_editor_description_": "" } dir = 1 idle_anim = "handstand" dye = { "eye": 0, "fit": 18, "hair": 13, "skin": 11 } hairstyle_back = 3 is_npc = true lines = [ "Hi hi hi!", "I'm training for the handstand olympics (:", "My cousin has been training too..", "I'm staying upside down the longest!!", "Last year I sneezed at the last second..", "This year I'm taking home the gold ;P", "Hold it... hold it... I WILL WIN! (=" ] greeting = 0 [node name="NPC4" parent="Actors" instance=ExtResource( 15 )] position = Vector2( 2025, 1550 ) __meta__ = { "_editor_description_": "" } dir = 2 idle_anim = "ponder" dye = { "eye": 0, "fit": 14, "hair": 18, "skin": 5 } hairstyle_back = 6 hairstyle_front = 10 is_npc = true lines = [ "What's good? ^.^", "These puzzles are twisting me up!", "I can see it all from here (=", "Gaze off with me!", "What does that cloud look like to you?", "Breathe in... Breath out.. *phew* (:", "That one looks like a turtle!! 0=", "I want to float around inside a cloud (=", "If I dive off will the clouds catch me?" ] greeting = 0 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 1225, 850 ) rotation = -1.57079 scale = Vector2( 0.5, 0.5 ) [node name="Rocks5" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 2200, 400 ) scale = Vector2( 0.25, 0.25 ) [node name="Rocks6" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 1075, 850 ) rotation = 1.57081 scale = Vector2( 0.5, 0.5 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 675, 875 ) rotation = -0.785397 scale = Vector2( 0.424714, 0.424714 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 1950, 1350 ) rotation = -0.785397 scale = Vector2( 0.295029, 0.295029 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 1850, 450 ) rotation = -1.57079 scale = Vector2( 0.297613, 0.297613 ) [node name="Square4" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 1450, 1250 ) rotation = -1.57079 scale = Vector2( 0.344161, 0.344161 ) [node name="Square5" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 2550, 750 ) rotation = -1.57079 scale = Vector2( 0.31609, 0.31609 ) [node name="Square6" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 1450, 1025 ) rotation = -1.57079 scale = Vector2( 0.204247, 0.204247 ) [node name="Square7" parent="Details/Rocks" instance=ExtResource( 13 )] position = Vector2( 1450, 850 ) rotation = -1.57079 scale = Vector2( 0.141805, 0.141805 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( 600, 1200 ) scale = Vector2( 0.182734, 0.182734 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( 1725, 825 ) scale = Vector2( 0.463378, 0.463378 ) [node name="Circle3" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( 2400, 1200 ) scale = Vector2( 0.171781, 0.171781 ) [node name="Tree" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1300, 700 ) rotation = -0.0872665 scale = Vector2( -1, 1 ) z_index = -5 [node name="Tree10" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1890, 950 ) rotation = 1.27557 scale = Vector2( -0.9, 0.9 ) z_index = -5 [node name="Tree4" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1500, 700 ) rotation = 0.183197 z_index = -5 palette = 3 [node name="Tree12" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1900, 650 ) rotation = 1.81118 scale = Vector2( -0.9, 0.9 ) z_index = -5 palette = 3 [node name="Tree14" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2400, 1300 ) rotation = 3.26377 z_index = -5 palette = 3 [node name="Tree16" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2475, 1275 ) rotation = 2.35619 scale = Vector2( 0.9, 0.9 ) z_index = -5 [node name="Tree15" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2500, 1200 ) rotation = 1.51844 scale = Vector2( -1, 1 ) z_index = -5 palette = 5 [node name="Tree18" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1950, 1485 ) rotation = 3.22886 scale = Vector2( -1, 1 ) z_index = -5 [node name="Tree19" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2685, 750 ) rotation = 1.48353 z_index = -5 [node name="Tree20" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2300, 400 ) rotation = 1.42419 scale = Vector2( -1, 1 ) z_index = -5 palette = 5 [node name="Tree17" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2200, 300 ) rotation = 0.145818 z_index = -5 palette = 5 [node name="Tree3" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1400, 700 ) rotation = 0.0941446 scale = Vector2( -0.9, 0.9 ) palette = 2 [node name="Tree11" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1900, 800 ) rotation = 1.57079 scale = Vector2( 0.8, 0.8 ) palette = 2 [node name="Tree13" parent="Details" instance=ExtResource( 1 )] position = Vector2( 2100, 500 ) rotation = 2.73145 scale = Vector2( 0.7, 0.7 ) palette = 2 [node name="Tree2" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1000, 700 ) rotation = 0.0872665 z_index = -15 [node name="Tree6" parent="Details" instance=ExtResource( 1 )] position = Vector2( 800, 700 ) rotation = -0.135447 scale = Vector2( -1, 1 ) z_index = -15 palette = 5 [node name="Tree8" parent="Details" instance=ExtResource( 1 )] position = Vector2( 1325, 1300 ) rotation = -1.98151 scale = Vector2( -1, 1 ) z_index = -15 palette = 5 [node name="Tree9" parent="Details" instance=ExtResource( 1 )] position = Vector2( 675, 1275 ) rotation = -3.92699 z_index = -15 palette = 3 [node name="Tree7" parent="Details" instance=ExtResource( 1 )] position = Vector2( 500, 1200 ) rotation = -1.57079 z_index = -15 [node name="Tree5" parent="Details" instance=ExtResource( 1 )] position = Vector2( 925, 700 ) rotation = -0.164582 scale = Vector2( 0.9, 0.9 ) z_index = -20 palette = 2 [node name="Lamppost" parent="Details" instance=ExtResource( 2 )] position = Vector2( 1700, 350 ) rotation = -1.57079 [node name="Lamppost2" parent="Details" instance=ExtResource( 2 )] position = Vector2( 600, 700 ) z_index = -10 [node name="Lamppost3" parent="Details" instance=ExtResource( 2 )] position = Vector2( 1215, 1085 ) rotation = 3.92699 z_index = -10 [node name="Lamppost5" parent="Details" instance=ExtResource( 2 )] position = Vector2( 1600, 1000 ) rotation = 2.35619 z_index = -10 [node name="Lamppost7" parent="Details" instance=ExtResource( 2 )] position = Vector2( 2285, 315 ) rotation = 0.785397 z_index = -10 [node name="Lamppost6" parent="Details" instance=ExtResource( 2 )] position = Vector2( 2315, 1115 ) rotation = 5.49489 z_index = -10 [node name="Lamppost4" parent="Details" instance=ExtResource( 2 )] position = Vector2( 500, 1050 ) rotation = 4.71238 z_index = -10 [node name="Candle3" parent="Details" instance=ExtResource( 6 )] position = Vector2( 2090, 1490 ) rotation = -3.92699 [node name="Candle6" parent="Details" instance=ExtResource( 6 )] position = Vector2( 2410, 610 ) rotation = -0.785397 [node name="Candle5" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1350, 1400 ) rotation = -3.14159 [node name="Candle4" parent="Details" instance=ExtResource( 6 )] position = Vector2( 2690, 890 ) rotation = -3.92699 [node name="Flower" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1700, 600 ) rotation = -0.785397 palette = 5 [node name="Flower3" parent="Details" instance=ExtResource( 3 )] position = Vector2( 700, 700 ) palette = 2 [node name="Flower4" parent="Details" instance=ExtResource( 3 )] position = Vector2( 505, 705 ) rotation = -0.785397 [node name="Flower5" parent="Details" instance=ExtResource( 3 )] position = Vector2( 505, 1290 ) rotation = -2.35619 palette = 4 [node name="Flower10" parent="Details" instance=ExtResource( 3 )] position = Vector2( 2550, 600 ) palette = 3 [node name="Flower11" parent="Details" instance=ExtResource( 3 )] position = Vector2( 2695, 605 ) rotation = 0.785397 palette = 0 [node name="Flower6" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1150, 1000 ) rotation = -3.14159 palette = 3 [node name="Flower7" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1300, 1200 ) rotation = -1.57079 palette = 4 [node name="Flower8" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1600, 1150 ) rotation = -4.71238 palette = 4 [node name="Flower9" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1800, 1000 ) rotation = -3.14159 palette = 3 [node name="Flower2" parent="Details" instance=ExtResource( 3 )] position = Vector2( 1700, 400 ) rotation = -1.57079 [node name="Bench" parent="Details" instance=ExtResource( 4 )] position = Vector2( 450, 800 ) rotation = -1.57079 [node name="Bench2" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1900, 250 ) scale = Vector2( -1, 1 ) [node name="Bench3" parent="Details" instance=ExtResource( 4 )] position = Vector2( 1750, 1400 ) rotation = -1.57079 scale = Vector2( -1, 1 ) [node name="TreeTop" parent="Details" instance=ExtResource( 11 )] position = Vector2( 750, 1050 ) [node name="TreeTop4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1550, 1350 ) scale = Vector2( 0.819379, 0.819379 ) [node name="TreeTop2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2450, 850 ) [node name="TreeTop3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 2050, 1250 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 12 )] position = Vector2( 750, 1200 ) [node name="FlowerPetals2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 850, 1150 ) rotation = -0.785397 palette = 5 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 900, 1050 ) palette = 2 [node name="FlowerPetals4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2050, 1100 ) [node name="FlowerPetals5" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2150, 1150 ) palette = 2 [node name="FlowerPetals6" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2200, 1250 ) palette = 5 [node name="FlowerPetals7" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2150, 1350 ) palette = 3 [node name="FlowerPetals8" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2300, 850 ) palette = 4 [node name="FlowerPetals9" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2350, 950 ) palette = 5 [node name="FlowerPetals10" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2450, 1000 ) palette = 2 [node name="FlowerPetals11" parent="Details" instance=ExtResource( 12 )] position = Vector2( 2550, 950 ) [node name="FlowerPetals12" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1635, 1435 ) rotation = -0.785397 palette = 5 [node name="FlowerPetals14" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1550, 1465 ) palette = 3 [node name="FlowerPetals15" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1665, 1350 ) palette = 2 [node name="FlowerPetals13" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1635, 1265 ) rotation = -0.785397 ================================================ FILE: src/map/worlds/3A/1.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=1] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=3] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=13] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -262151, 1610612736, 0, -262150, 1610612736, 0, -262149, 1610612736, 0, -262148, 1610612736, 0, -262147, 1610612736, 0, -196615, 1610612736, 0, -196614, 1610612736, 0, -196613, 1610612736, 0, -196612, 1610612736, 0, -196611, 1610612736, 0, 196603, -1073741824, 0, 196604, 0, 0, 196605, -1073741824, 0, 196606, -1073741824, 0, 196607, -1073741824, 0, 131072, 0, 0, 262139, 0, 0, 262140, 0, 0, 262141, 0, 0, 262142, 0, 0, 262143, 0, 0, 196608, 0, 0 ) bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 4 )] tile_data = PoolIntArray( -262146, -1610612736, 0, -196610, -1610612736, 0, -131079, 1610612736, 0, 131067, 0, 0, 196602, -1073741824, 0, 131073, -1610612736, 0, 262138, -1073741824, 0, 196609, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -450, -550 ) scene_path = "res://src/map/worlds/3A/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 6 )] position = Vector2( -450, 150 ) [node name="Box2" parent="Actors" instance=ExtResource( 6 )] position = Vector2( 50, 150 ) [node name="Goal" parent="Actors" instance=ExtResource( 3 )] position = Vector2( -200, 550 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( -450, -400 ) rotation = -0.785397 scale = Vector2( 0.2, 0.2 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( -400, 300 ) rotation = 3.14159 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( -3.05176e-05, 300 ) scale = Vector2( 0.251531, 0.251531 ) [node name="Tree" parent="Details" instance=ExtResource( 10 )] position = Vector2( -150, 200 ) rotation = 0.10906 palette = 3 [node name="Tree2" parent="Details" instance=ExtResource( 10 )] position = Vector2( -400, -300 ) rotation = 3.33717 palette = 6 [node name="Tree3" parent="Details" instance=ExtResource( 10 )] position = Vector2( -300, -500 ) rotation = 0.279253 [node name="Tree4" parent="Details" instance=ExtResource( 10 )] position = Vector2( -600, -500 ) rotation = -0.279253 scale = Vector2( -1, 1 ) palette = 5 [node name="Flower" parent="Details" instance=ExtResource( 11 )] position = Vector2( -700, -400 ) rotation = -1.57079 palette = 0 [node name="Flower2" parent="Details" instance=ExtResource( 11 )] position = Vector2( -250, -300 ) rotation = -3.14159 [node name="Flower3" parent="Details" instance=ExtResource( 11 )] position = Vector2( -400, 400 ) rotation = -3.14159 palette = 3 [node name="Lamppost2" parent="Details" instance=ExtResource( 12 )] position = Vector2( -300, 200 ) rotation = -6.28318 [node name="Lamppost3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 0, 400 ) rotation = -9.42476 [node name="TreeTop" parent="Details" instance=ExtResource( 13 )] position = Vector2( -200, 350 ) scale = Vector2( 0.657833, 0.657833 ) ================================================ FILE: src/map/worlds/3A/2.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=13] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -65535, 0, 0, -65534, 0, 0, 1, -1073741824, 0, 2, -1610612736, 0, 65537, -1073741824, 0, 65538, -1610612736, 0, 131073, -1073741824, 0, 131074, -1610612736, 0, 196609, -1073741824, 0, 196610, -1610612736, 0, 327675, 0, 0, 327676, -1610612736, 0, 327677, -1610612736, 0, 327678, -1610612736, 0, 327679, -1610612736, 0, 262144, -1610612736, 0, 262145, -1073741824, 0, 262146, -1610612736, 0, 393211, 0, 0, 393212, -1610612736, 0, 393213, -1610612736, 0, 393214, -1610612736, 0, 393215, -1610612736, 0, 327680, -1610612736, 0, 327681, -1610612736, 0, 327682, -1610612736, 0 ) bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -65533, -1610612736, 0, 262139, 0, 0, 262140, 0, 0, 327683, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( -50, 650 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/3A/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 50, -50 ) dir = 3 [node name="Box2" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -350, 350 ) [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 450, 250 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( -400, 500 ) scale = Vector2( 0.236178, 0.236178 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( -100, 500 ) rotation = 0.785397 scale = Vector2( 0.138564, 0.138564 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 200, 0 ) rotation = -1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 185, 485 ) scale = Vector2( 0.290441, 0.290441 ) [node name="Lamppost" parent="Details" instance=ExtResource( 10 )] position = Vector2( 100, 400 ) rotation = -0.785397 [node name="Lamppost2" parent="Details" instance=ExtResource( 10 )] position = Vector2( -400, 600 ) rotation = -3.14159 [node name="Tree" parent="Details" instance=ExtResource( 11 )] position = Vector2( -200, 400 ) rotation = 0.162296 palette = 5 [node name="Tree2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 100, 600 ) rotation = 2.92466 palette = 6 [node name="Tree4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 350 ) rotation = 1.79981 scale = Vector2( -1, 1 ) [node name="Tree3" parent="Details" instance=ExtResource( 11 )] position = Vector2( -200, 600 ) rotation = 3.35103 scale = Vector2( -1, 1 ) palette = 2 [node name="Bench" parent="Details" instance=ExtResource( 12 )] position = Vector2( -550, 500 ) rotation = -1.57079 [node name="Flower" parent="Details" instance=ExtResource( 13 )] position = Vector2( 100, 150 ) rotation = -1.57079 palette = 2 [node name="Flower2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 200, -100 ) [node name="Flower4" parent="Details" instance=ExtResource( 13 )] position = Vector2( 300, 100 ) rotation = 1.57079 palette = 0 [node name="Flower3" parent="Details" instance=ExtResource( 13 )] position = Vector2( -495, 595 ) rotation = -2.35619 palette = 3 ================================================ FILE: src/map/worlds/3A/3.tscn ================================================ [gd_scene load_steps=12 format=2] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=12] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( 2, 0, 0, 3, -1610612736, 0, 4, -1610612736, 0, 5, 1610612736, 0, 6, -1073741824, 0, 7, -1073741824, 0, 65538, 0, 0, 65539, 0, 0, 65540, 0, 0, 65541, -1610612736, 0, 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, -1610612736, 0, 196610, -1610612736, 0, 196611, 0, 0, 196612, 0, 0, 196613, 1610612736, 0, 262146, -1610612736, 0, 262147, -1610612736, 0, 262148, -1610612736, 0, 262149, 1610612736, 0 ) bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 1, -1073741824, 0, 8, -1610612736, 0, 327684, 1610612736, 0, 327685, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 550, -50 ) scene_path = "res://src/map/worlds/3A/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 150, 450 ) dir = 3 [node name="Box2" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 150, 350 ) dir = 3 [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 750, 250 ) z_index = -5 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 750, 50 ) scale = Vector2( 0.166619, 0.166619 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 300, 100 ) rotation = -1.57079 scale = Vector2( 0.306503, 0.306503 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 450, 350 ) scale = Vector2( 0.443415, 0.443415 ) [node name="Lamppost" parent="Details" instance=ExtResource( 10 )] position = Vector2( 450, 0 ) [node name="Tree" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 0 ) rotation = -0.122037 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 200, 200 ) rotation = -1.37722 [node name="Tree3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 600, 400 ) rotation = 1.74053 scale = Vector2( -1, 1 ) palette = 3 [node name="Flower" parent="Details" instance=ExtResource( 12 )] position = Vector2( 700, 0 ) palette = 2 [node name="Flower3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 200, 450 ) rotation = -1.57079 [node name="Flower2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 605, 105 ) rotation = 2.35619 palette = 0 ================================================ FILE: src/map/worlds/3A/4.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=13] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( 327681, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327687, -1610612736, 0, 327688, -1073741824, 0, 327689, -1073741824, 0, 393217, 0, 0, 393218, -1610612736, 0, 393219, -1610612736, 0, 393220, -1610612736, 0, 393221, -1610612736, 0, 393222, -1610612736, 0, 393223, -1610612736, 0, 393224, -1073741824, 0, 393225, -1073741824, 0, 458753, 0, 0, 458760, 0, 0, 458761, 0, 0, 524289, 0, 0, 524296, 0, 0, 524297, 0, 0, 589825, 0, 0, 589832, -1073741824, 0, 589833, -1073741824, 0, 655361, -1610612736, 0, 655368, -1073741824, 0, 655369, -1073741824, 0, 655370, -1073741824, 0, 655371, -1610612736, 0, 720897, -1610612736, 0, 720904, -1610612736, 0, 720905, -1610612736, 0, 720906, -1610612736, 0, 720907, -1610612736, 0 ) bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 262145, 0, 0, 262152, 0, 0, 262153, 0, 0, 655372, -1610612736, 0, 720896, -1073741824, 0, 720903, -1073741824, 0, 720908, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 1050, 850 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/3A/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 1000, 1350 ) [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 550, 450 ) [node name="Box2" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 450, 450 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 885, 615 ) rotation = -0.785397 scale = Vector2( 0.234231, 0.234231 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 1100, 1100 ) scale = Vector2( 0.166827, 0.166827 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 500, 600 ) scale = Vector2( 0.166827, 0.166827 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 200, 600 ) rotation = -1.57079 scale = Vector2( 0.301826, 0.301826 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 915, 1085 ) scale = Vector2( 0.283619, 0.283619 ) [node name="Lamppost" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1000, 750 ) rotation = 1.57079 [node name="Lamppost2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 500, 700 ) rotation = 3.14159 [node name="Lamppost3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 100, 900 ) rotation = 4.71238 [node name="Tree" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1000, 600 ) rotation = 1.41588 palette = 3 [node name="Tree2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1100, 1200 ) rotation = 2.82259 [node name="Tree7" parent="Details" instance=ExtResource( 11 )] position = Vector2( 100, 750 ) rotation = -1.39626 palette = 2 [node name="Tree3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 500 ) rotation = -0.146757 scale = Vector2( -0.9, 0.9 ) palette = 6 [node name="Tree6" parent="Details" instance=ExtResource( 11 )] position = Vector2( 700, 500 ) rotation = 0.146608 scale = Vector2( 0.9, 0.9 ) [node name="Tree4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 650, 700 ) rotation = -3.28122 palette = 5 [node name="Tree5" parent="Details" instance=ExtResource( 11 )] position = Vector2( 350, 700 ) rotation = -3.00197 scale = Vector2( -1, 1 ) palette = 2 [node name="Flower" parent="Details" instance=ExtResource( 12 )] position = Vector2( 500, 500 ) [node name="Flower2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1150, 1000 ) palette = 3 [node name="Flower3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 100, 600 ) rotation = -1.57079 palette = 2 [node name="Flower4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 200, 1100 ) rotation = 1.57079 palette = 4 [node name="Flower6" parent="Details" instance=ExtResource( 12 )] position = Vector2( 850, 1200 ) rotation = 3.14159 palette = 0 [node name="Flower5" parent="Details" instance=ExtResource( 12 )] position = Vector2( 800, 1050 ) rotation = -1.57079 palette = 2 [node name="Bench" parent="Details" instance=ExtResource( 13 )] position = Vector2( 50, 1000 ) rotation = -1.57079 scale = Vector2( -1, 1 ) ================================================ FILE: src/map/worlds/3A/5.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=1] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=13] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -196604, -1073741824, 0, -196603, 1610612736, 0, -196602, 1610612736, 0, -131068, -1073741824, 0, -131067, -1073741824, 0, -131066, 1610612736, 0, 196604, 0, 0, 196605, -1073741824, 0, 196606, -1073741824, 0, 196607, -1073741824, 0, 131072, 0, 0, 262140, 0, 0, 262141, 0, 0, 262142, 0, 0, 262143, 0, 0, 196608, 0, 0 ) bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -196605, -1073741824, 0, -131069, -1073741824, 0, -65532, 1610612736, 0, -65531, 1610612736, 0, -65530, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( -150, 450 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/3A/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -450, 350 ) dir = 3 [node name="Box2" parent="Actors" instance=ExtResource( 1 )] position = Vector2( 50, 150 ) [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 550, -450 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( -150, 300 ) rotation = -0.785397 scale = Vector2( 0.222428, 0.222428 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( 550, -200 ) scale = Vector2( 0.272401, 0.272401 ) [node name="Lamppost" parent="Details" instance=ExtResource( 8 )] position = Vector2( 75, 225 ) rotation = 0.785397 [node name="Tree" parent="Details" instance=ExtResource( 10 )] position = Vector2( -100, 200 ) rotation = -0.171004 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 700, -200 ) rotation = 1.74533 palette = 5 [node name="Candle" parent="Details" instance=ExtResource( 11 )] position = Vector2( 450, -300 ) [node name="Bench" parent="Details" instance=ExtResource( 13 )] position = Vector2( -300, 450 ) rotation = -3.14159 [node name="Flower" parent="Details" instance=ExtResource( 12 )] position = Vector2( 650, -300 ) palette = 2 [node name="Flower2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 0, 400 ) rotation = -3.14159 palette = 4 [node name="Flower3" parent="Details" instance=ExtResource( 12 )] position = Vector2( -250, 200 ) ================================================ FILE: src/map/worlds/3A/6.tscn ================================================ [gd_scene load_steps=16 format=2] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=15] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=16] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -327679, -1073741824, 0, -327678, -1073741824, 0, -262143, -1610612736, 0, -262142, -1610612736, 0, -196607, -1610612736, 0, -196606, -1610612736, 0, -196605, -1610612736, 0, -196604, -1073741824, 0, -196603, -1073741824, 0, -196602, -1073741824, 0, -131071, -1610612736, 0, -131070, -1610612736, 0, -131069, -1610612736, 0, -131068, -1073741824, 0, -131067, -1073741824, 0, -131066, -1073741824, 0, -65531, -1073741824, 0, -65530, -1073741824, 0, 5, -1073741824, 0, 6, -1073741824, 0, 65541, -1073741824, 0, 65542, -1073741824, 0, 131077, -1610612736, 0, 131078, -1610612736, 0, 262142, 0, 0, 262143, 0, 0, 196608, 0, 0, 196609, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 327678, -1073741824, 0, 327679, -1073741824, 0, 262144, -1073741824, 0, 262145, -1073741824, 0, 262146, -1073741824, 0, 262147, -1073741824, 0, 262148, -1073741824, 0, 262149, -1073741824, 0, 262150, -1073741824, 0 ) bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -327680, -1073741824, 0, -262144, -1073741824, 0, 262141, -1073741824, 0, 327677, -1073741824, 0, 262151, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( 750, 150 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/3A/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 150, -50 ) dir = 2 [node name="Box2" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 450, 250 ) [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 250, 650 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 215, -215 ) rotation = -0.785397 scale = Vector2( 0.25, 0.25 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 250, 400 ) scale = Vector2( 0.187611, 0.187611 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 600, 99.9999 ) scale = Vector2( 0.164584, 0.164584 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 600, 400 ) rotation = -1.57079 scale = Vector2( 0.29437, 0.29437 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( -50, 400 ) scale = Vector2( 0.230477, 0.230477 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 585, -185 ) scale = Vector2( 0.252363, 0.252363 ) [node name="TreeTop" parent="Details" instance=ExtResource( 11 )] position = Vector2( 450, -50 ) [node name="FlowerPetals" parent="Details" instance=ExtResource( 10 )] position = Vector2( 300, -50 ) palette = 3 [node name="FlowerPetals2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 350, 50 ) rotation = -0.785397 palette = 2 [node name="FlowerPetals3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 450, 100 ) palette = 5 [node name="FlowerPetals4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 425, -25 ) rotation = -0.785397 [node name="Lamppost" parent="Details" instance=ExtResource( 13 )] position = Vector2( 250, 300 ) [node name="Lamppost2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 700, 50 ) rotation = 1.57079 [node name="Tree" parent="Details" instance=ExtResource( 12 )] position = Vector2( 100, 300 ) rotation = -0.265848 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 100, -200 ) rotation = -1.78768 [node name="Tree5" parent="Details" instance=ExtResource( 12 )] position = Vector2( 450, -300 ) rotation = 0.258411 scale = Vector2( -1, 1 ) palette = 6 [node name="Tree6" parent="Details" instance=ExtResource( 12 )] position = Vector2( 700, -100 ) rotation = 1.39626 palette = 2 [node name="Tree7" parent="Details" instance=ExtResource( 12 )] position = Vector2( 700, 250 ) rotation = 1.74533 scale = Vector2( -0.9, 0.9 ) palette = 2 [node name="Tree2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 50, 500 ) rotation = -2.96706 [node name="Tree3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 450, 500 ) rotation = -3.31613 scale = Vector2( -1, 1 ) palette = 5 [node name="Flower" parent="Details" instance=ExtResource( 14 )] position = Vector2( 350, 300 ) palette = 4 [node name="Flower2" parent="Details" instance=ExtResource( 14 )] position = Vector2( 250, 500 ) rotation = 3.14159 palette = 0 [node name="Flower3" parent="Details" instance=ExtResource( 14 )] position = Vector2( 300, -400 ) rotation = 1.57079 palette = 2 [node name="Flower4" parent="Details" instance=ExtResource( 14 )] position = Vector2( 700, -250 ) rotation = 1.57079 palette = 3 [node name="Bench" parent="Details" instance=ExtResource( 15 )] position = Vector2( -100, 250 ) scale = Vector2( -1, 1 ) [node name="Candle" parent="Details" instance=ExtResource( 16 )] position = Vector2( -50, 500 ) rotation = -3.14159 [node name="Candle2" parent="Details" instance=ExtResource( 16 )] position = Vector2( 550, 500 ) rotation = -3.14159 [node name="Candle3" parent="Details" instance=ExtResource( 16 )] position = Vector2( 600, -300 ) ================================================ FILE: src/map/worlds/3B/0_hub.tscn ================================================ [gd_scene load_steps=17 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/door/DoorBig.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=14] [ext_resource path="res://src/actor/Player.tscn" type="PackedScene" id=15] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=17] [node name="Map" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -65538, 0, 0, -65537, 0, 0, -131072, 0, 0, -131071, 0, 0, -2, 0, 0, -1, 0, 0, -65536, 0, 0, -65535, 0, 0, 0, 0, 0, 1, 0, 0, 65536, 0, 0, 65537, 0, 0, 65538, 0, 0, 65539, 0, 0, 131073, 0, 0, 131074, -1610612736, 0, 131075, 0, 0, 196609, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, 0, 0, 196616, 0, 0, 196617, 0, 0, 196618, 0, 0, 196619, 0, 0, 196620, 0, 0, 196621, -1073741824, 0, 327678, 0, 0, 327679, 0, 0, 262144, 0, 0, 262145, 0, 0, 262146, 0, 0, 262147, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 262151, 0, 0, 262152, 0, 0, 262156, 0, 0, 262157, -1073741824, 0, 393214, 0, 0, 393215, 0, 0, 327680, 0, 0, 327681, -1073741824, 0, 327682, -1073741824, 0, 327687, -1073741824, 0, 327688, 0, 0, 327689, 0, 0, 327690, -1610612736, 0, 327692, 0, 0, 327693, -1073741824, 0, 393216, 0, 0, 393217, -1073741824, 0, 393218, -1073741824, 0, 393224, -1073741824, 0, 393225, -1073741824, 0, 393226, 0, 0, 393227, -1073741824, 0, 393228, -1073741824, 0, 393229, -1073741824, 0, 458752, 0, 0, 458754, -1073741824, 0, 458760, -1073741824, 0, 458761, -1073741824, 0, 458762, -1073741824, 0, 524288, 0, 0, 524289, -1073741824, 0, 524290, -1073741824, 0, 524296, -1073741824, 0, 524297, -1073741824, 0, 524298, -1073741824, 0, 589824, 0, 0, 589825, -1073741824, 0, 589826, -1073741824, 0, 720904, -1073741824, 0, 786435, 0, 0, 786436, 0, 0, 786437, 0, 0, 786440, -1073741824, 0, 786441, -1073741824, 0, 786442, -1073741824, 0, 851971, -1073741824, 0, 851972, -1073741824, 0, 851973, -1073741824, 0, 851976, -1073741824, 0, 851977, -1073741824, 0, 851978, -1073741824, 0 ) detail = 3 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 3 )] tile_data = PoolIntArray( -196608, 0, 0, -196607, 0, 0, 196610, -1073741824, 0, 262153, -1610612736, 0, 262154, 1610612736, 0, 262155, -1073741824, 0, 327691, 0, 0, 458753, 0, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="DoorBig" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 900, 200 ) scene_path = "res://src/map/worlds/3/0_hub.tscn" [node name="D1" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 1450, 500 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/3B/1.tscn" [node name="D2" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 1250, 750 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/3B/2.tscn" [node name="D3" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 750, 750 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3B/3.tscn" [node name="D4" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 950, 1450 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/3B/4.tscn" [node name="D5" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 450, 1150 ) scene_path = "res://src/map/worlds/3B/5.tscn" [node name="D6" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 350, 850 ) rotation = 1.5708 dir = 1 scene_path = "res://src/map/worlds/3B/6.tscn" [node name="D7" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -50, 750 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3B/7.tscn" [node name="D8" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -50, 350 ) scene_path = "res://src/map/worlds/3B/8.tscn" [node name="NPC" parent="Actors" instance=ExtResource( 15 )] position = Vector2( 250, -110 ) dir = 1 idle_anim = "bench" dye = { "eye": 0, "fit": 16, "hair": 12, "skin": 4 } is_npc = true lines = [ "Can I braid your hair? (:", "Havin a cute sit on a cute bench (;", "Benchy benchy bench... ;P", "Hiii ^.^", "This is my cozy little corner...", "Join me!", "I come here to feel the breeze [:", "Ooo look at that cloud...", "Ahh the sky makes me cry (':" ] greeting = 3 [node name="NPC3" parent="Actors" instance=ExtResource( 15 )] position = Vector2( 1020, 950 ) dir = 2 dye = { "eye": 0, "fit": 14, "hair": 10, "skin": 16 } hairstyle_back = 0 hairstyle_front = 10 is_npc = true lines = [ "I have mastered these twisty blocks (;", "You'll get it eventually!", "I believe in you <3", "Step back and change your perspective (:", "There's always another angle...", "Have you tried the old twisty-slidey?", "I've seen plenty of gems around here (:", "Good luck! ^.^", "Greetings puzzler! [-:" ] greeting = 8 [node name="NPC4" parent="Actors" instance=ExtResource( 15 )] position = Vector2( -250, 450 ) dir = 3 idle_anim = "ponder" dye = { "eye": 5, "fit": 2, "hair": 14, "skin": 6 } hairstyle_back = 0 hairstyle_front = 8 is_npc = true lines = [ "The desert is so peaceful..", "I love these hot days and cool nights (:", "Maybe I'll visit the snow next!", "I've travelled all over ROTA!", "What's your favorite destination? (;", "I'm afraid of heights! 0=", "This last puzzle is a long way down!", "I saw someone levitating blocks! I wonder how..", "How to bridge the gap? hmm..", "Hello friend! (=" ] greeting = 9 [node name="NPC2" parent="Actors" instance=ExtResource( 15 )] position = Vector2( 445, 1450 ) dir = 2 idle_anim = "tree_behind" dye = { "eye": 3, "fit": 3, "hair": 12, "skin": 17 } hairstyle_back = 3 hairstyle_front = 10 is_npc = true lines = [ "My hands are stuck to the pricklies!", "I climbed up here last night...", "Oh! That tickles 0=", "Want to play hide and seek?", "This is my cuddle cactus ;P", "I feel safe here...", "Grab a cactus and cuddle up! (;", "Hey.. up here! (:" ] greeting = 7 ready_z_index = -21 ready_dir_x = -1 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 1300, 500 ) rotation = -0.785397 scale = Vector2( 0.210238, 0.210238 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 450, 1300 ) rotation = -1.57079 scale = Vector2( 0.185535, 0.185535 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 250, 200 ) rotation = -1.57079 scale = Vector2( 0.17978, 0.17978 ) [node name="Square4" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 150, 550 ) rotation = -2.35619 scale = Vector2( 0.342462, 0.342462 ) [node name="Rocks" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 800, 400 ) scale = Vector2( 0.25, 0.25 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 1000, 1300 ) rotation = 1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Rocks7" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 150, 900 ) rotation = 3.14159 scale = Vector2( 0.25, 0.25 ) [node name="Rocks8" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 450, 400 ) rotation = -3.14159 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( 950, 700 ) scale = Vector2( 0.45, 0.45 ) [node name="Circle2" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( -100, 500 ) scale = Vector2( 0.17611, 0.17611 ) [node name="Circle3" parent="Details/Rocks" instance=ExtResource( 14 )] position = Vector2( 85, -85 ) scale = Vector2( 0.225524, 0.225524 ) [node name="Saguaro" parent="Details" instance=ExtResource( 6 )] position = Vector2( 750, 300 ) rotation = -0.0839947 [node name="Saguaro13" parent="Details" instance=ExtResource( 6 )] position = Vector2( 0.00012207, 100 ) rotation = -1.96172 [node name="Saguaro14" parent="Details" instance=ExtResource( 6 )] position = Vector2( -100, -200 ) rotation = 0.261799 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro2" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1050, 300 ) rotation = 0.0837758 scale = Vector2( -0.4, 0.4 ) z_index = -15 [node name="Saguaro4" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1250, 300 ) rotation = -0.163247 scale = Vector2( -0.35, 0.35 ) z_index = -15 [node name="Saguaro5" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1375, 325 ) rotation = 0.785397 z_index = -15 [node name="Saguaro6" parent="Details" instance=ExtResource( 6 )] position = Vector2( 1050, 1200 ) rotation = 0.476518 scale = Vector2( -0.4, 0.4 ) z_index = -15 [node name="Saguaro7" parent="Details" instance=ExtResource( 6 )] position = Vector2( 400, 500 ) rotation = 2.87979 z_index = -15 [node name="Saguaro8" parent="Details" instance=ExtResource( 6 )] position = Vector2( 800, 1150 ) rotation = 5.23598 z_index = -15 [node name="Saguaro10" parent="Details" instance=ExtResource( 6 )] position = Vector2( 350, 1400 ) rotation = 3.25012 z_index = -15 [node name="Saguaro12" parent="Details" instance=ExtResource( 6 )] position = Vector2( 525, 1400 ) rotation = 2.97694 scale = Vector2( -0.4, 0.4 ) z_index = -15 [node name="Saguaro11" parent="Details" instance=ExtResource( 6 )] modulate = Color( 0.9, 0.9, 0.9, 1 ) position = Vector2( 450, 1400 ) rotation = 3.21573 scale = Vector2( 0.35, 0.35 ) z_index = -20 [node name="Saguaro9" parent="Details" instance=ExtResource( 6 )] position = Vector2( 300, 950 ) rotation = 7.61912 scale = Vector2( 0.35, 0.35 ) z_index = -15 [node name="Saguaro3" parent="Details" instance=ExtResource( 6 )] position = Vector2( 550, 300 ) rotation = 0.0721879 scale = Vector2( 0.35, 0.35 ) z_index = -15 [node name="Candle" parent="Details" instance=ExtResource( 9 )] position = Vector2( 1325, 300 ) [node name="Candle2" parent="Details" instance=ExtResource( 9 )] position = Vector2( 850, 1400 ) rotation = 3.14159 [node name="Candle3" parent="Details" instance=ExtResource( 9 )] position = Vector2( 0, 650 ) rotation = 4.71238 [node name="Lamppost" parent="Details" instance=ExtResource( 10 )] position = Vector2( 200, 100 ) rotation = 0.785397 [node name="Lamppost2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1385, 685 ) rotation = 2.35619 [node name="Lamppost3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 715, 585 ) rotation = 3.92699 [node name="Lamppost4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 150, 1000 ) rotation = 3.14159 [node name="Lamppost5" parent="Details" instance=ExtResource( 10 )] position = Vector2( -185, 415 ) rotation = 5.49778 [node name="Bench" parent="Details" instance=ExtResource( 11 )] position = Vector2( 250, -100 ) rotation = 1.57079 scale = Vector2( -1, 1 ) [node name="Bench2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 1150, 1300 ) rotation = 1.57079 [node name="Bench3" parent="Details" instance=ExtResource( 11 )] position = Vector2( -50, 900 ) rotation = -1.57079 scale = Vector2( -1, 1 ) [node name="Flower" parent="Details" instance=ExtResource( 12 )] position = Vector2( 350, 100 ) palette = 3 [node name="Flower3" parent="Details" instance=ExtResource( 12 )] position = Vector2( 300, 750 ) rotation = 1.57079 palette = 3 [node name="Flower4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1050, 1400 ) rotation = 3.14159 [node name="Flower5" parent="Details" instance=ExtResource( 12 )] position = Vector2( 250, 1000 ) rotation = 3.14159 palette = 4 [node name="Flower6" parent="Details" instance=ExtResource( 12 )] position = Vector2( 50, 1000 ) rotation = 3.14159 [node name="Flower7" parent="Details" instance=ExtResource( 12 )] position = Vector2( 100, 300 ) rotation = 4.71238 palette = 3 [node name="Flower2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 1400, 625 ) rotation = 1.57079 palette = 3 [node name="TreeTop" parent="Details" instance=ExtResource( 13 )] position = Vector2( 850, 850 ) scale = Vector2( 0.75, 0.75 ) [node name="FlowerPetals6" parent="Details" instance=ExtResource( 8 )] position = Vector2( 850, 950 ) palette = 3 [node name="FlowerPetals7" parent="Details" instance=ExtResource( 8 )] position = Vector2( 750, 850 ) palette = 4 [node name="FlowerPetals8" parent="Details" instance=ExtResource( 8 )] position = Vector2( 770, 930 ) rotation = -0.785397 palette = 2 [node name="BarrelCacti" parent="Details" instance=ExtResource( 17 )] position = Vector2( 650, 250 ) [node name="BarrelCacti2" parent="Details" instance=ExtResource( 17 )] position = Vector2( 450, 200 ) rotation = 1.57079 palette = 2 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 17 )] position = Vector2( 1150, 250 ) palette = 4 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 17 )] position = Vector2( 1450, 400 ) rotation = 1.57079 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 17 )] position = Vector2( 1150, 850 ) rotation = 1.57079 palette = 5 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 17 )] position = Vector2( 550, 550 ) rotation = 3.14159 [node name="BarrelCacti7" parent="Details" instance=ExtResource( 17 )] position = Vector2( 650, 1300 ) rotation = 1.57079 palette = 5 [node name="BarrelCacti8" parent="Details" instance=ExtResource( 17 )] position = Vector2( 250, 1300 ) rotation = 4.71238 palette = 2 [node name="BarrelCacti9" parent="Details" instance=ExtResource( 17 )] position = Vector2( -150, 650 ) rotation = 3.14159 palette = 5 [node name="BarrelCacti10" parent="Details" instance=ExtResource( 17 )] position = Vector2( -250, 550 ) rotation = 4.71238 palette = 2 [node name="BarrelCacti11" parent="Details" instance=ExtResource( 17 )] position = Vector2( -250, -100 ) rotation = 4.71238 palette = 4 ================================================ FILE: src/map/worlds/3B/1.tscn ================================================ [gd_scene load_steps=11 format=2] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=11] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 5, 0, 0, 6, 0, 0, 7, 0, 0, 65541, -1610612736, 0, 65542, -1610612736, 0, 65543, -1610612736, 0, 458755, -1610612736, 0, 458756, -1610612736, 0, 458757, -1610612736, 0, 524291, 0, 0, 524292, 0, 0, 524293, 0, 0 ) detail = 3 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( 4, -1073741824, 0, 65540, -1073741824, 0, 458754, -1073741824, 0, 458758, -1610612736, 0, 524290, -1073741824, 0, 524294, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 650, 250 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/3B/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 1 )] position = Vector2( 650, -50 ) [node name="Box2" parent="Actors" instance=ExtResource( 1 )] position = Vector2( 650, -150 ) [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 450, 1050 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 450, 800 ) scale = Vector2( 0.215287, 0.215287 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( 650, 100 ) scale = Vector2( 0.249073, 0.249073 ) [node name="Lamppost" parent="Details" instance=ExtResource( 7 )] position = Vector2( 450, 700 ) [node name="Saguaro" parent="Details" instance=ExtResource( 10 )] position = Vector2( 550, 700 ) rotation = 0.383972 [node name="Saguaro2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 350, 700 ) rotation = -0.383972 [node name="BarrelCacti" parent="Details" instance=ExtResource( 11 )] position = Vector2( 350, 950 ) rotation = -3.14159 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 850, 100 ) rotation = 1.5708 palette = 2 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 550, -50 ) palette = 4 [node name="BarrelCacti2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 550, 950 ) rotation = -3.14159 palette = 3 ================================================ FILE: src/map/worlds/3B/2.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=14] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -4, -1073741824, 0, -3, -1073741824, 0, -2, -1073741824, 0, -1, -1073741824, 0, -65536, -1073741824, 0, -65535, -1610612736, 0, 65532, -1073741824, 0, 65533, -1610612736, 0, 65534, -1610612736, 0, 65535, -1610612736, 0, 0, -1610612736, 0, 1, -1610612736, 0, 131068, -1073741824, 0, 131069, -1073741824, 0, 196604, -1073741824, 0, 196605, -1073741824, 0, 262140, -1073741824, 0, 262141, -1073741824, 0, 327676, -1073741824, 0, 327677, 0, 0, 393212, -1073741824, 0, 393213, 1610612736, 0, 393214, -1073741824, 0, 393215, -1073741824, 0, 327680, -1073741824, 0, 327681, -1073741824, 0, 458748, -1073741824, 0, 458749, -1610612736, 0, 458750, -1610612736, 0, 458751, -1610612736, 0, 393216, -1610612736, 0, 393217, -1610612736, 0, 524284, -1610612736, 0, 524285, -1610612736, 0, 524286, -1610612736, 0, 524287, -1610612736, 0, 458752, -1610612736, 0, 458753, -1610612736, 0 ) detail = 3 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -5, -1073741824, 0, -65534, -1610612736, 0, 2, -1610612736, 0, 131071, 1610612736, 0, 589820, 1610612736, 0, 589821, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( -450, 450 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3B/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( -100, -250 ) [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 50, 850 ) dir = 2 [node name="Box2" parent="Actors" instance=ExtResource( 2 )] position = Vector2( 150, 850 ) dir = 2 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( -285, 15 ) rotation = -0.785397 scale = Vector2( 0.22191, 0.22191 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 100, 0 ) scale = Vector2( 0.25, 0.25 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( -275, 675 ) rotation = -3.14159 scale = Vector2( 0.4, 0.4 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 50, 650 ) scale = Vector2( 0.363445, 0.363445 ) [node name="Saguaro" parent="Details" instance=ExtResource( 10 )] position = Vector2( -200, 400 ) rotation = 1.66499 scale = Vector2( 0.35, 0.35 ) [node name="Saguaro2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 50, 100 ) rotation = 2.73456 [node name="Saguaro5" parent="Details" instance=ExtResource( 10 )] position = Vector2( 200, 700 ) rotation = 1.68187 scale = Vector2( -0.35, 0.35 ) [node name="Saguaro6" parent="Details" instance=ExtResource( 10 )] position = Vector2( 1.52588e-05, -100 ) rotation = 0.261799 [node name="Saguaro7" parent="Details" instance=ExtResource( 10 )] position = Vector2( -200, -100 ) rotation = -0.261799 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro3" parent="Details" instance=ExtResource( 10 )] position = Vector2( -400, 50 ) rotation = -1.309 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro4" parent="Details" instance=ExtResource( 10 )] position = Vector2( -400, 250 ) rotation = -1.8326 [node name="Lamppost" parent="Details" instance=ExtResource( 11 )] position = Vector2( -200, 300 ) rotation = 1.57079 [node name="Lamppost2" parent="Details" instance=ExtResource( 11 )] position = Vector2( -400, 150 ) rotation = -1.57079 [node name="Candle" parent="Details" instance=ExtResource( 14 )] position = Vector2( -100, 800 ) rotation = -3.14159 [node name="Candle3" parent="Details" instance=ExtResource( 14 )] position = Vector2( -100, -100 ) rotation = -6.28318 [node name="Candle2" parent="Details" instance=ExtResource( 14 )] position = Vector2( -400, 700 ) rotation = -1.57079 [node name="BarrelCacti" parent="Details" instance=ExtResource( 12 )] position = Vector2( -350, -150 ) [node name="BarrelCacti2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 150, -150 ) palette = 0 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 12 )] position = Vector2( -150, 200 ) rotation = 1.57079 palette = 2 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 12 )] position = Vector2( 250, 600 ) rotation = 1.57079 palette = 3 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 12 )] position = Vector2( 50, 850 ) rotation = 3.14159 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 12 )] position = Vector2( -450, 600 ) rotation = 4.71238 palette = 5 [node name="BarrelCacti7" parent="Details" instance=ExtResource( 12 )] position = Vector2( -450, 350 ) rotation = 4.71238 palette = 4 ================================================ FILE: src/map/worlds/3B/3.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -65540, -1610612736, 0, -65539, -1610612736, 0, -65538, -1610612736, 0, -65537, -1610612736, 0, -131072, -1610612736, 0, -4, 0, 0, -3, -1610612736, 0, -2, 1610612736, 0, -1, 1610612736, 0, -65536, 1610612736, 0, 65532, 0, 0, 65533, -1610612736, 0, 131068, 0, 0, 131069, -1610612736, 0, 196604, 0, 0, 196605, -1610612736, 0, 262140, 0, 0, 262141, -1610612736, 0, 327676, 0, 0, 327677, -1610612736, 0, 393212, -1610612736, 0, 393213, -1610612736, 0, 458748, -1610612736, 0, 458749, -1610612736, 0 ) detail = 3 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -131076, 0, 0, -131071, -1610612736, 0, -65535, -1610612736, 0, 393214, -1610612736, 0, 458750, -1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( -450, 250 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3B/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -150, 150 ) dir = 1 [node name="Box2" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -150, 550 ) dir = 1 [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( -100, -350 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( 0, -100 ) rotation = -0.785397 scale = Vector2( 0.188522, 0.188522 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 1 )] position = Vector2( -300, 600 ) scale = Vector2( 0.165403, 0.165403 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( -300, 250 ) rotation = 3.14159 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( -285, -85 ) scale = Vector2( 0.25, 0.25 ) [node name="Saguaro" parent="Details" instance=ExtResource( 10 )] position = Vector2( -400, 600 ) rotation = -1.74533 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro3" parent="Details" instance=ExtResource( 10 )] position = Vector2( -400, 450 ) rotation = -1.39626 [node name="Saguaro8" parent="Details" instance=ExtResource( 10 )] modulate = Color( 0.9, 0.9, 0.9, 1 ) position = Vector2( -400, -50 ) rotation = -1.39626 [node name="Saguaro4" parent="Details" instance=ExtResource( 10 )] position = Vector2( -200, 250 ) rotation = 1.39626 [node name="Saguaro6" parent="Details" instance=ExtResource( 10 )] position = Vector2( -3.05176e-05, -200 ) rotation = 0.174533 [node name="Saguaro7" parent="Details" instance=ExtResource( 10 )] position = Vector2( -200, -200 ) rotation = -0.174533 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro5" parent="Details" instance=ExtResource( 10 )] position = Vector2( -200, 450 ) rotation = 1.74533 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro2" parent="Details" instance=ExtResource( 10 )] modulate = Color( 0.9, 0.9, 0.9, 1 ) position = Vector2( -400, 550 ) rotation = -1.40282 scale = Vector2( 0.35, 0.35 ) z_index = -10 [node name="Lamppost" parent="Details" instance=ExtResource( 11 )] position = Vector2( -200, 350 ) rotation = 1.57079 [node name="Lamppost2" parent="Details" instance=ExtResource( 11 )] position = Vector2( -400, 50 ) rotation = 4.71238 [node name="Bench" parent="Details" instance=ExtResource( 15 )] position = Vector2( 0, 50 ) rotation = -3.14159 scale = Vector2( -1, 1 ) [node name="Candle" parent="Details" instance=ExtResource( 14 )] position = Vector2( -100, -200 ) [node name="Candle2" parent="Details" instance=ExtResource( 14 )] position = Vector2( -300, 700 ) rotation = 3.14159 [node name="BarrelCacti" parent="Details" instance=ExtResource( 12 )] position = Vector2( -150, 50 ) rotation = 2.35619 palette = 4 [node name="BarrelCacti2" parent="Details" instance=ExtResource( 12 )] position = Vector2( -450, -150 ) rotation = -1.5708 palette = 0 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 12 )] position = Vector2( -450, 150 ) rotation = -1.5708 palette = 2 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 12 )] position = Vector2( -450, 350 ) rotation = -1.5708 ================================================ FILE: src/map/worlds/3B/4.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=1] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=2] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 65530, -1610612736, 0, 65531, -1610612736, 0, 131066, -1610612736, 0, 131067, 0, 0, 196602, -1610612736, 0, 196603, 0, 0, 262138, -1610612736, 0, 262139, -1610612736, 0, 327674, -1610612736, 0, 327675, -1610612736, 0, 393210, -1610612736, 0, 393211, -1610612736, 0, 393212, 0, 0, 393213, 0, 0, 393214, 0, 0, 393215, -1610612736, 0, 327680, -1610612736, 0, 327681, -1610612736, 0, 327682, -1610612736, 0, 327683, -1610612736, 0, 458746, 1610612736, 0, 458747, 1610612736, 0, 458748, 1610612736, 0, 458749, 1610612736, 0, 458750, 1610612736, 0, 458751, 1610612736, 0, 393216, 1610612736, 0, 393217, 1610612736, 0, 393218, 1610612736, 0, 393219, -1073741824, 0, 458754, -1610612736, 0, 458755, -1073741824, 0, 524290, 1610612736, 0, 524291, 1610612736, 0 ) detail = 3 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( 65532, -1610612736, 0, 131068, -1610612736, 0, 327679, 0, 0, 262144, 0, 0, 524282, 1610612736, 0, 589826, 1610612736, 0, 589827, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 3 )] position = Vector2( -650, 350 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3B/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -350, 150 ) dir = 1 [node name="Box2" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -350, 450 ) [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 0, 800 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( -500, 100 ) rotation = -0.785397 scale = Vector2( 0.179728, 0.179728 ) [node name="Square2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 300, 800 ) rotation = -0.785397 scale = Vector2( 0.179728, 0.179728 ) [node name="Square3" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( -500, 350 ) scale = Vector2( 0.141648, 0.141648 ) [node name="Square4" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 300, 600 ) scale = Vector2( 0.141648, 0.141648 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 2 )] position = Vector2( -75, 600 ) rotation = -2.3562 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( -485, 585 ) scale = Vector2( 0.231284, 0.231284 ) [node name="Lamppost" parent="Details" instance=ExtResource( 12 )] position = Vector2( -400, 500 ) rotation = 0.785397 [node name="Saguaro" parent="Details" instance=ExtResource( 13 )] position = Vector2( -400, 250 ) rotation = 1.309 [node name="Saguaro2" parent="Details" instance=ExtResource( 13 )] position = Vector2( -150, 500 ) rotation = 0.261799 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro6" parent="Details" instance=ExtResource( 13 )] position = Vector2( 300, 500 ) rotation = -0.407137 [node name="Saguaro7" parent="Details" instance=ExtResource( 13 )] position = Vector2( 400, 650 ) rotation = 1.35242 [node name="Saguaro8" parent="Details" instance=ExtResource( 13 )] position = Vector2( -600, 500 ) rotation = -1.79769 [node name="Saguaro9" parent="Details" instance=ExtResource( 13 )] position = Vector2( -600, 200 ) rotation = -1.3439 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro3" parent="Details" instance=ExtResource( 13 )] position = Vector2( -350, 700 ) rotation = 3.40339 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro4" parent="Details" instance=ExtResource( 13 )] position = Vector2( -150, 700 ) rotation = 2.87979 [node name="Saguaro5" parent="Details" instance=ExtResource( 13 )] modulate = Color( 0.9, 0.9, 0.9, 1 ) position = Vector2( -250, 700 ) rotation = 3.14205 scale = Vector2( 0.35, 0.35 ) z_index = -10 [node name="Candle" parent="Details" instance=ExtResource( 14 )] position = Vector2( 100, 700 ) rotation = -3.14159 [node name="Candle2" parent="Details" instance=ExtResource( 14 )] position = Vector2( -500, 0 ) rotation = -6.28318 [node name="Bench" parent="Details" instance=ExtResource( 15 )] position = Vector2( 450, 800 ) rotation = 1.57079 [node name="BarrelCacti" parent="Details" instance=ExtResource( 10 )] position = Vector2( 150, 450 ) palette = 2 [node name="BarrelCacti2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 450, 550 ) rotation = 1.57079 palette = 4 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 150, 800 ) rotation = 4.71238 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 10 )] position = Vector2( -450, 750 ) rotation = 3.14159 palette = 3 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 10 )] position = Vector2( -650, 650 ) rotation = 4.71238 palette = 5 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 10 )] position = Vector2( -650, 50 ) rotation = 4.71238 palette = 0 ================================================ FILE: src/map/worlds/3B/5.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -131078, -1073741824, 0, -131077, 1610612736, 0, -131076, 1610612736, 0, -65542, -1073741824, 0, -65541, 1610612736, 0, -6, -1073741824, 0, -5, 1610612736, 0, 65530, -1073741824, 0, 65531, -1073741824, 0, 2, -1073741824, 0, 3, -1073741824, 0, 131066, -1073741824, 0, 131067, -1073741824, 0, 196602, -1073741824, 0, 196603, -1073741824, 0, 196604, -1073741824, 0, 196605, -1073741824, 0, 196606, -1073741824, 0, 196607, -1073741824, 0, 131072, -1073741824, 0, 262138, -1073741824, 0, 262139, -1073741824, 0, 262140, -1073741824, 0, 262141, -1073741824, 0, 262142, -1073741824, 0, 262143, -1073741824, 0, 196608, -1073741824, 0 ) detail = 3 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -131075, -1610612736, 0, 262137, -1073741824, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -250, 450 ) rotation = 3.14159 dir = 2 scene_path = "res://src/map/worlds/3B/0_hub.tscn" [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( -750, 0 ) [node name="Box" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -350, 150 ) [node name="Box2" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -350, -150 ) dir = 2 [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( -485, 285 ) rotation = -0.785397 scale = Vector2( 0.224298, 0.224298 ) [node name="Rocks2" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( -15, 300 ) rotation = 0.785397 scale = Vector2( 0.284271, 0.284271 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( -500, -200 ) scale = Vector2( 0.188624, 0.188624 ) [node name="Candle" parent="Details" instance=ExtResource( 11 )] position = Vector2( 300, 0 ) [node name="Lamppost" parent="Details" instance=ExtResource( 14 )] position = Vector2( -400, 0 ) rotation = 1.57079 [node name="Saguaro" parent="Details" instance=ExtResource( 13 )] position = Vector2( -150, 200 ) rotation = 0.330506 [node name="Saguaro2" parent="Details" instance=ExtResource( 13 )] position = Vector2( -600, -100 ) rotation = -1.309 [node name="Saguaro3" parent="Details" instance=ExtResource( 13 )] position = Vector2( -600, 100 ) rotation = -1.83259 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro4" parent="Details" instance=ExtResource( 13 )] position = Vector2( -350, 400 ) rotation = -2.87979 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro5" parent="Details" instance=ExtResource( 13 )] position = Vector2( -150, 400 ) rotation = -3.40339 [node name="Candle2" parent="Details" instance=ExtResource( 11 )] position = Vector2( -600, 0 ) rotation = -1.57079 [node name="Candle3" parent="Details" instance=ExtResource( 11 )] position = Vector2( -450, 400 ) rotation = -3.14159 [node name="Candle4" parent="Details" instance=ExtResource( 11 )] position = Vector2( -50, 400 ) rotation = -3.14159 [node name="Bench" parent="Details" instance=ExtResource( 15 )] position = Vector2( -400, -350 ) [node name="BarrelCacti" parent="Details" instance=ExtResource( 10 )] position = Vector2( 300, 150 ) rotation = -3.14159 palette = 2 [node name="BarrelCacti2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 150, 300 ) rotation = -4.71238 palette = 0 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 10 )] position = Vector2( -650, 250 ) rotation = -1.57079 palette = 3 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 10 )] position = Vector2( -625, -325 ) rotation = -0.785397 palette = 0 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 10 )] position = Vector2( -250, 150 ) palette = 4 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 10 )] position = Vector2( -350, -100 ) rotation = 1.57079 ================================================ FILE: src/map/worlds/3B/6.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( 589821, -1610612736, 0, 589822, 1610612736, 0, 589823, 1610612736, 0, 524288, 1610612736, 0, 524289, 1610612736, 0, 524290, 1610612736, 0, 524291, 1610612736, 0, 524292, 1610612736, 0, 524293, 1610612736, 0, 524294, 1610612736, 0, 655357, -1610612736, 0, 655358, 1610612736, 0, 655359, 1610612736, 0, 589824, 1610612736, 0, 589825, 1610612736, 0, 589826, 1610612736, 0, 589827, 1610612736, 0, 589828, 1610612736, 0, 589829, 1610612736, 0, 589830, 1610612736, 0, 720893, -1610612736, 0, 720894, 1610612736, 0, 720895, 1610612736, 0, 655364, 1610612736, 0, 655365, 1610612736, 0, 655366, 1610612736, 0, 786429, -1610612736, 0, 786430, 1610612736, 0, 786431, 1610612736, 0, 720900, 1610612736, 0, 720901, 1610612736, 0, 720902, 1610612736, 0, 851965, -1610612736, 0, 851966, 1610612736, 0, 851967, 1610612736, 0 ) detail = 3 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( 524285, 0, 0, 524295, -1610612736, 0, 786438, 1610612736, 0, 917503, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -350, 1050 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3B/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 1 )] position = Vector2( 50, 1050 ) dir = 1 [node name="Box2" parent="Actors" instance=ExtResource( 1 )] position = Vector2( 50, 1250 ) dir = 1 [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 200, 550 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( -150, 1150 ) scale = Vector2( 0.378309, 0.378309 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 550, 1050 ) rotation = 1.57079 scale = Vector2( 0.492633, 0.492633 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( -200, 900 ) rotation = -1.57079 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 200, 900 ) scale = Vector2( 0.160331, 0.160331 ) [node name="Lamppost" parent="Details" instance=ExtResource( 12 )] position = Vector2( 200, 800 ) [node name="Lamppost2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 200, 1000 ) rotation = 3.14159 [node name="Saguaro" parent="Details" instance=ExtResource( 13 )] position = Vector2( 300, 800 ) rotation = 0.261799 [node name="Saguaro5" parent="Details" instance=ExtResource( 13 )] position = Vector2( 550, 800 ) rotation = 0.175308 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro6" parent="Details" instance=ExtResource( 13 )] position = Vector2( -150, 800 ) rotation = -0.174533 [node name="Saguaro7" parent="Details" instance=ExtResource( 13 )] position = Vector2( -150, 1300 ) rotation = 3.49066 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro8" parent="Details" instance=ExtResource( 13 )] position = Vector2( 550, 1200 ) rotation = 2.79253 [node name="Saguaro3" parent="Details" instance=ExtResource( 13 )] modulate = Color( 0.9, 0.9, 0.9, 1 ) position = Vector2( 450, 800 ) rotation = -0.0625762 scale = Vector2( 0.35, 0.35 ) z_index = -10 [node name="Saguaro4" parent="Details" instance=ExtResource( 13 )] modulate = Color( 0.9, 0.9, 0.9, 1 ) position = Vector2( -50, 800 ) rotation = 0.0628318 scale = Vector2( -0.35, 0.35 ) z_index = -10 [node name="Saguaro2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 100, 800 ) rotation = -0.261799 scale = Vector2( -0.4, 0.4 ) [node name="Candle" parent="Details" instance=ExtResource( 14 )] position = Vector2( 700, 950 ) rotation = 1.57079 [node name="Bench" parent="Details" instance=ExtResource( 15 )] position = Vector2( 750, 1100 ) rotation = 1.57079 [node name="BarrelCacti" parent="Details" instance=ExtResource( 10 )] position = Vector2( 650, 750 ) palette = 5 [node name="BarrelCacti2" parent="Details" instance=ExtResource( 10 )] position = Vector2( 450, 1250 ) rotation = -3.14159 palette = 0 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 10 )] position = Vector2( 350, 1050 ) rotation = -2.35619 palette = 4 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 10 )] position = Vector2( 50, 1150 ) rotation = -4.71238 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 10 )] position = Vector2( -350, 1200 ) rotation = -1.57079 palette = 3 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 10 )] position = Vector2( -350, 900 ) rotation = -1.57079 palette = 2 ================================================ FILE: src/map/worlds/3B/7.tscn ================================================ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -131078, 1610612736, 0, -131077, 1610612736, 0, -131076, 1610612736, 0, -131075, 1610612736, 0, -131074, 1610612736, 0, -65542, 0, 0, -65541, 1610612736, 0, -65540, 1610612736, 0, -65539, 1610612736, 0, -65538, 1610612736, 0, -6, 0, 0, -5, 1610612736, 0, 65530, 0, 0, 65531, 1610612736, 0, 131066, 0, 0, 131067, 1610612736, 0, 196602, 0, 0, 196603, 1610612736, 0, 196604, 0, 0, 196605, 0, 0, 196606, 0, 0, 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 262138, 0, 0, 262139, -1073741824, 0, 262140, -1073741824, 0, 262141, -1073741824, 0, 262142, 1610612736, 0, 262143, 1610612736, 0, 196608, 1610612736, 0, 196609, 1610612736, 0, 196610, -1610612736, 0, 196611, -1073741824, 0, 196612, 0, 0, 262147, 1610612736, 0, 262148, 0, 0, 327683, 1610612736, 0, 327684, 1610612736, 0 ) detail = 3 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -131073, -1610612736, 0, -65537, -1610612736, 0, 327674, 1610612736, 0, 393219, 1610612736, 0, 393220, 1610612736, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -650, -150 ) rotation = 4.71239 dir = 3 scene_path = "res://src/map/worlds/3B/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -150, -50 ) dir = 2 [node name="Box2" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -350, 150 ) dir = 1 [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 100, 500 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Rocks3" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( -200, -200 ) rotation = -0.785397 scale = Vector2( 0.191204, 0.191204 ) [node name="Rocks4" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( -200, 300 ) scale = Vector2( 0.165054, 0.165054 ) [node name="Rocks5" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( -500, 300 ) rotation = 3.14159 scale = Vector2( 0.25, 0.25 ) [node name="Rocks6" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( -500, -200 ) rotation = -1.57081 scale = Vector2( 0.25, 0.25 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( 385, 315 ) scale = Vector2( 0.265382, 0.265382 ) [node name="Lamppost" parent="Details" instance=ExtResource( 10 )] position = Vector2( 50, 300 ) [node name="Lamppost2" parent="Details" instance=ExtResource( 10 )] position = Vector2( -600, 50 ) rotation = -1.57079 [node name="Saguaro" parent="Details" instance=ExtResource( 11 )] position = Vector2( -50, 300 ) rotation = -0.136399 [node name="Saguaro3" parent="Details" instance=ExtResource( 11 )] position = Vector2( 50, 400 ) rotation = -2.70526 [node name="Saguaro5" parent="Details" instance=ExtResource( 11 )] position = Vector2( -350, 400 ) rotation = -3.57792 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro6" parent="Details" instance=ExtResource( 11 )] position = Vector2( -600, -50 ) rotation = -1.309 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro7" parent="Details" instance=ExtResource( 11 )] position = Vector2( -200, -300 ) rotation = 0.319037 [node name="Saguaro8" parent="Details" instance=ExtResource( 11 )] position = Vector2( -450, -300 ) rotation = -0.319395 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro2" parent="Details" instance=ExtResource( 11 )] position = Vector2( 150, 300 ) rotation = 0.136136 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro4" parent="Details" instance=ExtResource( 11 )] position = Vector2( 475, 225 ) rotation = 0.708367 [node name="Candle" parent="Details" instance=ExtResource( 12 )] position = Vector2( -395, -95 ) rotation = 2.35619 [node name="Candle2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 300, 500 ) rotation = 4.71238 [node name="Candle3" parent="Details" instance=ExtResource( 12 )] position = Vector2( -400, 400 ) rotation = 3.14159 [node name="Bench" parent="Details" instance=ExtResource( 15 )] position = Vector2( -650, 300 ) rotation = -1.57079 scale = Vector2( -1, 1 ) [node name="Bench2" parent="Details" instance=ExtResource( 15 )] position = Vector2( 550, 500 ) rotation = 1.57079 [node name="BarrelCacti" parent="Details" instance=ExtResource( 13 )] position = Vector2( 550, 350 ) rotation = 1.57079 [node name="BarrelCacti2" parent="Details" instance=ExtResource( 13 )] position = Vector2( 350, 150 ) palette = 5 [node name="BarrelCacti3" parent="Details" instance=ExtResource( 13 )] position = Vector2( -350, 50 ) rotation = 1.57079 palette = 4 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 13 )] position = Vector2( -250, -50 ) rotation = 3.14159 palette = 2 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 13 )] position = Vector2( -325, -350 ) palette = 0 [node name="BarrelCacti6" parent="Details" instance=ExtResource( 13 )] position = Vector2( -625, -325 ) rotation = -0.785397 palette = 3 [node name="BarrelCacti7" parent="Details" instance=ExtResource( 13 )] position = Vector2( -650, 150 ) rotation = -1.57079 [node name="BarrelCacti8" parent="Details" instance=ExtResource( 13 )] position = Vector2( -150, 450 ) rotation = -3.14159 palette = 3 ================================================ FILE: src/map/worlds/3B/8.tscn ================================================ [gd_scene load_steps=14 format=2] [ext_resource path="res://src/actor/Box.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] [ext_resource path="res://src/detail/RockSquare.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Goal.tscn" type="PackedScene" id=4] [ext_resource path="res://src/stage/SpikeMap.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/RockCircle.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Saguaro.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=14] [ext_resource path="res://src/detail/SignZoom.tscn" type="PackedScene" id=15] [ext_resource path="res://src/detail/BarrelCacti.tscn" type="PackedScene" id=16] [node name="Node2D" type="Node2D"] [node name="SolidTileMap" parent="." instance=ExtResource( 6 )] tile_data = PoolIntArray( -262152, 0, 0, -262151, 0, 0, -262150, 0, 0, -196616, 0, 0, -196615, 0, 0, -196614, 0, 0, -131080, 0, 0, -131079, 0, 0, -131078, 0, 0, 327677, 0, 0, 327678, 0, 0, 327679, 0, 0, 262144, 0, 0, 393213, -1610612736, 0, 393214, -1610612736, 0, 393215, -1610612736, 0, 327680, 1610612736, 0, 458749, 1610612736, 0, 458750, 1610612736, 0, 458751, 1610612736, 0, 393216, 1610612736, 0, 524285, -1073741824, 0, 524286, -1073741824, 0, 524287, -1073741824, 0, 458752, -1073741824, 0, 917507, 1610612736, 0, 917508, 1610612736, 0, 983043, 1610612736, 0, 983044, 1610612736, 0, 1048579, 1610612736, 0, 1048580, 1610612736, 0 ) detail = 3 bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 5 )] tile_data = PoolIntArray( -262149, -1610612736, 0, -196613, -1610612736, 0, -131077, -1610612736, 0, -65544, 1610612736, 0, -65543, 1610612736, 0, -65542, 1610612736, 0, 851971, 0, 0, 851972, 0, 0, 917506, -1073741824, 0, 983042, -1073741824, 0, 1048578, -1073741824, 0 ) [node name="Actors" type="Node2D" parent="."] [node name="Door" parent="Actors" instance=ExtResource( 2 )] position = Vector2( -650, -550 ) scene_path = "res://src/map/worlds/3B/0_hub.tscn" [node name="Box" parent="Actors" instance=ExtResource( 1 )] position = Vector2( 150, 550 ) dir = 1 [node name="Box2" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -150, 350 ) [node name="Box3" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -50, 850 ) dir = 2 [node name="Box4" parent="Actors" instance=ExtResource( 1 )] position = Vector2( -350, 650 ) dir = 3 [node name="Goal" parent="Actors" instance=ExtResource( 4 )] position = Vector2( 750, 1550 ) [node name="Details" type="Node2D" parent="."] [node name="Rocks" type="Node2D" parent="Details"] modulate = Color( 0.858824, 0.847059, 0.835294, 1 ) [node name="Square" parent="Details/Rocks" instance=ExtResource( 3 )] position = Vector2( -100, 600 ) rotation = -0.785397 scale = Vector2( 0.429993, 0.426407 ) [node name="Rocks" parent="Details/Rocks" instance=ExtResource( 8 )] position = Vector2( 400, 1530 ) rotation = 2.35619 scale = Vector2( 0.333443, 0.333443 ) [node name="Circle" parent="Details/Rocks" instance=ExtResource( 7 )] position = Vector2( -650, -350 ) scale = Vector2( 0.34626, 0.34626 ) [node name="Lamppost" parent="Details" instance=ExtResource( 13 )] position = Vector2( 500, 1550 ) rotation = 1.57079 [node name="Lamppost2" parent="Details" instance=ExtResource( 13 )] position = Vector2( -800, -350 ) rotation = 4.71238 [node name="Lamppost3" parent="Details" instance=ExtResource( 13 )] position = Vector2( -275, 425 ) rotation = 5.49778 [node name="Lamppost4" parent="Details" instance=ExtResource( 13 )] position = Vector2( 75, 775 ) rotation = 8.63937 [node name="Saguaro" parent="Details" instance=ExtResource( 12 )] position = Vector2( 500, 1650 ) rotation = 2.00713 [node name="Saguaro5" parent="Details" instance=ExtResource( 12 )] position = Vector2( -275, 775 ) rotation = -2.35619 [node name="Saguaro6" parent="Details" instance=ExtResource( 12 )] position = Vector2( 75, 425 ) rotation = -5.49778 [node name="Saguaro7" parent="Details" instance=ExtResource( 12 )] position = Vector2( -50, 400 ) rotation = 0.174533 scale = Vector2( -0.35, 0.35 ) [node name="Saguaro8" parent="Details" instance=ExtResource( 12 )] position = Vector2( -150, 800 ) rotation = 3.31613 scale = Vector2( -0.35, 0.35 ) [node name="Saguaro2" parent="Details" instance=ExtResource( 12 )] position = Vector2( 500, 1450 ) rotation = 1.13446 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro3" parent="Details" instance=ExtResource( 12 )] position = Vector2( -550, -500 ) rotation = 0.349066 scale = Vector2( -0.4, 0.4 ) [node name="Saguaro4" parent="Details" instance=ExtResource( 12 )] position = Vector2( -750, -500 ) rotation = -0.349066 [node name="Bench" parent="Details" instance=ExtResource( 14 )] position = Vector2( -350, 500 ) rotation = -1.57079 scale = Vector2( -1, 1 ) [node name="SignZoom" parent="Details" instance=ExtResource( 15 )] position = Vector2( -800, -450 ) rotation = -1.31133 [node name="BarrelCacti" parent="Details" instance=ExtResource( 16 )] position = Vector2( -850, -250 ) rotation = -1.57079 palette = 2 [node name="BarrelCacti2" parent="Details" instance=ExtResource( 16 )] position = Vector2( -150, 350 ) [node name="BarrelCacti3" parent="Details" instance=ExtResource( 16 )] position = Vector2( 150, 650 ) rotation = 1.57079 palette = 5 [node name="BarrelCacti5" parent="Details" instance=ExtResource( 16 )] position = Vector2( 400, 1750 ) rotation = 3.14159 [node name="BarrelCacti4" parent="Details" instance=ExtResource( 16 )] position = Vector2( -50, 850 ) rotation = 3.14159 palette = 4 ================================================ FILE: src/menu/AttractMode.gd ================================================ extends Node2D onready var p : Player = Shared.player export var is_active := true export var is_trailer := false var clock := 0.0 onready var time := 2.2 if is_trailer else 4.0 var step = -1 func _ready(): p.anim.play("jump") if is_trailer: p.dir_x = -1 elif !is_active: p.dir_x = 1 func _physics_process(delta): if !is_active: return clock += delta if clock > time: clock = 0.0 if is_trailer: step += 1 match step: 0: p.joy = Vector2.LEFT time = 2.51 1: p.joy = Vector2.ZERO time = 2.5 2: p.joy = Vector2.RIGHT time = 2.52 3: p.joy = Vector2.ZERO time = 10.0 else: time = rand_range(1.0, 4.0) if p.joy == Vector2.ZERO: p.joy = Vector2.RIGHT if randf() > 0.5 else Vector2.LEFT else: p.joy = Vector2.ZERO ================================================ FILE: src/menu/DemoShow.gd ================================================ extends CanvasItem export var is_show := true func _ready(): visible = is_show if Shared.is_demo else !is_show ================================================ FILE: src/menu/FileCard.gd ================================================ extends Control export var slot := 0 onready var new_game := $NewGame onready var items := $Items onready var gem_label := $Items/Goals/Gems/Label onready var clocks := $Items/Goals/Clocks onready var clock_label := $Items/Goals/Clocks/Label onready var time_label := $Items/Time/Label var is_new := true func _ready(): set_card() Shared.connect("slot_erased", self, "slot_erased") func set_card(): var d = Shared.save_dict if d.has(slot) and d[slot].has("goals") and d[slot].has("time"): is_new = false var gt = d[slot]["goals"].size() gem_label.text = str(gt) if gt > 0 else "" clock_label.text = str(Shared.collect_clocks(d[slot]["goals"])) clocks.visible = clock_label.text != "0" # time time_label.text = Shared.time_string(d[slot]["time"], 0, true) else: is_new = true new_game.visible = is_new items.visible = !is_new func slot_erased(arg): if arg == slot: set_card() ================================================ FILE: src/menu/FileCard.tscn ================================================ [gd_scene load_steps=6 format=2] [ext_resource path="res://src/actor/Clock.tscn" type="PackedScene" id=1] [ext_resource path="res://src/menu/FileCard.gd" type="Script" id=2] [ext_resource path="res://media/image/UI/clock.png" type="Texture" id=3] [ext_resource path="res://media/font/profile/FileCard.tres" type="DynamicFont" id=4] [ext_resource path="res://src/actor/Gem.tscn" type="PackedScene" id=5] [node name="FileCard" type="Control"] margin_right = 320.0 margin_bottom = 175.0 rect_min_size = Vector2( 350, 175 ) size_flags_horizontal = 4 size_flags_vertical = 4 script = ExtResource( 2 ) [node name="NewGame" type="Label" parent="."] visible = false anchor_right = 1.0 anchor_bottom = 1.0 size_flags_horizontal = 4 custom_fonts/font = ExtResource( 4 ) text = "New" align = 1 valign = 1 [node name="Items" type="VBoxContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 custom_constants/separation = 20 alignment = 1 [node name="Goals" type="HBoxContainer" parent="Items"] margin_left = 58.0 margin_top = 17.0 margin_right = 291.0 margin_bottom = 77.0 size_flags_horizontal = 4 size_flags_vertical = 4 custom_constants/separation = 25 alignment = 1 [node name="Gems" type="HBoxContainer" parent="Items/Goals"] margin_right = 104.0 margin_bottom = 60.0 size_flags_horizontal = 3 size_flags_vertical = 3 custom_constants/separation = 9 alignment = 2 [node name="Label" type="Label" parent="Items/Goals/Gems"] margin_top = 4.0 margin_right = 35.0 margin_bottom = 55.0 size_flags_horizontal = 4 custom_fonts/font = ExtResource( 4 ) text = "0" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Image" type="Control" parent="Items/Goals/Gems"] margin_left = 44.0 margin_right = 104.0 margin_bottom = 60.0 rect_min_size = Vector2( 60, 60 ) size_flags_horizontal = 4 size_flags_vertical = 4 __meta__ = { "_edit_use_anchors_": false } [node name="Gem" parent="Items/Goals/Gems/Image" instance=ExtResource( 5 )] position = Vector2( 30, 30 ) [node name="Clocks" type="HBoxContainer" parent="Items/Goals"] margin_left = 129.0 margin_right = 233.0 margin_bottom = 60.0 size_flags_horizontal = 3 size_flags_vertical = 3 custom_constants/separation = 9 [node name="Image" type="Control" parent="Items/Goals/Clocks"] margin_right = 60.0 margin_bottom = 60.0 rect_min_size = Vector2( 60, 60 ) size_flags_horizontal = 4 size_flags_vertical = 4 __meta__ = { "_edit_use_anchors_": false } [node name="Clock" parent="Items/Goals/Clocks/Image" instance=ExtResource( 1 )] position = Vector2( 30, 30 ) [node name="Label" type="Label" parent="Items/Goals/Clocks"] margin_left = 69.0 margin_top = 4.0 margin_right = 104.0 margin_bottom = 55.0 size_flags_horizontal = 4 custom_fonts/font = ExtResource( 4 ) text = "0" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Time" type="HBoxContainer" parent="Items"] margin_left = 37.0 margin_top = 97.0 margin_right = 313.0 margin_bottom = 157.0 size_flags_horizontal = 4 size_flags_vertical = 4 custom_constants/separation = 9 alignment = 1 [node name="Image" type="Control" parent="Items/Time"] margin_right = 60.0 margin_bottom = 60.0 rect_min_size = Vector2( 60, 60 ) size_flags_horizontal = 4 size_flags_vertical = 4 __meta__ = { "_edit_use_anchors_": false } [node name="TextureRect" type="TextureRect" parent="Items/Time/Image"] anchor_right = 1.0 anchor_bottom = 1.0 texture = ExtResource( 3 ) expand = true __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Items/Time"] margin_left = 69.0 margin_top = 4.0 margin_right = 276.0 margin_bottom = 55.0 size_flags_horizontal = 4 custom_fonts/font = ExtResource( 4 ) text = "0:00:00" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } ================================================ FILE: src/menu/MenuBase.gd ================================================ extends Node class_name MenuBase var items = [] export var items_path : NodePath onready var items_node = get_node_or_null(items_path) export var cursor_path : NodePath onready var cursor_node = get_node_or_null(cursor_path) var cursor := 0 setget set_cursor export var cursor_margin := Vector2(30, 0) var cursor_speed := 9.0 export var scroll_path : NodePath onready var scroll_node = get_node_or_null(scroll_path) var scroll_speed := 4.8 var scroll_y := 0.0 export var fade_path : NodePath onready var fade_node = get_node_or_null(fade_path) onready var fade_ease := EaseMover.new() export var text_accept := "Act" export var text_cancel := "Back" export var is_ui_keys := false export var is_input := false export var is_process := false export var is_open := false setget set_open export var is_accept_close := false export var is_back_close := false signal opened var is_sub_menu := false var sub_ease := EaseMover.new() var sub_node var joy := Vector2.ZERO var joy_last := Vector2.ZERO var joy_clock := 0.0 var joy_wait := 0.3 var joy_repeat := 0.2 export var is_joy_x := false export var is_joy_y := false export var is_act := false export var sub_stay_open := false export var is_audio_cursor := true export var is_audio_accept := true export var is_audio_back := true export var is_audio_joy := false func _ready(): fill_items() reset_cursor() fade_delta() get_tree().connect("screen_resized", self, "resize") func _input(event): if is_input: menu_input(event) func _process(delta): if is_process: menu_process(delta) func menu_input(event): if !is_open or is_sub_menu or sub_ease.frac() > 0.5 or (fade_node and fade_ease.frac() < 0.5): return var last_open = is_open var accept = event.is_action_pressed("ui_accept") var back = event.is_action_pressed("ui_cancel") joy_last = joy joy = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down").round() if back and event.is_pressed(): if is_back_close: self.is_open = false else: back() if is_audio_back: audio_back() elif accept and event.is_pressed(): if is_accept_close: self.is_open = false else: accept() if is_audio_accept: audio_accept() elif joy.y != 0 and joy.y != joy_last.y: self.cursor = wrapi(cursor + joy.y, 0, items.size()) elif joy.x != 0 and joy.x != joy_last.x: joy_x(joy.x) if is_open != last_open: get_tree().set_input_as_handled() func menu_process(delta): fade_delta(delta) sub_ease.count(delta, is_sub_menu) if is_open: if !is_sub_menu: joy_clock = joy_clock + delta if joy != Vector2.ZERO else 0 # hold up/down repeat var diff = joy.x if joy.x != 0 else joy.y if diff != 0: if joy_clock > joy_wait + joy_repeat: joy_clock = joy_wait if joy.x != 0: joy_x(diff) elif cursor + diff > -1 and cursor + diff < items.size(): self.cursor += diff # move cursor if items_node and cursor_node: cursor_node.rect_global_position = cursor_node.rect_global_position.linear_interpolate(items[cursor].rect_global_position - cursor_margin, cursor_speed * delta) cursor_node.rect_size = cursor_node.rect_size.linear_interpolate(items[cursor].rect_size + (cursor_margin * 2.0), cursor_speed * delta) scroll(scroll_speed * delta) func resize(): yield(get_tree(), "idle_frame") scroll() func scroll(delta := 1.0): if scroll_node: scroll_node.rect_position.y = lerp(scroll_node.rect_position.y, (720 / 2.0) - (cursor_node.rect_position.y + cursor_node.rect_size.y / 2.0), delta) func fade_delta(arg := 0.0): if fade_node: var s = fade_ease.count(arg, is_open) fade_node.modulate.a = s fade_node.visible = s > 0 # if !fade_ease.is_last: # print(name, " ", fade_ease.clock, " s: ", s) func set_cursor(arg := 0): select(false) cursor = clamp(arg, 0, max(items.size() - 1, 0)) select(true) row() if is_audio_cursor: audio_cursor() func select(_is_select := true, _cursor := cursor): if _cursor < items.size() and items[_cursor].has_method("select"): items[_cursor].select(_is_select) func reset_cursor(): self.cursor = 0 row() if items_node and cursor_node: cursor_node.rect_global_position = items[0].rect_global_position - cursor_margin cursor_node.rect_size = items[0].rect_size + (cursor_margin * 2.0) scroll() func set_open(arg := is_open): is_open = arg if is_open: self.cursor = 0 fill_items() UI.menu_keys(text_accept, text_cancel) open() row() else: close() emit_signal("opened", is_open) if is_ui_keys: UI.keys.show = is_open reset_joy() func fill_items(): items = [] if items_node: for i in items_node.get_children(): if !i.is_in_group("no_item") and i.visible: items.append(i) func row(): pass func open(): pass func close(): pass func accept(): if is_act and items[cursor].has_method("act"): items[cursor].act() func back(): pass func joy_x(arg := 1): if is_joy_x and items[cursor].has_method("axis_x"): items[cursor].axis_x(arg) if is_audio_joy: audio_joy() func joy_y(arg := 1): if is_joy_y and items[cursor].has_method("axis_y"): items[cursor].axis_y(arg) func sub_menu(arg): if !is_instance_valid(arg): return sub_node = arg is_sub_menu = true is_open = sub_stay_open sub_node.is_open = true if !sub_node.is_connected("opened", self, "sub_close"): sub_node.connect("opened", self, "sub_close") func sub_close(arg := false): if arg: return is_sub_menu = false is_open = true UI.menu_keys(text_accept, text_cancel) if sub_node and sub_node.is_connected("opened", self, "sub_close"): sub_node.disconnect("opened", self, "sub_close") sub_node = null reset_joy() open() func reset_joy(): joy_last = Vector2.ZERO joy = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down").round() joy_clock = 0.0 func audio_accept(): Audio.play("menu_accept", 0.8, 1.2) func audio_back(): Audio.play("menu_cancel", 0.6, 0.9) func audio_cursor(): Audio.play("menu_cursor", 0.8, 1.2) func audio_joy(): Audio.play("menu_joy", 0.7, 1.5) ================================================ FILE: src/menu/MenuBoot.gd ================================================ extends MenuBase export var sub_path : NodePath onready var main_menu = get_node_or_null(sub_path) onready var player = Shared.player onready var title_mat : ShaderMaterial = $Map/Title.material func _ready(): UI.keys.show = true Cam.target_node = null Cam.snap_to(main_menu.pos, 0) Shared.save_slot = -1 player.is_input = false randomize() MenuMakeover.preset() player.spr_easy.show = false if Wipe.is_wipe: yield(Wipe, "complete") player.spr_easy.show = true func _exit_tree(): UI.keys.show = false Cam.target_node = player player.is_input = true func accept(): sub_menu(main_menu) func _process(delta): title_mat.set_shader_param("shadow_angle", -Clouds.day_frac) ================================================ FILE: src/menu/MenuFile.gd ================================================ extends MenuBase onready var file_open := $FileOpen onready var lists := $Lists onready var list_back := $Lists/ListBack.get_children() var offset_y := 0.0 onready var offset_dist : float = items[1].rect_position.y - items[0].rect_position.y func _process(delta): var s = sub_ease.smooth() for i in items.size(): items[i].modulate.a = 1.0 if i == cursor else 1.0 - s list_back[i].modulate.a = items[i].modulate.a lists.rect_position.y = s * offset_y func accept(): offset_y = (cursor - 1) * -offset_dist if items[cursor].is_new: Shared.load_slot(cursor) is_open = false else: sub_menu(file_open) func row(): Shared.load_slot_style(cursor) ================================================ FILE: src/menu/MenuFileDelete.gd ================================================ extends MenuBase export var open_path : NodePath onready var open_menu = get_node_or_null(open_path) func open(): cursor = 1 func accept(): if cursor == 0: Shared.erase_slot(get_parent().cursor) self.is_open = false open_menu.is_open = false elif cursor == 1: self.is_open = false ================================================ FILE: src/menu/MenuFileOpen.gd ================================================ extends MenuBase export var sub_path : NodePath onready var delete_menu = get_node_or_null(sub_path) export var demo_path : NodePath onready var demo_menu = get_node_or_null(demo_path) func accept(): if cursor == 0: if Shared.load_slot(get_parent().cursor): is_open = false else: sub_menu(demo_menu) elif cursor == 1: sub_menu(delete_menu) ================================================ FILE: src/menu/MenuMakeover.gd ================================================ extends MenuBase onready var palette : PoolColorArray = Shared.player.palette var player onready var hair_fronts : int = Shared.player.hair_fronts.size() onready var hair_backs : int = Shared.player.hair_backs.size() var pale = [3,2,2,1,0,16] onready var arrows := $Center/Control/Dialog/Arrows.get_children() export var arrow_margin := Vector2.ZERO func row(): if !arrows: return var c = items[cursor] arrows[0].rect_position = c.rect_position - Vector2(30, 0) + (arrow_margin * Vector2(-1, 1)) arrows[1].rect_position = c.rect_position + Vector2(c.rect_size.x, 0) + arrow_margin for i in arrows: i.visible = cursor < items.size() - 1 func open(): Cam.turn_offset = Vector2(-100, -10) Cam.start_zoom(0, true, 0.4) player = Shared.player if is_instance_valid(player): player.joy = Vector2.ZERO player.is_input = false palette = Shared.player.palette match_player() TouchScreen.set_game(false) func close(): Cam.turn_offset = Vector2.ZERO Cam.start_zoom(0) player.is_input = true TouchScreen.set_game(true) func accept(): match items[cursor].name.to_lower(): "random": random() "preset": preset() func random(): var l = range(palette.size()) randomize() l.shuffle() for i in items: if i.is_in_group("color") or i.is_in_group("hair"): i.cursor = l.pop_back() if i.is_in_group("color") else randi() % (i.count + 1) func outfit(l := pale): for i in l.size(): items[i].cursor = l[i] func match_player(): outfit([player.hairstyle_front, player.hairstyle_back, player.dye["hair"], player.dye["eye"], player.dye["skin"], player.dye["fit"]]) func preset(): randomize() var front = (randi() % (hair_fronts - 1)) + 1 var back = randi() % hair_backs var skin = 4 + (randi() % 5) var c = range(palette.size()) c.erase(skin) c.shuffle() outfit([front, back, c[0], c[1], skin, c[2]]) ================================================ FILE: src/menu/MenuMakeover.tscn ================================================ [gd_scene load_steps=11 format=2] [ext_resource path="res://src/class/shape/Rectangle.gd" type="Script" id=1] [ext_resource path="res://src/menu/MenuMakeover.gd" type="Script" id=2] [ext_resource path="res://src/menu/options/scroll/Hairstyle.tscn" type="PackedScene" id=3] [ext_resource path="res://src/actor/Hair.tscn" type="PackedScene" id=4] [ext_resource path="res://media/font/profile/OptionsItem.tres" type="DynamicFont" id=5] [ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=6] [ext_resource path="res://media/image/UI/reset.svg" type="Texture" id=7] [ext_resource path="res://src/menu/options/scroll/Color.gd" type="Script" id=8] [sub_resource type="StyleBoxFlat" id=4] bg_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 50 corner_radius_top_right = 50 corner_radius_bottom_right = 50 corner_radius_bottom_left = 50 [sub_resource type="StyleBoxFlat" id=6] bg_color = Color( 1, 1, 1, 1 ) [node name="MenuMakeover" type="CanvasLayer"] pause_mode = 2 script = ExtResource( 2 ) items_path = NodePath("Center/Control/Dialog/List") cursor_path = NodePath("Center/Control/Dialog/Cursor") fade_path = NodePath("Center/Control/Dialog") is_ui_keys = true is_input = true is_process = true is_back_close = true is_joy_x = true is_audio_joy = true arrow_margin = Vector2( -10, 0 ) [node name="Center" type="CenterContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 [node name="Control" type="Control" parent="Center"] margin_right = 1280.0 margin_bottom = 720.0 rect_min_size = Vector2( 1280, 720 ) [node name="Dialog" type="Control" parent="Center/Control"] anchor_right = 0.5 anchor_bottom = 1.0 margin_left = 120.0 margin_top = 35.0 margin_right = -100.0 [node name="Cursor" type="Panel" parent="Center/Control/Dialog"] modulate = Color( 1, 1, 1, 0.25 ) margin_left = 33.0 margin_top = 18.0 margin_right = 83.0 margin_bottom = 68.0 custom_styles/panel = SubResource( 4 ) __meta__ = { "_editor_description_": "" } [node name="Column" type="Panel" parent="Center/Control/Dialog"] modulate = Color( 1, 1, 1, 0.25 ) anchor_left = 0.5 anchor_right = 0.5 anchor_bottom = 1.0 margin_left = -35.0 margin_top = -150.0 margin_right = 35.0 margin_bottom = 150.0 custom_styles/panel = SubResource( 6 ) __meta__ = { "_editor_description_": "" } [node name="Arrows" type="Control" parent="Center/Control/Dialog"] [node name="Left" type="Label" parent="Center/Control/Dialog/Arrows"] margin_right = 26.0 margin_bottom = 70.0 rect_min_size = Vector2( 30, 70 ) size_flags_vertical = 6 custom_fonts/font = ExtResource( 5 ) text = "<" align = 2 valign = 1 [node name="Right" type="Label" parent="Center/Control/Dialog/Arrows"] margin_left = 76.0 margin_right = 106.0 margin_bottom = 70.0 rect_min_size = Vector2( 30, 70 ) size_flags_vertical = 6 custom_fonts/font = ExtResource( 5 ) text = ">" valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="List" type="VBoxContainer" parent="Center/Control/Dialog"] anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 size_flags_horizontal = 4 size_flags_vertical = 4 custom_constants/separation = 10 alignment = 1 [node name="Front" parent="Center/Control/Dialog/List" instance=ExtResource( 3 )] margin_top = 67.0 margin_right = 420.0 margin_bottom = 137.0 __meta__ = { "_editor_description_": "" } order = "front" [node name="Back" parent="Center/Control/Dialog/List" instance=ExtResource( 3 )] margin_top = 147.0 margin_right = 420.0 margin_bottom = 217.0 [node name="Hair" type="Control" parent="Center/Control/Dialog/List" groups=["color"]] margin_top = 227.0 margin_right = 420.0 margin_bottom = 297.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 8 ) is_loop = true count = 18 [node name="HBoxContainer" type="HBoxContainer" parent="Center/Control/Dialog/List/Hair"] anchor_right = 1.0 anchor_bottom = 1.0 alignment = 1 [node name="Circle" type="Control" parent="Center/Control/Dialog/List/Hair/HBoxContainer"] modulate = Color( 0, 1, 0, 1 ) margin_left = 27.0 margin_right = 97.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Hair" parent="Center/Control/Dialog/List/Hair/HBoxContainer/Circle" instance=ExtResource( 4 )] position = Vector2( 45, 32 ) scale = Vector2( 1.5, 1.5 ) width = 20.0 length = 15.0 sitting_angle = 60.0 [node name="Circle2" type="Control" parent="Center/Control/Dialog/List/Hair/HBoxContainer"] modulate = Color( 1, 0, 0, 1 ) margin_left = 101.0 margin_right = 171.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Hair" parent="Center/Control/Dialog/List/Hair/HBoxContainer/Circle2" instance=ExtResource( 4 )] position = Vector2( 45, 32 ) scale = Vector2( 1.75, 1.75 ) width = 20.0 length = 15.0 sitting_angle = 60.0 [node name="Circle3" type="Control" parent="Center/Control/Dialog/List/Hair/HBoxContainer"] modulate = Color( 0, 0, 1, 1 ) margin_left = 175.0 margin_right = 245.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Hair" parent="Center/Control/Dialog/List/Hair/HBoxContainer/Circle3" instance=ExtResource( 4 )] position = Vector2( 45, 32 ) scale = Vector2( 2, 2 ) width = 20.0 length = 15.0 sitting_angle = 60.0 [node name="Circle4" type="Control" parent="Center/Control/Dialog/List/Hair/HBoxContainer"] margin_left = 249.0 margin_right = 319.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Hair" parent="Center/Control/Dialog/List/Hair/HBoxContainer/Circle4" instance=ExtResource( 4 )] position = Vector2( 45, 32 ) scale = Vector2( 1.75, 1.75 ) width = 20.0 length = 15.0 sitting_angle = 60.0 [node name="Circle5" type="Control" parent="Center/Control/Dialog/List/Hair/HBoxContainer"] modulate = Color( 0, 0, 0, 1 ) margin_left = 323.0 margin_right = 393.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Hair" parent="Center/Control/Dialog/List/Hair/HBoxContainer/Circle5" instance=ExtResource( 4 )] position = Vector2( 45, 32 ) scale = Vector2( 1.5, 1.5 ) width = 20.0 length = 15.0 sitting_angle = 60.0 [node name="Eye" type="Control" parent="Center/Control/Dialog/List" groups=["color"]] margin_top = 307.0 margin_right = 420.0 margin_bottom = 377.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 8 ) is_loop = true count = 18 part = "eye" [node name="HBoxContainer" type="HBoxContainer" parent="Center/Control/Dialog/List/Eye"] anchor_right = 1.0 anchor_bottom = 1.0 alignment = 1 [node name="Circle" type="Control" parent="Center/Control/Dialog/List/Eye/HBoxContainer"] modulate = Color( 0, 1, 0, 1 ) margin_left = 27.0 margin_right = 97.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Eyes" type="Node2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle"] position = Vector2( 35, 35 ) scale = Vector2( 1.5, 1.5 ) [node name="Left" type="Line2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle/Eyes"] position = Vector2( -9, 0 ) points = PoolVector2Array( 0, -3, 0, 3 ) width = 8.0 default_color = Color( 1, 1, 1, 1 ) begin_cap_mode = 2 end_cap_mode = 2 [node name="Right" type="Line2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle/Eyes"] position = Vector2( 9, 0 ) points = PoolVector2Array( 0, -3, 0, 3 ) width = 8.0 default_color = Color( 1, 1, 1, 1 ) begin_cap_mode = 2 end_cap_mode = 2 [node name="Circle2" type="Control" parent="Center/Control/Dialog/List/Eye/HBoxContainer"] modulate = Color( 1, 0, 0, 1 ) margin_left = 101.0 margin_right = 171.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Eyes" type="Node2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle2"] position = Vector2( 35, 35 ) scale = Vector2( 1.75, 1.75 ) [node name="Left" type="Line2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle2/Eyes"] position = Vector2( -9, 0 ) points = PoolVector2Array( 0, -3, 0, 3 ) width = 8.0 default_color = Color( 1, 1, 1, 1 ) begin_cap_mode = 2 end_cap_mode = 2 [node name="Right" type="Line2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle2/Eyes"] position = Vector2( 9, 0 ) points = PoolVector2Array( 0, -3, 0, 3 ) width = 8.0 default_color = Color( 1, 1, 1, 1 ) begin_cap_mode = 2 end_cap_mode = 2 [node name="Circle3" type="Control" parent="Center/Control/Dialog/List/Eye/HBoxContainer"] modulate = Color( 0, 0, 1, 1 ) margin_left = 175.0 margin_right = 245.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) [node name="Eyes" type="Node2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle3"] position = Vector2( 35, 35 ) scale = Vector2( 2, 2 ) [node name="Left" type="Line2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle3/Eyes"] position = Vector2( -9, 0 ) points = PoolVector2Array( 0, -3, 0, 3 ) width = 8.0 default_color = Color( 1, 1, 1, 1 ) begin_cap_mode = 2 end_cap_mode = 2 [node name="Right" type="Line2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle3/Eyes"] position = Vector2( 9, 0 ) points = PoolVector2Array( 0, -3, 0, 3 ) width = 8.0 default_color = Color( 1, 1, 1, 1 ) begin_cap_mode = 2 end_cap_mode = 2 [node name="Circle4" type="Control" parent="Center/Control/Dialog/List/Eye/HBoxContainer"] margin_left = 249.0 margin_right = 319.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Eyes" type="Node2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle4"] position = Vector2( 35, 35 ) scale = Vector2( 1.75, 1.75 ) [node name="Left" type="Line2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle4/Eyes"] position = Vector2( -9, 0 ) points = PoolVector2Array( 0, -3, 0, 3 ) width = 8.0 default_color = Color( 1, 1, 1, 1 ) begin_cap_mode = 2 end_cap_mode = 2 [node name="Right" type="Line2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle4/Eyes"] position = Vector2( 9, 0 ) points = PoolVector2Array( 0, -3, 0, 3 ) width = 8.0 default_color = Color( 1, 1, 1, 1 ) begin_cap_mode = 2 end_cap_mode = 2 [node name="Circle5" type="Control" parent="Center/Control/Dialog/List/Eye/HBoxContainer"] modulate = Color( 0, 0, 0, 1 ) margin_left = 323.0 margin_right = 393.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Eyes" type="Node2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle5"] position = Vector2( 35, 35 ) scale = Vector2( 1.5, 1.5 ) [node name="Left" type="Line2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle5/Eyes"] position = Vector2( -9, 0 ) points = PoolVector2Array( 0, -3, 0, 3 ) width = 8.0 default_color = Color( 1, 1, 1, 1 ) begin_cap_mode = 2 end_cap_mode = 2 [node name="Right" type="Line2D" parent="Center/Control/Dialog/List/Eye/HBoxContainer/Circle5/Eyes"] position = Vector2( 9, 0 ) points = PoolVector2Array( 0, -3, 0, 3 ) width = 8.0 default_color = Color( 1, 1, 1, 1 ) begin_cap_mode = 2 end_cap_mode = 2 [node name="Skin" type="Control" parent="Center/Control/Dialog/List" groups=["color"]] margin_top = 387.0 margin_right = 420.0 margin_bottom = 457.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 8 ) is_loop = true count = 18 part = "skin" [node name="HBoxContainer" type="HBoxContainer" parent="Center/Control/Dialog/List/Skin"] anchor_right = 1.0 anchor_bottom = 1.0 alignment = 1 [node name="Circle" type="Control" parent="Center/Control/Dialog/List/Skin/HBoxContainer"] modulate = Color( 0, 1, 0, 1 ) margin_left = 27.0 margin_right = 97.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 25.0 circle_offset = Vector2( 35, 35 ) [node name="Circle2" type="Control" parent="Center/Control/Dialog/List/Skin/HBoxContainer"] modulate = Color( 1, 0, 0, 1 ) margin_left = 101.0 margin_right = 171.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 30.0 circle_offset = Vector2( 35, 35 ) [node name="Circle3" type="Control" parent="Center/Control/Dialog/List/Skin/HBoxContainer"] modulate = Color( 0, 0, 1, 1 ) margin_left = 175.0 margin_right = 245.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 30.0 circle_offset = Vector2( 35, 35 ) [node name="Circle4" type="Control" parent="Center/Control/Dialog/List/Skin/HBoxContainer"] margin_left = 249.0 margin_right = 319.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 30.0 circle_offset = Vector2( 35, 35 ) [node name="Circle5" type="Control" parent="Center/Control/Dialog/List/Skin/HBoxContainer"] modulate = Color( 0, 0, 0, 1 ) margin_left = 323.0 margin_right = 393.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 25.0 circle_offset = Vector2( 35, 35 ) [node name="Fit" type="Control" parent="Center/Control/Dialog/List" groups=["color"]] margin_top = 467.0 margin_right = 420.0 margin_bottom = 537.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 8 ) is_loop = true count = 18 part = "fit" [node name="HBoxContainer" type="HBoxContainer" parent="Center/Control/Dialog/List/Fit"] anchor_right = 1.0 anchor_bottom = 1.0 alignment = 1 [node name="Circle" type="Control" parent="Center/Control/Dialog/List/Fit/HBoxContainer"] modulate = Color( 0, 1, 0, 1 ) margin_left = 27.0 margin_right = 97.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Fit" type="Node2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle"] position = Vector2( 35, 35 ) scale = Vector2( 1.333, 1.333 ) [node name="LegL" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle/Fit"] position = Vector2( -3, -14 ) rotation = 0.387463 polygon = PoolVector2Array( 5, 31, 4.33013, 33.5, 2.5, 35.3301, -2.18557e-07, 36, -2.5, 35.3301, -4.33013, 33.5, -5, 31, -5, 5, -4.33013, 2.5, -2.5, 0.669873, 5.96244e-08, 0, 2.5, 0.669873, 4.33013, 2.5, 5, 5 ) script = ExtResource( 1 ) size = Vector2( 5, 18 ) rect_offset = Vector2( 0, 18 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="LegR" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle/Fit"] position = Vector2( 3, -14 ) rotation = -0.387463 polygon = PoolVector2Array( 5, 31, 4.33013, 33.5, 2.5, 35.3301, -2.18557e-07, 36, -2.5, 35.3301, -4.33013, 33.5, -5, 31, -5, 5, -4.33013, 2.5, -2.5, 0.669873, 5.96244e-08, 0, 2.5, 0.669873, 4.33013, 2.5, 5, 5 ) script = ExtResource( 1 ) size = Vector2( 5, 18 ) rect_offset = Vector2( 0, 18 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="Torso" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle/Fit"] position = Vector2( 0, -14.5 ) polygon = PoolVector2Array( 7.6, 25, -7.6, 25, -5.55, 0, 5.55, 0 ) [node name="Circle2" type="Control" parent="Center/Control/Dialog/List/Fit/HBoxContainer"] modulate = Color( 1, 0, 0, 1 ) margin_left = 101.0 margin_right = 171.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Fit" type="Node2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle2"] position = Vector2( 35, 35 ) scale = Vector2( 1.444, 1.444 ) [node name="LegL" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle2/Fit"] position = Vector2( -3, -14 ) rotation = 0.387463 polygon = PoolVector2Array( 5, 31, 4.33013, 33.5, 2.5, 35.3301, -2.18557e-07, 36, -2.5, 35.3301, -4.33013, 33.5, -5, 31, -5, 5, -4.33013, 2.5, -2.5, 0.669873, 5.96244e-08, 0, 2.5, 0.669873, 4.33013, 2.5, 5, 5 ) script = ExtResource( 1 ) size = Vector2( 5, 18 ) rect_offset = Vector2( 0, 18 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="LegR" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle2/Fit"] position = Vector2( 3, -14 ) rotation = -0.387463 polygon = PoolVector2Array( 5, 31, 4.33013, 33.5, 2.5, 35.3301, -2.18557e-07, 36, -2.5, 35.3301, -4.33013, 33.5, -5, 31, -5, 5, -4.33013, 2.5, -2.5, 0.669873, 5.96244e-08, 0, 2.5, 0.669873, 4.33013, 2.5, 5, 5 ) script = ExtResource( 1 ) size = Vector2( 5, 18 ) rect_offset = Vector2( 0, 18 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="Torso" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle2/Fit"] position = Vector2( 0, -14.5 ) polygon = PoolVector2Array( 7.6, 25, -7.6, 25, -5.55, 0, 5.55, 0 ) [node name="Circle3" type="Control" parent="Center/Control/Dialog/List/Fit/HBoxContainer"] modulate = Color( 0, 0, 1, 1 ) margin_left = 175.0 margin_right = 245.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Fit" type="Node2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle3"] position = Vector2( 35, 35 ) scale = Vector2( 1.667, 1.667 ) [node name="LegL" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle3/Fit"] position = Vector2( -3, -14 ) rotation = 0.387463 polygon = PoolVector2Array( 5, 31, 4.33013, 33.5, 2.5, 35.3301, -2.18557e-07, 36, -2.5, 35.3301, -4.33013, 33.5, -5, 31, -5, 5, -4.33013, 2.5, -2.5, 0.669873, 5.96244e-08, 0, 2.5, 0.669873, 4.33013, 2.5, 5, 5 ) script = ExtResource( 1 ) size = Vector2( 5, 18 ) rect_offset = Vector2( 0, 18 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="LegR" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle3/Fit"] position = Vector2( 3, -14 ) rotation = -0.387463 polygon = PoolVector2Array( 5, 31, 4.33013, 33.5, 2.5, 35.3301, -2.18557e-07, 36, -2.5, 35.3301, -4.33013, 33.5, -5, 31, -5, 5, -4.33013, 2.5, -2.5, 0.669873, 5.96244e-08, 0, 2.5, 0.669873, 4.33013, 2.5, 5, 5 ) script = ExtResource( 1 ) size = Vector2( 5, 18 ) rect_offset = Vector2( 0, 18 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="Torso" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle3/Fit"] position = Vector2( 0, -14.5 ) polygon = PoolVector2Array( 7.6, 25, -7.6, 25, -5.55, 0, 5.55, 0 ) [node name="Circle4" type="Control" parent="Center/Control/Dialog/List/Fit/HBoxContainer"] margin_left = 249.0 margin_right = 319.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Fit" type="Node2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle4"] position = Vector2( 35, 35 ) scale = Vector2( 1.444, 1.444 ) [node name="LegL" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle4/Fit"] position = Vector2( -3, -14 ) rotation = 0.387463 polygon = PoolVector2Array( 5, 31, 4.33013, 33.5, 2.5, 35.3301, -2.18557e-07, 36, -2.5, 35.3301, -4.33013, 33.5, -5, 31, -5, 5, -4.33013, 2.5, -2.5, 0.669873, 5.96244e-08, 0, 2.5, 0.669873, 4.33013, 2.5, 5, 5 ) script = ExtResource( 1 ) size = Vector2( 5, 18 ) rect_offset = Vector2( 0, 18 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="LegR" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle4/Fit"] position = Vector2( 3, -14 ) rotation = -0.387463 polygon = PoolVector2Array( 5, 31, 4.33013, 33.5, 2.5, 35.3301, -2.18557e-07, 36, -2.5, 35.3301, -4.33013, 33.5, -5, 31, -5, 5, -4.33013, 2.5, -2.5, 0.669873, 5.96244e-08, 0, 2.5, 0.669873, 4.33013, 2.5, 5, 5 ) script = ExtResource( 1 ) size = Vector2( 5, 18 ) rect_offset = Vector2( 0, 18 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="Torso" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle4/Fit"] position = Vector2( 0, -14.5 ) polygon = PoolVector2Array( 7.6, 25, -7.6, 25, -5.55, 0, 5.55, 0 ) [node name="Circle5" type="Control" parent="Center/Control/Dialog/List/Fit/HBoxContainer"] modulate = Color( 0, 0, 0, 1 ) margin_left = 323.0 margin_right = 393.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 6 ) radius = 0.0 points = 8 [node name="Fit" type="Node2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle5"] position = Vector2( 35, 35 ) scale = Vector2( 1.333, 1.333 ) [node name="LegL" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle5/Fit"] position = Vector2( -3, -14 ) rotation = 0.387463 polygon = PoolVector2Array( 5, 31, 4.33013, 33.5, 2.5, 35.3301, -2.18557e-07, 36, -2.5, 35.3301, -4.33013, 33.5, -5, 31, -5, 5, -4.33013, 2.5, -2.5, 0.669873, 5.96244e-08, 0, 2.5, 0.669873, 4.33013, 2.5, 5, 5 ) script = ExtResource( 1 ) size = Vector2( 5, 18 ) rect_offset = Vector2( 0, 18 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="LegR" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle5/Fit"] position = Vector2( 3, -14 ) rotation = -0.387463 polygon = PoolVector2Array( 5, 31, 4.33013, 33.5, 2.5, 35.3301, -2.18557e-07, 36, -2.5, 35.3301, -4.33013, 33.5, -5, 31, -5, 5, -4.33013, 2.5, -2.5, 0.669873, 5.96244e-08, 0, 2.5, 0.669873, 4.33013, 2.5, 5, 5 ) script = ExtResource( 1 ) size = Vector2( 5, 18 ) rect_offset = Vector2( 0, 18 ) radius = Plane( -2, -1, -1, -1 ) points = 4 [node name="Torso" type="Polygon2D" parent="Center/Control/Dialog/List/Fit/HBoxContainer/Circle5/Fit"] position = Vector2( 0, -14.5 ) polygon = PoolVector2Array( 7.6, 25, -7.6, 25, -5.55, 0, 5.55, 0 ) [node name="Random" type="TextureRect" parent="Center/Control/Dialog/List"] margin_left = 175.0 margin_top = 547.0 margin_right = 245.0 margin_bottom = 617.0 rect_min_size = Vector2( 70, 70 ) size_flags_horizontal = 4 texture = ExtResource( 7 ) expand = true stretch_mode = 5 ================================================ FILE: src/menu/MenuPause.gd ================================================ extends MenuBase onready var hub_label := $Control/List/Items/Hub var is_paused := false func _ready(): Wipe.connect("complete", self, "wipe_complete") func _input(event): if Wipe.is_wipe: return if is_open: if event.is_action_pressed("ui_pause") and !is_sub_menu and (fade_ease.frac() > 0.5): self.is_open = false else: menu_input(event) elif event.is_action_pressed("ui_pause") and !is_sub_menu and (Shared.map_name != "" or Shared.is_arcade) and !Cutscene.is_playing and !MenuMakeover.is_open: self.is_open = true func accept(): joy = Vector2.ZERO match items[cursor].name.to_lower(): "resume": self.is_open = false "reset": Shared.reset() "hub": back_to_hub() "options": sub_menu(MenuOptions) "store": Shared.store_page() "exit": Shared.wipe_scene(Shared.title_path) func wipe_complete(arg): if is_open: # close menu set_open(false, false) fade_ease.clock = 0 func set_open(arg := is_open, is_audio := true): .set_open(arg) is_paused = is_open #get_tree().paused = is_open Cam.turn_offset = Vector2(400 if is_open else 0, 0) * (1 if randf() > 0.5 else -1) * Cam.zoom.x TouchScreen.set_game(!is_open) # setup items if is_open: hub_label.visible = !("hub" in Shared.csfn or "start" in Shared.csfn) and "hub" in Shared.last_scene hub_label.text = "Exit Arcade" if Shared.is_arcade else "Exit Stage" items = [] for i in items_node.get_children(): if i.visible: items.append(i) if is_audio: Audio.play("menu_pause", 1.0 if is_open else 0.75) func back_to_hub(): if !("hub" in Shared.csfn) and "hub" in Shared.last_scene: Shared.wipe_scene(Shared.last_scene) ================================================ FILE: src/menu/MenuPause.tscn ================================================ [gd_scene load_steps=7 format=2] [ext_resource path="res://media/font/profile/PauseItem.tres" type="DynamicFont" id=2] [ext_resource path="res://src/menu/DemoShow.gd" type="Script" id=3] [ext_resource path="res://src/menu/MenuPause.gd" type="Script" id=4] [ext_resource path="res://src/shader/fade_x.gdshader" type="Shader" id=5] [sub_resource type="ShaderMaterial" id=5] shader = ExtResource( 5 ) shader_param/size = 0.5 shader_param/width = 0.1 shader_param/color = Color( 1, 1, 1, 1 ) shader_param/scale = 1.0 shader_param/is_half = false [sub_resource type="StyleBoxFlat" id=4] bg_color = Color( 1, 1, 1, 1 ) border_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 50 corner_radius_top_right = 50 corner_radius_bottom_right = 50 corner_radius_bottom_left = 50 [node name="PauseMenu" type="CanvasLayer"] pause_mode = 2 layer = 6 script = ExtResource( 4 ) items_path = NodePath("Control/List/Items") cursor_path = NodePath("Control/List/Cursor") cursor_margin = Vector2( 20, 7 ) fade_path = NodePath("Control") is_ui_keys = true is_process = true is_back_close = true is_audio_back = false [node name="Control" type="CenterContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 [node name="List" type="Control" parent="Control"] margin_right = 1280.0 margin_bottom = 720.0 rect_min_size = Vector2( 1280, 720 ) [node name="BG" type="ColorRect" parent="Control/List"] modulate = Color( 0, 0, 0, 0.8 ) material = SubResource( 5 ) margin_left = 443.0 margin_right = 837.0 margin_bottom = 720.0 color = Color( 0, 0, 0, 1 ) [node name="Cursor" type="Panel" parent="Control/List"] modulate = Color( 0.658824, 0, 0, 1 ) margin_right = 100.0 margin_bottom = 50.0 custom_styles/panel = SubResource( 4 ) __meta__ = { "_editor_description_": "" } [node name="Items" type="VBoxContainer" parent="Control/List"] anchor_right = 1.0 anchor_bottom = 1.0 custom_constants/separation = 15 alignment = 1 [node name="Resume" type="Label" parent="Control/List/Items"] margin_left = 546.0 margin_top = 169.0 margin_right = 733.0 margin_bottom = 220.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "Resume" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Reset" type="Label" parent="Control/List/Items"] margin_left = 569.0 margin_top = 235.0 margin_right = 710.0 margin_bottom = 286.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "Reset" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Hub" type="Label" parent="Control/List/Items"] margin_left = 503.0 margin_top = 301.0 margin_right = 776.0 margin_bottom = 352.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "Exit Stage" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Options" type="Label" parent="Control/List/Items"] margin_left = 539.0 margin_top = 367.0 margin_right = 740.0 margin_bottom = 418.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "Options" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Store" type="Label" parent="Control/List/Items"] margin_left = 496.0 margin_top = 433.0 margin_right = 784.0 margin_bottom = 484.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "Store Page" align = 1 valign = 1 script = ExtResource( 3 ) __meta__ = { "_edit_use_anchors_": false } [node name="Exit" type="Label" parent="Control/List/Items"] margin_left = 499.0 margin_top = 499.0 margin_right = 781.0 margin_bottom = 550.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "Main Menu" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } ================================================ FILE: src/menu/MenuTitle.gd ================================================ extends MenuBase export var sub_path : NodePath onready var file_menu = get_node_or_null(sub_path) export var credits_path : NodePath onready var credits_menu = get_node_or_null(credits_path) var pos = Vector2(1800, 650) func accept(): match items[cursor].name.to_lower(): "play": sub_menu(file_menu) Cam.target_pos = pos + Vector2(350, 0) "makeover": sub_menu(MenuMakeover) "options": sub_menu(MenuOptions) Cam.target_pos = pos + Vector2(0, -600) "credits": sub_menu(credits_menu) Cam.target_pos = pos + Vector2(350, 0) "store": Shared.store_page() "exit": Shared.quit() func open(): Cam.target_pos = pos - Vector2(150, 0) Cam.turn(0) func close(): Cam.target_pos = pos ================================================ FILE: src/menu/MenuTitle.tscn ================================================ [gd_scene load_steps=40 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [ext_resource path="res://media/font/profile/PauseItem.tres" type="DynamicFont" id=2] [ext_resource path="res://src/menu/AttractMode.gd" type="Script" id=3] [ext_resource path="res://src/detail/TreeTop.tscn" type="PackedScene" id=4] [ext_resource path="res://src/menu/FileCard.tscn" type="PackedScene" id=5] [ext_resource path="res://src/stage/SolidTileMap.tscn" type="PackedScene" id=6] [ext_resource path="res://src/detail/Flower.tscn" type="PackedScene" id=7] [ext_resource path="res://src/detail/Tree.tscn" type="PackedScene" id=8] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=9] [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=12] [ext_resource path="res://media/image/UI/harmony-monroe-white.png" type="Texture" id=13] [ext_resource path="res://src/menu/MenuFile.gd" type="Script" id=14] [ext_resource path="res://src/menu/MenuTitle.gd" type="Script" id=15] [ext_resource path="res://src/menu/MenuFileDelete.gd" type="Script" id=16] [ext_resource path="res://src/menu/MenuFileOpen.gd" type="Script" id=17] [ext_resource path="res://src/menu/MenuBoot.gd" type="Script" id=18] [ext_resource path="res://media/image/UI/title.png" type="Texture" id=19] [ext_resource path="res://src/menu/MenuBase.gd" type="Script" id=20] [ext_resource path="res://media/font/profile/PatchNumber.tres" type="DynamicFont" id=21] [ext_resource path="res://src/menu/DemoShow.gd" type="Script" id=22] [ext_resource path="res://media/image/UI/godot_logo.svg" type="Texture" id=23] [ext_resource path="res://src/actor/door/DoorSpawn.tscn" type="PackedScene" id=24] [ext_resource path="res://src/shader/fade_x.gdshader" type="Shader" id=25] [ext_resource path="res://src/theme/title_text.tres" type="Theme" id=26] [ext_resource path="res://media/image/UI/heart.svg" type="Texture" id=27] [ext_resource path="res://src/shader/inset_shadow.gdshader" type="Shader" id=28] [sub_resource type="ShaderMaterial" id=22] shader = ExtResource( 25 ) shader_param/size = 0.856 shader_param/width = 0.15 shader_param/color = Color( 1, 1, 1, 1 ) shader_param/scale = 1.0 shader_param/is_half = false [sub_resource type="StyleBoxFlat" id=1] bg_color = Color( 1, 1, 1, 1 ) border_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 50 corner_radius_top_right = 50 corner_radius_bottom_right = 50 corner_radius_bottom_left = 50 [sub_resource type="StyleBoxFlat" id=8] bg_color = Color( 0, 0, 0, 0.33 ) border_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 50 corner_radius_top_right = 50 corner_radius_bottom_right = 50 corner_radius_bottom_left = 50 [sub_resource type="ShaderMaterial" id=21] shader = ExtResource( 25 ) shader_param/size = 0.5 shader_param/width = 0.115 shader_param/color = Color( 0, 0, 0, 0.8 ) shader_param/scale = 0.598 shader_param/is_half = true [sub_resource type="StyleBoxFlat" id=3] bg_color = Color( 1, 1, 1, 1 ) border_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 50 corner_radius_top_right = 50 corner_radius_bottom_right = 50 corner_radius_bottom_left = 50 [sub_resource type="DynamicFont" id=6] size = 30 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) [sub_resource type="DynamicFont" id=7] size = 65 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) [sub_resource type="DynamicFont" id=23] size = 30 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true font_data = ExtResource( 1 ) [sub_resource type="ShaderMaterial" id=25] shader = ExtResource( 28 ) shader_param/fill_color = Color( 0.25098, 0.25098, 0.25098, 1 ) shader_param/shadow_color = Color( 0.1, 0.1, 0.1, 1 ) shader_param/shadow_dist = 0.022 shader_param/shadow_angle = 0.123 shader_param/shadow_offset = 0.25 shader_param/uv_scale = Vector2( 1, 3.25 ) shader_param/samples = 6.0 [sub_resource type="DynamicFont" id=4] size = 185 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true extra_spacing_bottom = -20 font_data = ExtResource( 1 ) [sub_resource type="DynamicFont" id=26] size = 40 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true use_filter = true extra_spacing_bottom = -20 font_data = ExtResource( 1 ) [node name="MenuBoot" type="Node2D"] pause_mode = 2 script = ExtResource( 18 ) text_accept = "Start" text_cancel = "" is_input = true is_open = true is_audio_cursor = false is_audio_back = false sub_path = NodePath("Canvas/CenterContainer/Control/MenuTitle") [node name="Canvas" type="CanvasLayer" parent="."] layer = 4 [node name="CenterContainer" type="CenterContainer" parent="Canvas"] anchor_right = 1.0 anchor_bottom = 1.0 [node name="Control" type="Control" parent="Canvas/CenterContainer"] margin_right = 1280.0 margin_bottom = 720.0 rect_min_size = Vector2( 1280, 720 ) [node name="MenuTitle" type="Control" parent="Canvas/CenterContainer/Control"] margin_right = 1280.0 margin_bottom = 720.0 script = ExtResource( 15 ) items_path = NodePath("List") cursor_path = NodePath("Cursor") cursor_margin = Vector2( 20, 7 ) fade_path = NodePath(".") is_input = true is_process = true is_back_close = true sub_path = NodePath("../FileMenu") credits_path = NodePath("../Credits") [node name="BG" type="ColorRect" parent="Canvas/CenterContainer/Control/MenuTitle"] modulate = Color( 0, 0, 0, 0.8 ) material = SubResource( 22 ) margin_left = 50.0 margin_right = 384.0 margin_bottom = 720.0 [node name="Cursor" type="Panel" parent="Canvas/CenterContainer/Control/MenuTitle"] modulate = Color( 0.658824, 0, 0, 1 ) margin_right = 100.0 margin_bottom = 50.0 custom_styles/panel = SubResource( 1 ) __meta__ = { "_editor_description_": "" } [node name="List" type="VBoxContainer" parent="Canvas/CenterContainer/Control/MenuTitle"] anchor_right = 0.3 anchor_bottom = 1.0 margin_left = 50.0 size_flags_horizontal = 4 size_flags_vertical = 4 custom_constants/separation = 15 alignment = 1 [node name="Play" type="Label" parent="Canvas/CenterContainer/Control/MenuTitle/List"] margin_left = 110.0 margin_top = 235.0 margin_right = 224.0 margin_bottom = 286.0 size_flags_horizontal = 4 size_flags_vertical = 5 theme = ExtResource( 26 ) text = "Play" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Back" type="Panel" parent="Canvas/CenterContainer/Control/MenuTitle/List/Play"] visible = false show_behind_parent = true anchor_right = 1.0 anchor_bottom = 1.0 margin_left = -20.0 margin_top = -3.0 margin_right = 20.0 margin_bottom = 3.0 custom_styles/panel = SubResource( 8 ) __meta__ = { "_editor_description_": "" } [node name="Options" type="Label" parent="Canvas/CenterContainer/Control/MenuTitle/List"] margin_left = 66.0 margin_top = 301.0 margin_right = 267.0 margin_bottom = 352.0 size_flags_horizontal = 4 size_flags_vertical = 5 theme = ExtResource( 26 ) text = "Options" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Credits" type="Label" parent="Canvas/CenterContainer/Control/MenuTitle/List"] margin_left = 72.0 margin_top = 367.0 margin_right = 261.0 margin_bottom = 418.0 size_flags_horizontal = 4 size_flags_vertical = 5 theme = ExtResource( 26 ) text = "Credits" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Store" type="Label" parent="Canvas/CenterContainer/Control/MenuTitle/List"] visible = false margin_left = 23.0 margin_top = 400.0 margin_right = 311.0 margin_bottom = 451.0 size_flags_horizontal = 4 size_flags_vertical = 5 theme = ExtResource( 26 ) text = "Store" align = 1 valign = 1 script = ExtResource( 22 ) __meta__ = { "_edit_use_anchors_": false } [node name="Exit" type="Label" parent="Canvas/CenterContainer/Control/MenuTitle/List"] margin_left = 109.0 margin_top = 433.0 margin_right = 224.0 margin_bottom = 484.0 size_flags_horizontal = 4 size_flags_vertical = 5 theme = ExtResource( 26 ) text = "Quit" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="FileMenu" type="Control" parent="Canvas/CenterContainer/Control"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 0.93 script = ExtResource( 14 ) items_path = NodePath("Lists/List") cursor_path = NodePath("Lists/Cursor") cursor_margin = Vector2( 0, 0 ) fade_path = NodePath(".") is_input = true is_process = true is_back_close = true sub_stay_open = true [node name="BG" type="ColorRect" parent="Canvas/CenterContainer/Control/FileMenu"] material = SubResource( 21 ) anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 80.0 margin_right = -80.0 margin_bottom = 55.0 color = Color( 0, 0, 0, 1 ) [node name="Lists" type="Control" parent="Canvas/CenterContainer/Control/FileMenu"] anchor_right = 1.0 anchor_bottom = 1.0 [node name="ListBack" type="VBoxContainer" parent="Canvas/CenterContainer/Control/FileMenu/Lists"] modulate = Color( 0, 0, 0, 1 ) anchor_right = 1.0 anchor_bottom = 1.0 size_flags_horizontal = 4 size_flags_vertical = 4 custom_constants/separation = 20 alignment = 1 [node name="File1" type="Panel" parent="Canvas/CenterContainer/Control/FileMenu/Lists/ListBack"] margin_left = 145.0 margin_top = 52.0 margin_right = 495.0 margin_bottom = 227.0 rect_min_size = Vector2( 350, 175 ) size_flags_horizontal = 4 size_flags_vertical = 4 custom_styles/panel = SubResource( 3 ) __meta__ = { "_edit_use_anchors_": false, "_editor_description_": "" } [node name="File2" type="Panel" parent="Canvas/CenterContainer/Control/FileMenu/Lists/ListBack"] margin_left = 145.0 margin_top = 247.0 margin_right = 495.0 margin_bottom = 422.0 rect_min_size = Vector2( 350, 175 ) size_flags_horizontal = 4 size_flags_vertical = 4 custom_styles/panel = SubResource( 3 ) __meta__ = { "_edit_use_anchors_": false, "_editor_description_": "" } [node name="File3" type="Panel" parent="Canvas/CenterContainer/Control/FileMenu/Lists/ListBack"] margin_left = 145.0 margin_top = 442.0 margin_right = 495.0 margin_bottom = 617.0 rect_min_size = Vector2( 350, 175 ) size_flags_horizontal = 4 size_flags_vertical = 4 custom_styles/panel = SubResource( 3 ) __meta__ = { "_edit_use_anchors_": false, "_editor_description_": "" } [node name="Cursor" type="Panel" parent="Canvas/CenterContainer/Control/FileMenu/Lists"] modulate = Color( 0.658824, 0, 0, 1 ) margin_right = 100.0 margin_bottom = 50.0 custom_styles/panel = SubResource( 1 ) __meta__ = { "_editor_description_": "" } [node name="List" type="VBoxContainer" parent="Canvas/CenterContainer/Control/FileMenu/Lists"] anchor_right = 1.0 anchor_bottom = 1.0 size_flags_horizontal = 4 size_flags_vertical = 4 custom_constants/separation = 20 alignment = 1 [node name="FileCard" parent="Canvas/CenterContainer/Control/FileMenu/Lists/List" instance=ExtResource( 5 )] margin_left = 145.0 margin_top = 52.0 margin_right = 495.0 margin_bottom = 227.0 [node name="FileCard2" parent="Canvas/CenterContainer/Control/FileMenu/Lists/List" instance=ExtResource( 5 )] margin_left = 145.0 margin_top = 247.0 margin_right = 495.0 margin_bottom = 422.0 slot = 1 [node name="FileCard3" parent="Canvas/CenterContainer/Control/FileMenu/Lists/List" instance=ExtResource( 5 )] margin_left = 145.0 margin_top = 442.0 margin_right = 495.0 margin_bottom = 617.0 slot = 2 [node name="FileOpen" type="Control" parent="Canvas/CenterContainer/Control/FileMenu"] anchor_right = 1.0 anchor_bottom = 1.0 script = ExtResource( 17 ) items_path = NodePath("List") cursor_path = NodePath("Cursor") cursor_margin = Vector2( 20, 7 ) fade_path = NodePath(".") is_input = true is_process = true is_back_close = true sub_path = NodePath("../FileDelete") demo_path = NodePath("../FileDemo") [node name="Cursor" type="Panel" parent="Canvas/CenterContainer/Control/FileMenu/FileOpen"] modulate = Color( 0.658824, 0, 0, 1 ) margin_right = 100.0 margin_bottom = 50.0 custom_styles/panel = SubResource( 1 ) __meta__ = { "_edit_use_anchors_": false, "_editor_description_": "" } [node name="List" type="VBoxContainer" parent="Canvas/CenterContainer/Control/FileMenu/FileOpen"] anchor_top = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 size_flags_horizontal = 4 size_flags_vertical = 4 custom_constants/separation = 20 alignment = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Continue" type="Label" parent="Canvas/CenterContainer/Control/FileMenu/FileOpen/List"] margin_left = 204.0 margin_top = 106.0 margin_right = 435.0 margin_bottom = 157.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "Continue" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Delete" type="Label" parent="Canvas/CenterContainer/Control/FileMenu/FileOpen/List"] margin_left = 239.0 margin_top = 177.0 margin_right = 400.0 margin_bottom = 228.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "Delete" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="FileDelete" type="Control" parent="Canvas/CenterContainer/Control/FileMenu"] anchor_right = 1.0 anchor_bottom = 1.0 script = ExtResource( 16 ) items_path = NodePath("List") cursor_path = NodePath("Cursor") cursor_margin = Vector2( 20, 7 ) fade_path = NodePath(".") is_input = true is_process = true is_back_close = true open_path = NodePath("../FileOpen") [node name="Cursor" type="Panel" parent="Canvas/CenterContainer/Control/FileMenu/FileDelete"] modulate = Color( 0.658824, 0, 0, 1 ) margin_right = 100.0 margin_bottom = 50.0 custom_styles/panel = SubResource( 1 ) __meta__ = { "_editor_description_": "" } [node name="Header" type="Label" parent="Canvas/CenterContainer/Control/FileMenu/FileDelete"] anchor_right = 1.0 anchor_bottom = 0.5 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "Delete Save File?" align = 1 valign = 1 [node name="List" type="VBoxContainer" parent="Canvas/CenterContainer/Control/FileMenu/FileDelete"] anchor_top = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 size_flags_horizontal = 4 size_flags_vertical = 4 custom_constants/separation = 20 alignment = 1 [node name="Yes" type="Label" parent="Canvas/CenterContainer/Control/FileMenu/FileDelete/List"] margin_left = 275.0 margin_top = 106.0 margin_right = 364.0 margin_bottom = 157.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "Yes" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="No" type="Label" parent="Canvas/CenterContainer/Control/FileMenu/FileDelete/List"] margin_left = 284.0 margin_top = 177.0 margin_right = 355.0 margin_bottom = 228.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "No" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="FileDemo" type="Control" parent="Canvas/CenterContainer/Control/FileMenu"] anchor_right = 1.0 anchor_bottom = 1.0 script = ExtResource( 20 ) __meta__ = { "_editor_description_": "" } items_path = NodePath("List") cursor_path = NodePath("Cursor") cursor_margin = Vector2( 20, 7 ) fade_path = NodePath(".") is_input = true is_process = true is_accept_close = true is_back_close = true [node name="Cursor" type="Panel" parent="Canvas/CenterContainer/Control/FileMenu/FileDemo"] modulate = Color( 0.658824, 0, 0, 1 ) margin_right = 100.0 margin_bottom = 50.0 custom_styles/panel = SubResource( 1 ) __meta__ = { "_edit_use_anchors_": false, "_editor_description_": "" } [node name="Header" type="Label" parent="Canvas/CenterContainer/Control/FileMenu/FileDemo"] anchor_right = 1.0 anchor_bottom = 0.5 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "File outside of Demo!" align = 1 valign = 1 [node name="List" type="VBoxContainer" parent="Canvas/CenterContainer/Control/FileMenu/FileDemo"] anchor_top = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 size_flags_horizontal = 4 size_flags_vertical = 4 custom_constants/separation = 20 alignment = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Ok" type="Label" parent="Canvas/CenterContainer/Control/FileMenu/FileDemo/List"] margin_left = 259.0 margin_top = 141.0 margin_right = 380.0 margin_bottom = 192.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 2 ) text = "Back" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Credits" type="Control" parent="Canvas/CenterContainer/Control"] margin_right = 1280.0 margin_bottom = 720.0 script = ExtResource( 20 ) fade_path = NodePath(".") text_accept = "" is_input = true is_process = true is_back_close = true is_audio_cursor = false is_audio_accept = false [node name="BG" type="ColorRect" parent="Canvas/CenterContainer/Control/Credits"] material = SubResource( 21 ) anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 [node name="Patch" type="Label" parent="Canvas/CenterContainer/Control/Credits"] modulate = Color( 1, 1, 1, 0.5 ) anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_bottom = -15.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 21 ) text = "2025.08.18" align = 1 valign = 2 [node name="List" type="VBoxContainer" parent="Canvas/CenterContainer/Control/Credits"] anchor_left = 0.55 anchor_right = 0.95 anchor_bottom = 0.95 size_flags_horizontal = 4 size_flags_vertical = 4 custom_constants/separation = 0 alignment = 1 [node name="Prefix" type="Label" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 14.0 margin_right = 512.0 margin_bottom = 45.0 custom_fonts/font = SubResource( 6 ) text = " a game by" valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Canvas/CenterContainer/Control/Credits/List"] visible = false margin_left = 48.0 margin_top = 125.0 margin_right = 592.0 margin_bottom = 191.0 size_flags_horizontal = 4 custom_fonts/font = SubResource( 7 ) text = "Harmony Honey" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Control" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 45.0 margin_right = 512.0 margin_bottom = 195.0 rect_min_size = Vector2( 0, 150 ) [node name="TextureRect" type="TextureRect" parent="Canvas/CenterContainer/Control/Credits/List/Control"] anchor_top = 0.1 anchor_right = 1.0 anchor_bottom = 0.9 texture = ExtResource( 13 ) expand = true stretch_mode = 6 [node name="Suffix" type="Label" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 195.0 margin_right = 512.0 margin_bottom = 226.0 custom_fonts/font = SubResource( 6 ) text = "harmonymonroe.com " align = 2 valign = 1 [node name="Spacer" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 226.0 margin_right = 512.0 margin_bottom = 244.0 rect_min_size = Vector2( 0, 18 ) [node name="Prefix2" type="Label" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 244.0 margin_right = 512.0 margin_bottom = 275.0 custom_fonts/font = SubResource( 6 ) text = " made with" valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="TextureRect2" type="TextureRect" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 275.0 margin_right = 512.0 margin_bottom = 425.0 rect_min_size = Vector2( 0, 150 ) texture = ExtResource( 23 ) expand = true stretch_mode = 6 [node name="Label2" type="Label" parent="Canvas/CenterContainer/Control/Credits/List"] visible = false margin_left = 90.0 margin_top = 595.0 margin_right = 549.0 margin_bottom = 661.0 size_flags_horizontal = 4 custom_fonts/font = SubResource( 7 ) text = "Godot Engine" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Suffix2" type="Label" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 425.0 margin_right = 512.0 margin_bottom = 456.0 custom_fonts/font = SubResource( 6 ) text = "godotengine.org " align = 2 valign = 1 [node name="Spacer2" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 456.0 margin_right = 512.0 margin_bottom = 474.0 rect_min_size = Vector2( 0, 18 ) [node name="HBoxContainer" type="HBoxContainer" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 474.0 margin_right = 512.0 margin_bottom = 524.0 custom_constants/separation = 10 alignment = 1 [node name="TextureRect" type="TextureRect" parent="Canvas/CenterContainer/Control/Credits/List/HBoxContainer"] margin_left = 95.0 margin_right = 145.0 margin_bottom = 50.0 rect_min_size = Vector2( 50, 50 ) size_flags_horizontal = 4 size_flags_vertical = 4 texture = ExtResource( 27 ) expand = true stretch_mode = 5 [node name="Label3" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HBoxContainer"] margin_left = 155.0 margin_top = 9.0 margin_right = 357.0 margin_bottom = 40.0 size_flags_horizontal = 4 custom_fonts/font = SubResource( 23 ) text = "Contributors" align = 1 valign = 1 [node name="TextureRect2" type="TextureRect" parent="Canvas/CenterContainer/Control/Credits/List/HBoxContainer"] margin_left = 367.0 margin_right = 417.0 margin_bottom = 50.0 rect_min_size = Vector2( 50, 50 ) size_flags_horizontal = 4 size_flags_vertical = 4 texture = ExtResource( 27 ) expand = true [node name="Spacer3" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 524.0 margin_right = 512.0 margin_bottom = 534.0 rect_min_size = Vector2( 0, 10 ) [node name="HFlowContainer" type="HFlowContainer" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 534.0 margin_right = 512.0 margin_bottom = 670.0 [node name="Label4" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] margin_left = 18.0 margin_right = 284.0 margin_bottom = 31.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) text = "Harmony Monroe" align = 1 valign = 1 [node name="Label8" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] margin_left = 325.0 margin_right = 493.0 margin_bottom = 31.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) text = "Guy Unger" align = 1 valign = 1 [node name="Label6" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] margin_left = 20.0 margin_top = 35.0 margin_right = 210.0 margin_bottom = 66.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) text = "Sam Murray" align = 1 valign = 1 [node name="Label5" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] margin_left = 255.0 margin_top = 35.0 margin_right = 491.0 margin_bottom = 66.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) text = "Raffaele Picca" align = 1 valign = 1 [node name="Label7" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] margin_left = 32.0 margin_top = 70.0 margin_right = 178.0 margin_bottom = 101.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) text = "neropatti" align = 1 valign = 1 [node name="Label9" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] margin_left = 246.0 margin_top = 70.0 margin_right = 479.0 margin_bottom = 101.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) text = "Cassidy Blaede" align = 1 valign = 1 [node name="Label10" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] margin_left = 22.0 margin_top = 105.0 margin_right = 245.0 margin_bottom = 136.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) text = "Will Thompson" align = 1 valign = 1 [node name="Label11" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] margin_left = 294.0 margin_top = 105.0 margin_right = 489.0 margin_bottom = 136.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) text = "Micah Ilbery" align = 1 valign = 1 [node name="Back" type="ColorRect" parent="Canvas/CenterContainer/Control"] visible = false anchor_right = 1.0 anchor_bottom = 1.0 color = Color( 0.47, 0.47, 0.47, 1 ) __meta__ = { "_edit_use_anchors_": false } [node name="Map" type="Node2D" parent="."] __meta__ = { "_edit_lock_": true } [node name="SolidTileMap" parent="Map" instance=ExtResource( 6 )] tile_data = PoolIntArray( 327695, 0, 0, 327696, 0, 0, 327697, 0, 0, 327698, 0, 0, 327699, 0, 0, 327700, 0, 0, 393231, 0, 0, 393232, 0, 0, 393233, 0, 0, 393234, 0, 0, 393235, 0, 0, 393236, 0, 0, 458767, 0, 0, 458768, 0, 0, 458769, 0, 0, 458770, 0, 0, 458771, 0, 0, 458772, 0, 0 ) detail = 4 [node name="Actors" type="Node2D" parent="Map"] [node name="Spawn" parent="Map/Actors" instance=ExtResource( 24 )] position = Vector2( 1825, 300 ) [node name="AttractMode" type="Node2D" parent="Map"] position = Vector2( 1800, 650 ) script = ExtResource( 3 ) [node name="Title" type="Sprite" parent="Map"] process_priority = 1 material = SubResource( 25 ) position = Vector2( 1800, 640 ) scale = Vector2( 0.9, 0.9 ) texture = ExtResource( 19 ) [node name="Label" type="Label" parent="Map"] visible = false margin_left = 1500.0 margin_top = 500.0 margin_right = 2100.0 margin_bottom = 800.0 custom_colors/font_color = Color( 0.25098, 0.25098, 0.25098, 1 ) custom_fonts/font = SubResource( 4 ) text = "ROTA" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Demo" type="Label" parent="Map"] margin_left = 1500.0 margin_top = 690.0 margin_right = 2100.0 margin_bottom = 790.0 custom_colors/font_color = Color( 0.25098, 0.25098, 0.25098, 1 ) custom_fonts/font = SubResource( 26 ) text = "BEND GRAVITY" align = 1 valign = 1 [node name="Details" type="Node2D" parent="Map"] [node name="Tree" parent="Map/Details" instance=ExtResource( 8 )] position = Vector2( 1750, 500 ) rotation = -0.174533 scale = Vector2( -1, 1 ) palette = 3 [node name="Tree2" parent="Map/Details" instance=ExtResource( 8 )] position = Vector2( 1850, 800 ) rotation = 2.96706 scale = Vector2( -1, 1 ) palette = 5 [node name="Tree3" parent="Map/Details" instance=ExtResource( 8 )] position = Vector2( 1550, 800 ) rotation = -2.96706 palette = 2 [node name="Lamppost" parent="Map/Details" instance=ExtResource( 12 )] position = Vector2( 1900, 500 ) [node name="Lamppost2" parent="Map/Details" instance=ExtResource( 12 )] position = Vector2( 1700, 800 ) rotation = 3.14159 [node name="Bench" parent="Map/Details" instance=ExtResource( 9 )] position = Vector2( 2000, 446 ) [node name="Flower3" parent="Map/Details" instance=ExtResource( 7 )] position = Vector2( 2100, 550 ) rotation = 1.5708 palette = 5 [node name="Flower5" parent="Map/Details" instance=ExtResource( 7 )] position = Vector2( 1500, 750 ) rotation = 4.71239 palette = 2 [node name="Flower6" parent="Map/Details" instance=ExtResource( 7 )] position = Vector2( 1775, 800 ) rotation = 3.14159 palette = 3 [node name="Candle" parent="Map/Details" instance=ExtResource( 11 )] position = Vector2( 1500, 650 ) rotation = -1.57079 [node name="Candle2" parent="Map/Details" instance=ExtResource( 11 )] position = Vector2( 2100, 650 ) rotation = -4.71238 [node name="TreeTop" parent="Map/Details" instance=ExtResource( 4 )] position = Vector2( 2050, 750 ) scale = Vector2( 0.8, 0.8 ) [node name="TreeTop2" parent="Map/Details" instance=ExtResource( 4 )] position = Vector2( 1550, 550 ) scale = Vector2( 0.8, 0.8 ) [node name="FlowerPetals" parent="Map/Details" instance=ExtResource( 10 )] position = Vector2( 2050, 865 ) palette = 2 [node name="FlowerPetals2" parent="Map/Details" instance=ExtResource( 10 )] position = Vector2( 2165, 750 ) palette = 4 [node name="FlowerPetals4" parent="Map/Details" instance=ExtResource( 10 )] position = Vector2( 1435, 550 ) palette = 5 [node name="FlowerPetals5" parent="Map/Details" instance=ExtResource( 10 )] position = Vector2( 1550, 435 ) palette = 3 [node name="FlowerPetals6" parent="Map/Details" instance=ExtResource( 10 )] position = Vector2( 1465, 465 ) rotation = -0.785397 [node name="FlowerPetals3" parent="Map/Details" instance=ExtResource( 10 )] position = Vector2( 2135, 835 ) rotation = 0.784805 ================================================ FILE: src/menu/Splash.gd ================================================ extends Node func _ready(): yield(get_tree(), "idle_frame") $AudioStreamPlayer.play() yield(get_tree().create_timer(1.25), "timeout") Shared.wipe_scene(Shared.title_path) ================================================ FILE: src/menu/Splash.tscn ================================================ [gd_scene load_steps=4 format=2] [ext_resource path="res://media/image/UI/harmony-monroe-square-white.png" type="Texture" id=1] [ext_resource path="res://src/menu/Splash.gd" type="Script" id=2] [ext_resource path="res://media/audio/sfx/bell1.wav" type="AudioStream" id=3] [node name="Control" type="CanvasLayer"] layer = 50 script = ExtResource( 2 ) [node name="ColorRect" type="ColorRect" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 [node name="CenterContainer" type="CenterContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 [node name="Control" type="Control" parent="CenterContainer"] margin_right = 1280.0 margin_bottom = 720.0 rect_min_size = Vector2( 1280, 720 ) [node name="TextureRect" type="TextureRect" parent="CenterContainer/Control"] modulate = Color( 0, 0, 0, 1 ) anchor_right = 1.0 anchor_bottom = 1.0 texture = ExtResource( 1 ) expand = true stretch_mode = 6 [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = ExtResource( 3 ) bus = "SFX" ================================================ FILE: src/menu/button_modulate.gd ================================================ extends Node export var button_path : NodePath = "." onready var button : TouchScreenButton = get_node_or_null(button_path) export var color_path : NodePath = "." onready var color_node : CanvasItem = get_node_or_null(color_path) export var press_color := Color(1,0,1, 1.0) export var idle_color := Color(1,1,1, 0.5) export var secondary_action := "" func _ready(): if is_instance_valid(button): button.connect("pressed", self, "press") button.connect("released", self, "release") if is_instance_valid(color_node): color_node.modulate = idle_color func interact(): if is_instance_valid(button) and is_instance_valid(color_node): color_node.modulate = press_color if button.is_pressed() else idle_color func press(): interact() if secondary_action != "": Input.action_press(secondary_action) func release(): interact() if secondary_action != "": Input.action_release(secondary_action) ================================================ FILE: src/menu/options/Key.gd ================================================ #tool extends Control export var text := "" setget set_text export var action := "" setget set_action export var is_gamepad := false setget set_gamepad export var is_connect := false setget set_connect export var is_shrink := false setget set_shrink onready var offset := $Offset onready var sprite := $Offset/Sprite onready var center := $Offset/Center onready var label := $Offset/Center/Label onready var font : Font = label.get("custom_fonts/font") var tex_key = preload("res://media/image/box/round_rect200.png") var tex_key_2 = preload("res://media/image/UI/key_2.png") var tex = {"JOY 0": preload("res://media/image/UI/btn_a.png"), "JOY 1": preload("res://media/image/UI/btn_b.png"), "JOY 2": preload("res://media/image/UI/btn_x.png"), "JOY 3": preload("res://media/image/UI/btn_y.png"), "JOY 10": preload("res://media/image/UI/btn_select.png"), "JOY 11": preload("res://media/image/UI/btn_start.png"), "JOY 12": preload("res://media/image/UI/dpad_up.png"), "JOY 13": preload("res://media/image/UI/dpad_up.png"), "JOY 14": preload("res://media/image/UI/dpad_up.png"), "JOY 15": preload("res://media/image/UI/dpad_up.png"), "AXIS 0-": preload("res://media/image/UI/l_stick_left.png"), "AXIS 0+": preload("res://media/image/UI/l_stick_right.png"), "AXIS 1-": preload("res://media/image/UI/l_stick_up.png"), "AXIS 1+": preload("res://media/image/UI/l_stick_down.png"), "AXIS 2-": preload("res://media/image/UI/r_stick_left.png"), "AXIS 2+": preload("res://media/image/UI/r_stick_right.png"), "AXIS 3-": preload("res://media/image/UI/r_stick_up.png"), "AXIS 3+": preload("res://media/image/UI/r_stick_down.png"), "KEY": preload("res://media/image/box/round_rect200.png"), "KEY_2": preload("res://media/image/UI/key_2.png"), "KEY_3": preload("res://media/image/UI/key_3.png"), "UP": preload("res://media/image/UI/key_up.png"), "DOWN": preload("res://media/image/UI/key_up.png"), "LEFT": preload("res://media/image/UI/key_up.png"), "RIGHT": preload("res://media/image/UI/key_up.png"),} var rotate = {"DOWN": 180, "LEFT": 270, "RIGHT": 90, "JOY 13": 180, "JOY 14": 270, "JOY 15": 90,} var short = {KEY_CONTROL : "Ctrl", KEY_DELETE: "Del", KEY_BRACELEFT: "[", KEY_BRACERIGHT: "]", KEY_SEMICOLON: ";", KEY_APOSTROPHE: "'", KEY_BACKSLASH: "\\", KEY_SLASH: "/", KEY_QUOTELEFT: "`", KEY_MINUS: "-", KEY_EQUAL: "=", KEY_CAPSLOCK: "Caps", KEY_ESCAPE: "Esc", KEY_COMMA: ",", KEY_PERIOD: ".",} func _ready(): self.text = text func is_type(event): var test = !is_gamepad and event is InputEventKey if !test: test = is_gamepad and (event is InputEventJoypadButton or event is InputEventJoypadMotion) return test func parse_event(event : InputEvent): var s = " " if event is InputEventJoypadButton: s = "JOY " + str(event.button_index) elif event is InputEventJoypadMotion: var sgn = "+" if event.axis_value > 0 else "-" s = "AXIS " + str(event.axis) + sgn elif event is InputEvent: if event is InputEventKey and short.has(event.scancode): s = short[event.scancode] else: s = str(event.as_text().to_upper()) self.text = s func set_text(arg := text): text = arg if !label or text == "": return offset.rect_scale = Vector2.ONE # sprite if tex.has(text): label.visible = false sprite.texture = tex[text] sprite.rotation_degrees = rotate[text] if rotate.has(text) else 0 rect_min_size.x = 50 rect_size = rect_min_size offset.rect_position.x = 25 # text over key else: label.visible = true label.text = text.to_lower().capitalize() var size = font.get_string_size(text) var text_scale = clamp(90 / size.x, 0.1, 1.0) center.scale = Vector2.ONE * text_scale var check = text.length() < 2 sprite.texture = tex_key if check else tex_key_2 sprite.rotation_degrees = 0 rect_min_size.x = 50 if check else 100 rect_size = rect_min_size offset.rect_position.x = 25 if check else 50 if is_shrink and !check: offset.rect_scale = Vector2.ONE * 0.5 set_shrink() func set_action(arg := action): action = arg if action != "" and InputMap.has_action(action): var l = InputMap.get_action_list(action) # gamepad or keyboard var e = null for i in l: if is_type(i): e = i if e: parse_event(e) func set_gamepad(arg := is_gamepad): is_gamepad = arg set_action() func set_connect(arg := is_connect): is_connect = arg if is_connect: Shared.connect("gamepad_input", self, "set_gamepad") else: Shared.disconnect("gamepad_input", self, "set_gamepad") self.is_gamepad = Shared.is_gamepad func set_shrink(arg := is_shrink): is_shrink = arg ================================================ FILE: src/menu/options/Key.tscn ================================================ [gd_scene load_steps=4 format=2] [ext_resource path="res://src/menu/options/Key.gd" type="Script" id=1] [ext_resource path="res://media/image/box/round_rect200.png" type="Texture" id=2] [ext_resource path="res://media/font/profile/RemapKey.tres" type="DynamicFont" id=3] [node name="Key" type="Control"] margin_right = 50.0 margin_bottom = 50.0 rect_min_size = Vector2( 50, 50 ) size_flags_vertical = 6 script = ExtResource( 1 ) [node name="Offset" type="Control" parent="."] margin_left = 25.0 margin_top = 25.0 margin_right = 25.0 margin_bottom = 25.0 __meta__ = { "_edit_use_anchors_": false } [node name="Sprite" type="Sprite" parent="Offset"] scale = Vector2( 0.25, 0.25 ) texture = ExtResource( 2 ) [node name="Center" type="Node2D" parent="Offset"] [node name="Label" type="Label" parent="Offset/Center"] margin_left = -200.0 margin_top = -50.0 margin_right = 200.0 margin_bottom = 50.0 custom_colors/font_color = Color( 0, 0, 0, 1 ) custom_fonts/font = ExtResource( 3 ) text = "S" align = 1 valign = 1 clip_text = true __meta__ = { "_edit_use_anchors_": false } ================================================ FILE: src/menu/options/MenuOptions.gd ================================================ extends MenuBase func fill_items(): if is_instance_valid(items_node): for i in items_node.get_children(): if i.is_in_group("window"): i.visible = !OS.window_fullscreen i._ready() if i.is_in_group("speed"): i.visible = Shared.clock_show > 0 if i.is_in_group("light"): i.visible = Shared.light_enabled > 0 if i.is_in_group("shadow") and i.visible: i.visible = Shared.shadow_enabled > 0 .fill_items() func row(): is_audio_joy = cursor == 2 or cursor > 5 func close(): Shared.save_options() UI.scene_changed() func open_remap(is_gamepad := false): MenuRemap.is_gamepad = is_gamepad sub_menu(MenuRemap) ================================================ FILE: src/menu/options/MenuOptions.tscn ================================================ [gd_scene load_steps=22 format=2] [ext_resource path="res://media/image/UI/clock.png" type="Texture" id=1] [ext_resource path="res://media/font/profile/OptionsItem.tres" type="DynamicFont" id=2] [ext_resource path="res://media/font/profile/OptionsHeader.tres" type="DynamicFont" id=3] [ext_resource path="res://src/menu/options/MenuOptions.gd" type="Script" id=4] [ext_resource path="res://src/menu/options/OpenRemap.gd" type="Script" id=5] [ext_resource path="res://src/menu/options/scroll/Resolution.gd" type="Script" id=6] [ext_resource path="res://src/menu/options/scroll/Scroll.gd" type="Script" id=7] [ext_resource path="res://media/image/UI/Input.png" type="Texture" id=8] [ext_resource path="res://media/image/UI/Audio.png" type="Texture" id=9] [ext_resource path="res://media/audio/sfx/Randomize104.wav" type="AudioStream" id=10] [ext_resource path="res://media/audio/sfx/jump2.wav" type="AudioStream" id=11] [ext_resource path="res://media/image/UI/Video.png" type="Texture" id=12] [ext_resource path="res://src/menu/options/scroll/Volume.tscn" type="PackedScene" id=13] [ext_resource path="res://src/menu/options/scroll/Fullscreen.gd" type="Script" id=14] [ext_resource path="res://src/menu/options/scroll/Vsync.gd" type="Script" id=17] [ext_resource path="res://src/menu/options/scroll/Mouse.gd" type="Script" id=18] [ext_resource path="res://src/menu/options/scroll/Borderless.gd" type="Script" id=19] [ext_resource path="res://src/shader/fade_x.gdshader" type="Shader" id=21] [ext_resource path="res://src/menu/options/scroll/ScrollVar.gd" type="Script" id=24] [sub_resource type="ShaderMaterial" id=20] shader = ExtResource( 21 ) shader_param/size = 0.5 shader_param/width = 0.1 shader_param/color = Color( 1, 1, 1, 1 ) shader_param/scale = 1.0 shader_param/is_half = false [sub_resource type="StyleBoxFlat" id=18] bg_color = Color( 1, 1, 1, 1 ) border_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 50 corner_radius_top_right = 50 corner_radius_bottom_right = 50 corner_radius_bottom_left = 50 [node name="OptionsMenu" type="CanvasLayer"] pause_mode = 2 layer = 6 script = ExtResource( 4 ) items_path = NodePath("Control/Menu/List") cursor_path = NodePath("Control/Menu/Cursor") cursor_margin = Vector2( 25, 0 ) scroll_path = NodePath("Control/Menu") fade_path = NodePath("Control") is_input = true is_process = true is_back_close = true is_joy_x = true is_act = true is_audio_joy = true [node name="Control" type="CenterContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 [node name="BG" type="Control" parent="Control"] margin_right = 1280.0 margin_bottom = 720.0 rect_min_size = Vector2( 1280, 720 ) [node name="ColorRect" type="ColorRect" parent="Control/BG"] modulate = Color( 0, 0, 0, 0.8 ) material = SubResource( 20 ) margin_left = 200.0 margin_right = 1080.0 margin_bottom = 720.0 [node name="Menu" type="Control" parent="Control"] margin_right = 1280.0 margin_bottom = 720.0 rect_min_size = Vector2( 1280, 720 ) [node name="Cursor" type="Panel" parent="Control/Menu"] modulate = Color( 0.658824, 0, 0, 1 ) margin_right = 100.0 margin_bottom = 50.0 custom_styles/panel = SubResource( 18 ) __meta__ = { "_editor_description_": "" } [node name="List" type="VBoxContainer" parent="Control/Menu"] anchor_left = 0.25 anchor_right = 0.75 margin_bottom = 720.0 custom_constants/separation = 0 [node name="Spacer3" type="Control" parent="Control/Menu/List" groups=["no_item"]] margin_right = 640.0 margin_bottom = 70.0 rect_min_size = Vector2( 0, 70 ) __meta__ = { "_edit_use_anchors_": false } [node name="Header" type="Control" parent="Control/Menu/List" groups=["no_item"]] margin_top = 70.0 margin_right = 640.0 margin_bottom = 230.0 rect_min_size = Vector2( 0, 160 ) __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Control/Menu/List/Header"] anchor_right = 1.0 anchor_bottom = 1.0 custom_fonts/font = ExtResource( 3 ) text = "Options" align = 1 valign = 1 [node name="HeaderInput" type="Control" parent="Control/Menu/List" groups=["no_item"]] margin_top = 230.0 margin_right = 640.0 margin_bottom = 300.0 rect_min_size = Vector2( 0, 70 ) [node name="Tex" type="TextureRect" parent="Control/Menu/List/HeaderInput"] anchor_right = 0.1 anchor_bottom = 1.0 size_flags_horizontal = 3 size_flags_vertical = 3 texture = ExtResource( 8 ) expand = true stretch_mode = 6 [node name="Label" type="Label" parent="Control/Menu/List/HeaderInput"] anchor_left = 0.11 anchor_right = 1.0 anchor_bottom = 1.0 custom_fonts/font = ExtResource( 3 ) text = "Input" valign = 1 [node name="Vibrate" type="Control" parent="Control/Menu/List"] visible = false margin_top = 300.0 margin_right = 640.0 margin_bottom = 370.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 7 ) __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Control/Menu/List/Vibrate"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Controller Vibration" valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Label2" type="Label" parent="Control/Menu/List/Vibrate"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Grab" type="Control" parent="Control/Menu/List"] visible = false margin_top = 300.0 margin_right = 640.0 margin_bottom = 370.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 7 ) __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Control/Menu/List/Grab"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Grab Toggle" valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Label2" type="Label" parent="Control/Menu/List/Grab"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Keyboard" type="Control" parent="Control/Menu/List"] margin_top = 300.0 margin_right = 640.0 margin_bottom = 370.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 5 ) __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Control/Menu/List/Keyboard"] anchor_right = 0.5 anchor_bottom = 1.0 rect_pivot_offset = Vector2( -390.432, 251.663 ) size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Keyboard Setup" valign = 1 [node name="Controller" type="Control" parent="Control/Menu/List"] margin_top = 370.0 margin_right = 640.0 margin_bottom = 440.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 5 ) __meta__ = { "_edit_use_anchors_": false } is_gamepad = true [node name="Label" type="Label" parent="Control/Menu/List/Controller"] anchor_right = 0.5 anchor_bottom = 1.0 rect_pivot_offset = Vector2( -390.432, 251.663 ) size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Controller Setup" valign = 1 [node name="Touch" type="Control" parent="Control/Menu/List"] margin_top = 440.0 margin_right = 640.0 margin_bottom = 510.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false } list = PoolStringArray( "TOGGLE", "ALWAYS" ) is_refill = true var_name = "is_touch" [node name="Label" type="Label" parent="Control/Menu/List/Touch"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Touch Screen" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Touch"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< TOGGLE >" align = 2 valign = 1 [node name="X" type="Control" parent="Control/Menu/List"] margin_top = 510.0 margin_right = 640.0 margin_bottom = 580.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false, "_editor_description_": "" } count = 1000 step = 5 var_name = "margin_x" [node name="Label" type="Label" parent="Control/Menu/List/X"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Margin X" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/X"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< 2 >" align = 2 valign = 1 [node name="Y" type="Control" parent="Control/Menu/List"] margin_top = 580.0 margin_right = 640.0 margin_bottom = 650.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false, "_editor_description_": "" } count = 1000 step = 5 var_name = "margin_y" [node name="Label" type="Label" parent="Control/Menu/List/Y"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Margin Y" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Y"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< 2 >" align = 2 valign = 1 [node name="Spacer2" type="Control" parent="Control/Menu/List" groups=["no_item"]] margin_top = 650.0 margin_right = 640.0 margin_bottom = 680.0 rect_min_size = Vector2( 0, 30 ) __meta__ = { "_edit_use_anchors_": false } [node name="HeaderAudio" type="Control" parent="Control/Menu/List" groups=["no_item"]] margin_top = 680.0 margin_right = 640.0 margin_bottom = 750.0 rect_min_size = Vector2( 0, 70 ) [node name="Tex" type="TextureRect" parent="Control/Menu/List/HeaderAudio"] anchor_right = 0.1 anchor_bottom = 1.0 size_flags_horizontal = 3 size_flags_vertical = 3 texture = ExtResource( 9 ) expand = true stretch_mode = 6 __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Control/Menu/List/HeaderAudio"] anchor_left = 0.11 anchor_right = 1.0 anchor_bottom = 1.0 custom_fonts/font = ExtResource( 3 ) text = "Audio" valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Music" parent="Control/Menu/List" instance=ExtResource( 13 )] margin_top = 750.0 margin_right = 640.0 margin_bottom = 820.0 rect_min_size = Vector2( 0, 70 ) bus = 2 [node name="Label" parent="Control/Menu/List/Music" index="0"] text = "Music" [node name="Audio" parent="Control/Menu/List/Music" index="2"] stream = ExtResource( 11 ) bus = "Music" [node name="SFX" parent="Control/Menu/List" instance=ExtResource( 13 )] margin_top = 820.0 margin_right = 640.0 margin_bottom = 890.0 rect_min_size = Vector2( 0, 70 ) bus = 1 [node name="Label" parent="Control/Menu/List/SFX" index="0"] text = "Sounds" [node name="Audio" parent="Control/Menu/List/SFX" index="2"] stream = ExtResource( 10 ) volume_db = -5.0 bus = "SFX" [node name="Weather2" parent="Control/Menu/List" instance=ExtResource( 13 )] margin_top = 890.0 margin_right = 640.0 margin_bottom = 960.0 rect_min_size = Vector2( 0, 70 ) bus = 3 [node name="Label" parent="Control/Menu/List/Weather2" index="0"] text = "Weather" [node name="Audio" parent="Control/Menu/List/Weather2" index="2"] volume_db = -5.0 bus = "SFX" [node name="Spacer" type="Control" parent="Control/Menu/List" groups=["no_item"]] margin_top = 960.0 margin_right = 640.0 margin_bottom = 990.0 rect_min_size = Vector2( 0, 30 ) __meta__ = { "_edit_use_anchors_": false } [node name="HeaderVideo" type="Control" parent="Control/Menu/List" groups=["no_item"]] margin_top = 990.0 margin_right = 640.0 margin_bottom = 1060.0 rect_min_size = Vector2( 0, 70 ) [node name="Tex" type="TextureRect" parent="Control/Menu/List/HeaderVideo"] anchor_right = 0.1 anchor_bottom = 1.0 size_flags_horizontal = 3 size_flags_vertical = 3 texture = ExtResource( 12 ) expand = true stretch_mode = 6 [node name="Label" type="Label" parent="Control/Menu/List/HeaderVideo"] anchor_left = 0.11 anchor_right = 1.0 anchor_bottom = 1.0 custom_fonts/font = ExtResource( 3 ) text = "Video" valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Fullscreen" type="Control" parent="Control/Menu/List"] margin_top = 1060.0 margin_right = 640.0 margin_bottom = 1130.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 14 ) __meta__ = { "_edit_use_anchors_": false } is_refill = true [node name="Label" type="Label" parent="Control/Menu/List/Fullscreen"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Fullscreen" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Fullscreen"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 [node name="Borderless" type="Control" parent="Control/Menu/List" groups=["window"]] margin_top = 1130.0 margin_right = 640.0 margin_bottom = 1200.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 19 ) __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Control/Menu/List/Borderless"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Borderless" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Borderless"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Resolution" type="Control" parent="Control/Menu/List" groups=["window"]] margin_top = 1200.0 margin_right = 640.0 margin_bottom = 1270.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 6 ) __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Control/Menu/List/Resolution"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Window Size" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Resolution"] anchor_left = 0.25 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< 1280 x 720 >" align = 2 valign = 1 [node name="Mouse" type="Control" parent="Control/Menu/List" groups=["window"]] margin_top = 1270.0 margin_right = 640.0 margin_bottom = 1340.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 18 ) __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Control/Menu/List/Mouse"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Mouse" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Mouse"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Vsync" type="Control" parent="Control/Menu/List"] margin_top = 1340.0 margin_right = 640.0 margin_bottom = 1410.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 17 ) __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Control/Menu/List/Vsync"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "V-Sync" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Vsync"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Interpolate" type="Control" parent="Control/Menu/List"] margin_top = 1410.0 margin_right = 640.0 margin_bottom = 1480.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false } var_name = "is_interpolate" [node name="Label" type="Label" parent="Control/Menu/List/Interpolate"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Interpolate" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Interpolate"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="TargetFPS" type="Control" parent="Control/Menu/List"] margin_top = 1480.0 margin_right = 640.0 margin_bottom = 1550.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false } list = PoolStringArray( "OFF", "30", "60", "90", "120", "144", "240" ) var_name = "target_fps" is_int = true [node name="Label" type="Label" parent="Control/Menu/List/TargetFPS"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Frame Limit" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/TargetFPS"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Iterations" type="Control" parent="Control/Menu/List"] visible = false margin_top = 1270.0 margin_right = 640.0 margin_bottom = 1340.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false } list = PoolStringArray( "60", "90", "120", "144" ) var_name = "iterations" is_int = true [node name="Label" type="Label" parent="Control/Menu/List/Iterations"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Physics Step" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Iterations"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="RadialBlur" type="Control" parent="Control/Menu/List"] margin_top = 1550.0 margin_right = 640.0 margin_bottom = 1620.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false } list = PoolStringArray( "OFF", "0.5", "1.0", "2.0", "3.0", "5.0", "10.0", "TRIP" ) var_name = "radial_blur" [node name="Label" type="Label" parent="Control/Menu/List/RadialBlur"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Radial Blur" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/RadialBlur"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Light" type="Control" parent="Control/Menu/List"] margin_top = 1620.0 margin_right = 640.0 margin_bottom = 1690.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false } is_refill = true var_name = "light_enabled" [node name="Label" type="Label" parent="Control/Menu/List/Light"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Dynamic Light" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Light"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Shadows" type="Control" parent="Control/Menu/List" groups=["light"]] margin_top = 1690.0 margin_right = 640.0 margin_bottom = 1760.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false } is_refill = true [node name="Label" type="Label" parent="Control/Menu/List/Shadows"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Shadows" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Shadows"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="ShadowBuffer" type="Control" parent="Control/Menu/List" groups=["light", "shadow"]] margin_top = 1760.0 margin_right = 640.0 margin_bottom = 1830.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false } list = PoolStringArray( "Low", "Medium", "High", "Ultra", "MAX" ) var_name = "shadow_buffer" [node name="Label" type="Label" parent="Control/Menu/List/ShadowBuffer"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Shadow Quality" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/ShadowBuffer"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Weather" type="Control" parent="Control/Menu/List" groups=["light", "shadow"]] margin_top = 1830.0 margin_right = 640.0 margin_bottom = 1900.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false } var_name = "is_weather" [node name="Label" type="Label" parent="Control/Menu/List/Weather"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Weather" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Weather"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Spacer4" type="Control" parent="Control/Menu/List" groups=["no_item"]] margin_top = 1900.0 margin_right = 640.0 margin_bottom = 1930.0 rect_min_size = Vector2( 0, 30 ) __meta__ = { "_edit_use_anchors_": false } [node name="HeaderSpeed" type="Control" parent="Control/Menu/List" groups=["no_item"]] margin_top = 1930.0 margin_right = 640.0 margin_bottom = 2000.0 rect_min_size = Vector2( 0, 70 ) [node name="Tex" type="TextureRect" parent="Control/Menu/List/HeaderSpeed"] anchor_right = 0.1 anchor_bottom = 1.0 size_flags_horizontal = 3 size_flags_vertical = 3 texture = ExtResource( 1 ) expand = true stretch_mode = 6 [node name="Label" type="Label" parent="Control/Menu/List/HeaderSpeed"] anchor_left = 0.11 anchor_right = 1.0 anchor_bottom = 1.0 custom_fonts/font = ExtResource( 3 ) text = "Speedrun" valign = 1 [node name="Speedrun" type="Control" parent="Control/Menu/List"] margin_top = 2000.0 margin_right = 640.0 margin_bottom = 2070.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false, "_editor_description_": "" } list = PoolStringArray( "OFF", "MAP", "FILE", "BOTH", "TRADE" ) is_refill = true is_ui_scene = true var_name = "clock_show" [node name="Label" type="Label" parent="Control/Menu/List/Speedrun"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Clock" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Speedrun"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< OFF >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Speedrun2" type="Control" parent="Control/Menu/List" groups=["speed"]] margin_top = 2070.0 margin_right = 640.0 margin_bottom = 2140.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false, "_editor_description_": "" } list = PoolStringArray( "LESS", "HALF", "MORE", "FULL" ) is_ui_scene = true var_name = "clock_alpha" is_frac = true [node name="Label" type="Label" parent="Control/Menu/List/Speedrun2"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Opacity" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Speedrun2"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< HALF >" align = 2 valign = 1 [node name="Decimals" type="Control" parent="Control/Menu/List" groups=["speed"]] margin_top = 2140.0 margin_right = 640.0 margin_bottom = 2210.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 24 ) __meta__ = { "_edit_use_anchors_": false, "_editor_description_": "" } count = 3 is_ui_scene = true var_name = "clock_decimals" [node name="Label" type="Label" parent="Control/Menu/List/Decimals"] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "Decimals" valign = 1 [node name="Label2" type="Label" parent="Control/Menu/List/Decimals"] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) text = "< 2 >" align = 2 valign = 1 [editable path="Control/Menu/List/Music"] [editable path="Control/Menu/List/SFX"] [editable path="Control/Menu/List/Weather2"] ================================================ FILE: src/menu/options/MenuRemap.gd ================================================ extends MenuBase onready var control := $Center/Control onready var prompt_ease := EaseMover.new() var is_prompt := false onready var prompt_key := $Center/Control/Prompt/VBoxContainer/Key onready var prompt_timer_label := $Center/Control/Prompt/VBoxContainer/Timer var prompt_clock := 0.0 var prompt_time := 5.0 var is_button := false onready var key = preload("res://src/menu/options/Key.tscn") export var is_gamepad := false onready var header := $Center/Control/Header onready var header_back := $Center/Control/Header/Back onready var header_ease := EaseMover.new(0.2) onready var header_track := $Center/Control/Menu/List/Spacer onready var title_label := $Center/Control/Menu/List/Title var defaults := {} func _ready(): # get default binds defaults = Shared.default_keys.duplicate() prompt_ease.node = $Center/Control/Prompt func _input(event): if !is_open: return # prompt input if is_prompt: if event.is_action_pressed("ui_pause"): is_prompt = false audio_back() elif event.is_pressed() and is_type(event) and !event.is_action("ui_end") and !event.is_echo(): assign_key(items[cursor].action, event) is_prompt = false get_tree().set_input_as_handled() audio_accept() # clear key elif event.is_action_pressed("ui_end"): clear_row(cursor) audio_accept() # menu input else: menu_input(event) func _process(delta): if is_prompt: prompt_clock -= delta prompt_timer_label.text = str(ceil(max(0, prompt_clock))) if prompt_clock < 0: is_prompt = false prompt_ease.node.modulate.a = prompt_ease.count(delta, is_prompt) prompt_ease.node.visible = prompt_ease.clock > 0 #if !is_open: return # header position header.rect_global_position.y = clamp(header_track.rect_global_position.y, 30, 1280) # header back header_ease.show = header.rect_global_position.y == 30 header_back.modulate.a = header_ease.count(delta) func accept(): if items[cursor].is_in_group("reset"): reset_to_defaults() elif items[cursor].is_in_group("remap"): is_prompt = true prompt_key.text = items[cursor].text prompt_clock = prompt_time get_tree().set_input_as_handled() func open(): # create keys for i in items.size(): create_keys(i) # header text title_label.text = ("Controller" if is_gamepad else "Keyboard") + " Setup" func close(): Shared.save_keys() # remove keys for i in items.size(): remove_keys(i) func draw_key(key_node, event): if !is_type(event): return key_node.parse_event(event) func remove_keys(row := 0): if items[row].is_in_group("remap"): for i in items[row].get_node("Keys").get_children(): i.queue_free() func clear_row(row := 0): if items[row].is_in_group("remap"): remove_keys(row) var action = items[row].action var list = [] for i in InputMap.get_action_list(action): if is_type(i): list.append(i) # keep one event for ui if "ui_" in action: list.pop_back() for i in list: InputMap.action_erase_event(action, i) create_keys(row) emit_gamepad() func emit_gamepad(): Shared.emit_signal("gamepad_input", Shared.is_gamepad) func assign_key(action, event): # remove event if present if InputMap.action_has_event(action, event): InputMap.action_erase_event(action, event) # add event to action, will bring to front of list if present InputMap.action_add_event(action, event) # keep action size to 4 events of type var list = [] for i in InputMap.get_action_list(action): if is_type(i): list.append(i) if list.size() > 4: InputMap.action_erase_event(action, list[0]) create_keys(cursor) emit_gamepad() func create_keys(row): var r = items[row] if key and r.is_in_group("remap"): var action = items[row].action for i in r.get_node("Keys").get_children(): i.queue_free() for i in InputMap.get_action_list(action): if is_type(i): var k = key.instance() r.get_node("Keys").add_child(k) draw_key(k, i) func is_type(event): var test = !is_gamepad and event is InputEventKey if !test: test = is_gamepad and (event is InputEventJoypadButton or event is InputEventJoypadMotion) return test func reset_to_defaults(): for action in InputMap.get_actions(): for event in InputMap.get_action_list(action): if is_type(event): InputMap.action_erase_event(action, event) for action in defaults.keys(): for event in defaults[action]: if is_type(event): InputMap.action_add_event(action, event) for i in items.size() - 1: create_keys(i) emit_gamepad() ================================================ FILE: src/menu/options/MenuRemap.tscn ================================================ [gd_scene load_steps=12 format=2] [ext_resource path="res://src/menu/options/Key.tscn" type="PackedScene" id=1] [ext_resource path="res://media/font/profile/OptionsHeader2.tres" type="DynamicFont" id=2] [ext_resource path="res://media/font/profile/OptionsItem.tres" type="DynamicFont" id=3] [ext_resource path="res://media/font/profile/OptionsHeader.tres" type="DynamicFont" id=4] [ext_resource path="res://src/menu/options/MenuRemap.gd" type="Script" id=5] [ext_resource path="res://src/menu/options/Row.tscn" type="PackedScene" id=6] [ext_resource path="res://src/shader/fade_x.gdshader" type="Shader" id=7] [sub_resource type="ShaderMaterial" id=23] shader = ExtResource( 7 ) shader_param/size = 0.5 shader_param/width = 0.1 shader_param/color = Color( 1, 1, 1, 1 ) shader_param/scale = 1.0 shader_param/is_half = false [sub_resource type="StyleBoxFlat" id=18] bg_color = Color( 1, 1, 1, 1 ) border_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 50 corner_radius_top_right = 50 corner_radius_bottom_right = 50 corner_radius_bottom_left = 50 [sub_resource type="StyleBoxFlat" id=22] bg_color = Color( 0, 0, 0, 1 ) border_width_left = 5 border_width_top = 5 border_width_right = 5 border_width_bottom = 5 border_color = Color( 1, 1, 1, 1 ) corner_radius_top_left = 39 corner_radius_top_right = 39 corner_radius_bottom_right = 39 corner_radius_bottom_left = 39 [sub_resource type="StyleBoxFlat" id=21] bg_color = Color( 0, 0, 0, 1 ) corner_radius_top_left = 50 corner_radius_top_right = 50 corner_radius_bottom_right = 50 corner_radius_bottom_left = 50 [node name="RemapMenu" type="CanvasLayer"] pause_mode = 2 layer = 7 script = ExtResource( 5 ) items_path = NodePath("Center/Control/Menu/List") cursor_path = NodePath("Center/Control/Menu/Cursor") cursor_margin = Vector2( 25, 0 ) scroll_path = NodePath("Center/Control/Menu") fade_path = NodePath("Center/Control") is_process = true is_back_close = true [node name="Center" type="CenterContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 [node name="Control" type="Control" parent="Center"] margin_right = 1280.0 margin_bottom = 720.0 rect_min_size = Vector2( 1280, 720 ) [node name="BG" type="ColorRect" parent="Center/Control"] modulate = Color( 0, 0, 0, 0.8 ) material = SubResource( 23 ) margin_left = 70.0 margin_right = 1210.0 margin_bottom = 720.0 [node name="Menu" type="Control" parent="Center/Control"] anchor_left = 0.25 anchor_right = 0.75 margin_bottom = 720.0 __meta__ = { "_edit_use_anchors_": false } [node name="Cursor" type="Panel" parent="Center/Control/Menu"] modulate = Color( 0.658824, 0, 0, 1 ) margin_right = 100.0 margin_bottom = 50.0 custom_styles/panel = SubResource( 18 ) __meta__ = { "_editor_description_": "" } [node name="List" type="VBoxContainer" parent="Center/Control/Menu"] anchor_right = 1.0 anchor_bottom = 1.0 margin_bottom = 115.0 __meta__ = { "_edit_use_anchors_": false } [node name="Title" type="Label" parent="Center/Control/Menu/List" groups=["no_item"]] margin_right = 640.0 margin_bottom = 51.0 custom_fonts/font = ExtResource( 4 ) text = "Keyboard Setup" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Spacer" type="Control" parent="Center/Control/Menu/List" groups=["no_item"]] margin_top = 55.0 margin_right = 640.0 margin_bottom = 175.0 rect_min_size = Vector2( 0, 120 ) [node name="Game" type="Label" parent="Center/Control/Menu/List" groups=["no_item"]] modulate = Color( 0.7, 0.7, 0.7, 1 ) margin_top = 179.0 margin_right = 640.0 margin_bottom = 220.0 custom_fonts/font = ExtResource( 3 ) text = "Game" valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Row5" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 224.0 margin_right = 640.0 margin_bottom = 304.0 action = "jump" text = "Jump" [node name="Row6" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 308.0 margin_right = 640.0 margin_bottom = 388.0 action = "grab" text = "Grab" [node name="Row7" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 392.0 margin_right = 640.0 margin_bottom = 472.0 action = "zoom" text = "Zoom" [node name="Row" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 476.0 margin_right = 640.0 margin_bottom = 556.0 action = "left" text = "Left" [node name="Row2" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 560.0 margin_right = 640.0 margin_bottom = 640.0 action = "right" text = "Right" [node name="Row3" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 644.0 margin_right = 640.0 margin_bottom = 724.0 action = "up" text = "Up" [node name="Row4" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 728.0 margin_right = 640.0 margin_bottom = 808.0 action = "down" text = "Down" [node name="Spacer2" type="Control" parent="Center/Control/Menu/List" groups=["no_item"]] margin_top = 812.0 margin_right = 640.0 margin_bottom = 852.0 rect_min_size = Vector2( 0, 40 ) [node name="Menu" type="Control" parent="Center/Control/Menu/List" groups=["no_item"]] modulate = Color( 0.7, 0.7, 0.7, 1 ) margin_top = 856.0 margin_right = 640.0 margin_bottom = 906.0 rect_min_size = Vector2( 0, 50 ) [node name="Menu" type="Label" parent="Center/Control/Menu/List/Menu"] margin_top = 4.0 margin_right = 640.0 margin_bottom = 52.0 custom_fonts/font = ExtResource( 3 ) text = "Menu" valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Menu2" type="Label" parent="Center/Control/Menu/List/Menu"] margin_top = 4.0 margin_right = 640.0 margin_bottom = 52.0 custom_fonts/font = ExtResource( 2 ) text = "Minimum one action" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Row13" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 910.0 margin_right = 640.0 margin_bottom = 990.0 action = "ui_accept" text = "Accept" [node name="Row14" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 994.0 margin_right = 640.0 margin_bottom = 1074.0 action = "ui_cancel" text = "Cancel" [node name="Row15" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 1078.0 margin_right = 640.0 margin_bottom = 1158.0 action = "ui_pause" text = "Pause" [node name="Row9" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 1162.0 margin_right = 640.0 margin_bottom = 1242.0 action = "ui_left" text = "Left" [node name="Row10" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 1246.0 margin_right = 640.0 margin_bottom = 1326.0 action = "ui_right" text = "Right" [node name="Row11" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 1330.0 margin_right = 640.0 margin_bottom = 1410.0 action = "ui_up" text = "Up" [node name="Row12" parent="Center/Control/Menu/List" instance=ExtResource( 6 )] anchor_right = 0.0 margin_top = 1414.0 margin_right = 640.0 margin_bottom = 1494.0 action = "ui_down" text = "Down" [node name="Reset" type="Label" parent="Center/Control/Menu/List" groups=["reset"]] margin_top = 1498.0 margin_right = 640.0 margin_bottom = 1578.0 rect_min_size = Vector2( 0, 80 ) custom_fonts/font = ExtResource( 3 ) text = "Reset to Defaults" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Header" type="Control" parent="Center/Control"] anchor_left = 0.2 anchor_right = 0.8 margin_left = -60.0 margin_top = 75.0 margin_right = 60.0 margin_bottom = 155.0 rect_min_size = Vector2( 0, 80 ) __meta__ = { "_edit_use_anchors_": false } [node name="Back" type="Panel" parent="Center/Control/Header"] anchor_right = 1.0 anchor_bottom = 1.0 custom_styles/panel = SubResource( 22 ) __meta__ = { "_edit_use_anchors_": false } [node name="HBoxContainer" type="HBoxContainer" parent="Center/Control/Header"] anchor_right = 1.0 anchor_bottom = 1.0 custom_constants/separation = 15 alignment = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Center/Control/Header/HBoxContainer"] margin_left = 72.0 margin_top = 19.0 margin_right = 183.0 margin_bottom = 60.0 rect_pivot_offset = Vector2( -390.432, 251.663 ) custom_fonts/font = ExtResource( 3 ) text = "Press" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Key" parent="Center/Control/Header/HBoxContainer" instance=ExtResource( 1 )] margin_left = 198.0 margin_top = 15.0 margin_right = 248.0 margin_bottom = 65.0 size_flags_vertical = 4 action = "ui_accept" is_connect = true [node name="Label2" type="Label" parent="Center/Control/Header/HBoxContainer"] margin_left = 263.0 margin_top = 19.0 margin_right = 566.0 margin_bottom = 60.0 rect_pivot_offset = Vector2( -390.432, 251.663 ) custom_fonts/font = ExtResource( 3 ) text = "to add button" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Key2" parent="Center/Control/Header/HBoxContainer" instance=ExtResource( 1 )] margin_left = 581.0 margin_top = 15.0 margin_right = 631.0 margin_bottom = 65.0 size_flags_vertical = 4 action = "ui_end" is_connect = true [node name="Label3" type="Label" parent="Center/Control/Header/HBoxContainer"] margin_left = 646.0 margin_top = 19.0 margin_right = 815.0 margin_bottom = 60.0 rect_pivot_offset = Vector2( -390.432, 251.663 ) custom_fonts/font = ExtResource( 3 ) text = "to clear" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Prompt" type="Panel" parent="Center/Control"] visible = false self_modulate = Color( 0, 0, 0, 0.7 ) anchor_left = 0.3 anchor_top = 0.3 anchor_right = 0.7 anchor_bottom = 0.7 margin_right = 40.0 margin_bottom = 40.0 custom_styles/panel = SubResource( 21 ) __meta__ = { "_edit_use_anchors_": false } [node name="VBoxContainer" type="VBoxContainer" parent="Center/Control/Prompt"] anchor_right = 1.0 anchor_bottom = 1.0 custom_constants/separation = 0 __meta__ = { "_edit_use_anchors_": false } [node name="Prompt" type="Label" parent="Center/Control/Prompt/VBoxContainer"] margin_right = 552.0 margin_bottom = 109.0 rect_pivot_offset = Vector2( -390.432, 251.663 ) size_flags_horizontal = 3 size_flags_vertical = 3 custom_fonts/font = ExtResource( 3 ) text = "Press new key for:" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Key" type="Label" parent="Center/Control/Prompt/VBoxContainer"] margin_top = 109.0 margin_right = 552.0 margin_bottom = 218.0 rect_pivot_offset = Vector2( -390.432, 251.663 ) size_flags_horizontal = 3 size_flags_vertical = 3 custom_fonts/font = ExtResource( 3 ) text = "Up" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Timer" type="Label" parent="Center/Control/Prompt/VBoxContainer"] margin_top = 218.0 margin_right = 552.0 margin_bottom = 328.0 rect_pivot_offset = Vector2( -390.432, 251.663 ) size_flags_horizontal = 3 size_flags_vertical = 3 custom_fonts/font = ExtResource( 3 ) text = "5" align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } ================================================ FILE: src/menu/options/OpenRemap.gd ================================================ extends Control export var is_gamepad := false func act(): MenuOptions.open_remap(is_gamepad) ================================================ FILE: src/menu/options/Row.gd ================================================ tool extends Control export var action := "" export var text := "Label" setget set_text func _ready(): $Label.text = text func set_text(arg): text = arg $Label.text = text ================================================ FILE: src/menu/options/Row.tscn ================================================ [gd_scene load_steps=3 format=2] [ext_resource path="res://media/font/profile/OptionsItem.tres" type="DynamicFont" id=1] [ext_resource path="res://src/menu/options/Row.gd" type="Script" id=2] [node name="Row" type="Control" groups=["remap"]] anchor_right = 1.0 margin_top = 210.0 margin_bottom = 290.0 rect_min_size = Vector2( 0, 80 ) script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="."] anchor_right = 0.5 anchor_bottom = 1.0 rect_pivot_offset = Vector2( -390.432, 251.663 ) size_flags_vertical = 6 custom_fonts/font = ExtResource( 1 ) text = "Label" valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Keys" type="HBoxContainer" parent="."] anchor_left = 0.2 anchor_right = 1.0 anchor_bottom = 1.0 custom_constants/separation = 15 alignment = 2 __meta__ = { "_edit_use_anchors_": false } ================================================ FILE: src/menu/options/scroll/Borderless.gd ================================================ extends Scroll func _ready(): cursor = int(OS.window_borderless) set_label() func set_value(): OS.window_borderless = bool(cursor) Shared.set_window_size() ================================================ FILE: src/menu/options/scroll/Color.gd ================================================ extends Scroll export (String, "hair", "skin", "fit", "eye") var part := "hair" onready var swatch := $HBoxContainer.get_children() func _ready(): count = Shared.player.palette.size() - 1 func set_value(): var p = [] var pal = Shared.player.palette for i in [-2, -1, 0, 1, 2]: p.append(pal[posmod(cursor + i, pal.size())]) for i in p.size(): swatch[i].modulate = p[i] if label_value: label_value.modulate = p[1] if Shared.player.dye[part] != cursor: Shared.player.dye[part] = cursor ================================================ FILE: src/menu/options/scroll/Color.tscn ================================================ [gd_scene load_steps=4 format=2] [ext_resource path="res://media/font/profile/OptionsItem.tres" type="DynamicFont" id=1] [ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=2] [ext_resource path="res://src/menu/options/scroll/Color.gd" type="Script" id=3] [node name="Color" type="Control" groups=["color"]] margin_right = 800.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 3 ) is_loop = true count = 17 [node name="Label" type="Label" parent="."] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 1 ) text = "Color" valign = 1 [node name="HBoxContainer" type="HBoxContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 alignment = 2 [node name="Circle" type="Control" parent="HBoxContainer"] modulate = Color( 0, 1, 0, 1 ) margin_left = 434.0 margin_right = 504.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 2 ) radius = 30.0 [node name="Circle2" type="Control" parent="HBoxContainer"] modulate = Color( 1, 0, 0, 1 ) margin_left = 508.0 margin_right = 578.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 2 ) radius = 30.0 [node name="Circle3" type="Control" parent="HBoxContainer"] modulate = Color( 0, 0, 1, 1 ) margin_left = 582.0 margin_right = 652.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 2 ) radius = 30.0 [node name="Circle4" type="Control" parent="HBoxContainer"] margin_left = 656.0 margin_right = 726.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 2 ) radius = 30.0 [node name="Circle5" type="Control" parent="HBoxContainer"] modulate = Color( 0, 0, 0, 1 ) margin_left = 730.0 margin_right = 800.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 2 ) radius = 30.0 ================================================ FILE: src/menu/options/scroll/Fullscreen.gd ================================================ extends Scroll func _ready(): cursor = int(OS.window_fullscreen) set_label() func set_value(): if cursor != int(OS.window_fullscreen): Shared.toggle_fullscreen() ================================================ FILE: src/menu/options/scroll/Hairstyle.gd ================================================ extends Scroll export(String, "back", "front") var order = "back" onready var hbox := $HBoxContainer onready var circle := $HBoxContainer/Circle var scenes := [] var items := [] func _ready(): scenes = Shared.player.get("hair_" + order + "s") count = scenes.size() - 1 for i in scenes.size(): if i == 0: continue var c = circle.duplicate() hbox.add_child(c) var s = load(scenes[i]).instance() if order == "back": s.show_behind_parent = true s.position = Vector2(35, 35) c.add_child(s) items = hbox.get_children() for i in items.size(): items[i].visible = i < 5 # specific mohawk fix for i in Shared.get_all_children(hbox): if i.get("z_index") and i.z_index < 0: i.z_index = 0 func set_value(): var s = "hairstyle_" + order if Shared.player.get(s) != cursor: Shared.player.set(s, cursor) for i in items: i.visible = false for i in 5: var p = posmod(cursor + (i - 2), items.size()) hbox.move_child(items[p], i) items[p].visible = true ================================================ FILE: src/menu/options/scroll/Hairstyle.tscn ================================================ [gd_scene load_steps=3 format=2] [ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=1] [ext_resource path="res://src/menu/options/scroll/Hairstyle.gd" type="Script" id=3] [node name="Hairstyle" type="Control" groups=["hair"]] margin_right = 560.0 margin_bottom = 70.0 rect_min_size = Vector2( 0, 70 ) script = ExtResource( 3 ) is_loop = true [node name="HBoxContainer" type="HBoxContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 alignment = 1 [node name="Circle" type="Control" parent="HBoxContainer"] self_modulate = Color( 0, 0, 0, 1 ) margin_left = 245.0 margin_right = 315.0 margin_bottom = 70.0 rect_min_size = Vector2( 70, 70 ) script = ExtResource( 1 ) radius = 20.0 circle_offset = Vector2( 35, 35 ) ================================================ FILE: src/menu/options/scroll/Mouse.gd ================================================ extends Scroll func _ready(): cursor = int(Input.mouse_mode == Input.MOUSE_MODE_VISIBLE) set_label() func set_value(): Input.mouse_mode = Input.MOUSE_MODE_VISIBLE if bool(cursor) else Input.MOUSE_MODE_HIDDEN ================================================ FILE: src/menu/options/scroll/Resolution.gd ================================================ extends Scroll func _ready(): list = [] for i in Shared.win_sizes: list.append(str(i.x) + ", " + str(i.y)) var f = Array(Shared.win_sizes).find(Shared.win_size) if f != -1: cursor = f set_label() func set_value(): Shared.set_window_size(Shared.win_sizes[cursor]) ================================================ FILE: src/menu/options/scroll/Scroll.gd ================================================ extends Control class_name Scroll onready var label_desc := get_node_or_null("Label") onready var label_value := get_node_or_null("Label2") var cursor := 0 setget set_cursor export var is_loop := false export var count := 0 export var list : PoolStringArray = ["OFF", "ON"] var is_select := false export var is_refill := false export var is_ui_scene := false export var step := 1 func _ready(): set_label() func set_label(): if is_instance_valid(label_value): var s = ["< " if is_select and (is_loop or cursor > 0) else "", " >" if is_select and (is_loop or cursor < max(count, list.size() - 1)) else ""] label_value.text = s[0] + str(list[cursor] if count == 0 else cursor) + s[1] func set_value(): pass func set_cursor(arg := cursor): cursor = posmod(arg, max(count + 1, list.size())) if is_loop else clamp(arg, 0, max(count, list.size() - 1)) set_label() set_value() if is_refill: MenuOptions.fill_items() if is_ui_scene: UI.scene_changed(true) func select(arg := is_select): is_select = arg set_label() func axis_x(arg := 1): self.cursor += arg * step ================================================ FILE: src/menu/options/scroll/ScrollVar.gd ================================================ extends Scroll export var var_name := "shadow_enabled" export var is_frac := false export var is_int := false func _ready(): cursor = clamp(int(Shared.get(var_name)), 0.0, list.size() - 1) if is_frac: cursor = (cursor * list.size()) - 1 elif is_int: cursor = max(0, list.find(str(cursor))) else: cursor = int(Shared.get(var_name)) set_label() func set_value(): Shared.set(var_name, (float(cursor + 1) / list.size()) if is_frac else int(list[cursor]) if is_int else cursor) ================================================ FILE: src/menu/options/scroll/Volume.gd ================================================ extends Scroll export var bus := 0 onready var audio := $Audio func _ready(): count = 10 audio.bus = AudioServer.get_bus_name(bus) cursor = Shared.volume[bus] / 10 set_label() func set_value(): Shared.set_volume(bus, cursor * 10) audio.pitch_scale = rand_range(0.5, 1.5) audio.play() ================================================ FILE: src/menu/options/scroll/Volume.tscn ================================================ [gd_scene load_steps=4 format=2] [ext_resource path="res://media/font/profile/OptionsItem.tres" type="DynamicFont" id=1] [ext_resource path="res://media/audio/sfx/coin1.wav" type="AudioStream" id=2] [ext_resource path="res://src/menu/options/scroll/Volume.gd" type="Script" id=3] [node name="Volume" type="Control"] margin_right = 1080.0 margin_bottom = 80.0 rect_min_size = Vector2( 0, 80 ) script = ExtResource( 3 ) count = 10 [node name="Label" type="Label" parent="."] anchor_right = 0.5 anchor_bottom = 1.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 1 ) text = "Volume" valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Label2" type="Label" parent="."] anchor_left = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 1 ) text = "< 5 >" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } [node name="Audio" type="AudioStreamPlayer" parent="."] stream = ExtResource( 2 ) ================================================ FILE: src/menu/options/scroll/Vsync.gd ================================================ extends Scroll func _ready(): cursor = int(OS.vsync_enabled) set_label() func set_value(): OS.vsync_enabled = bool(cursor) ================================================ FILE: src/menu/round_button.gd ================================================ tool extends TouchScreenButton export var angle := 0.0 setget set_angle export var radius := 60.0 setget set_radius export var points := 5 setget set_points export var deadzone := 3.0 setget set_deadzone export var dead_points := 5 setget set_dead_points export var poly_path : NodePath = "" onready var poly : Polygon2D = get_node_or_null(poly_path) export var poly_offset := 5.0 setget set_poly_offset export var poly_radius := 50.0 setget set_poly_radius export var poly_points := 5 setget set_poly_points export var poly_deadzone := 3.0 setget set_poly_deadzone export var poly_dead_points := 5 setget set_poly_dead_points export var secondary_action := "" func set_radius(arg := radius): radius = arg act() func set_points(arg := points): points = arg act() func set_angle(arg := angle): angle = arg act() func set_deadzone(arg := deadzone): deadzone = arg act() func set_dead_points(arg := dead_points): dead_points = arg act() func set_poly_radius(arg := poly_radius): poly_radius = arg poly_act() func set_poly_offset(arg := poly_offset): poly_offset = arg poly_act() func set_poly_deadzone(arg := poly_deadzone): poly_deadzone = arg poly_act() func set_poly_points(arg := poly_points): poly_points = arg poly_act() func set_poly_dead_points(arg := poly_dead_points): poly_dead_points = arg poly_act() func _ready(): act() poly_act() connect("pressed", self, "press") connect("released", self, "release") func press(): if secondary_action != "": Input.action_press(secondary_action) func release(): if secondary_action != "": Input.action_release(secondary_action) func act(): shape = ConvexPolygonShape2D.new() shape.points = make_shape() func poly_act(): if is_instance_valid(poly): poly.polygon = make_shape(poly_radius, poly_points, poly_deadzone, poly_dead_points) poly.position = Vector2(poly_offset, 0).rotated(deg2rad(angle)) func make_shape(_radius := radius, _points := points, _deadzone := deadzone, _dead_points := dead_points, _angle := angle): var vec = PoolVector2Array() for x in [[_dead_points, _deadzone, -1], [_points, _radius, 1]]: for y in x[0]: var f = y / float(x[0] - 1) vec.append(Vector2(x[1], 0).rotated(deg2rad(_angle + (lerp(-45, 45, f) * x[2])))) return vec ================================================ FILE: src/shader/add_color.gdshader ================================================ shader_type canvas_item; uniform vec4 add_color : hint_color = vec4(1.0, 0.0, 0.0, 1.0); void fragment(){ COLOR = texture(TEXTURE, UV) + vec4(add_color.rgb, 0.0); } ================================================ FILE: src/shader/arrow_test.gdshader ================================================ shader_type canvas_item; uniform float fill_y : hint_range(0.0, 1.0) = 0.5; void fragment(){ COLOR = mix(vec4(1.0), vec4(vec3(0.0), 1.0), float(UV.y > fill_y)); } ================================================ FILE: src/shader/box.gdshader ================================================ shader_type canvas_item; uniform sampler2D tread_mask; uniform vec4 tread_color : hint_color; uniform float time_scale : hint_range(0.0, 2.0) = 1.0; void fragment(){ float m = texture(tread_mask, (UV * vec2(1.0, 1.0)) + vec2(0, -TIME * time_scale)).r; vec4 c = texture(TEXTURE, UV); // invert color vec4 invert = vec4(vec3(1.0) - c.rgb, c.a); COLOR = mix(c, vec4(tread_color.rgb, c.a), m); } ================================================ FILE: src/shader/button.gdshader ================================================ shader_type canvas_item; uniform float offset_y : hint_range(0.0, 1.0) = 0.0; uniform sampler2D mask; void fragment(){ vec4 col = texture(TEXTURE, UV - vec2(0.0, offset_y)); //col -= texture(mask, UV); COLOR = col; } ================================================ FILE: src/shader/circle.gdshader ================================================ shader_type canvas_item; uniform float radius : hint_range(0.0, 1.0) = 0.5; uniform vec4 inside_color : hint_color = vec4(0.0); uniform vec4 outside_color : hint_color = vec4(1.0); void fragment(){ float dist = distance(vec2(0.5, 0.5), UV); COLOR = mix(inside_color, outside_color, float(dist > radius)); } ================================================ FILE: src/shader/circle_fade.gdshader ================================================ shader_type canvas_item; render_mode blend_add; uniform float width : hint_range(0.0, 0.5) = 0.1; void fragment(){ vec4 col = vec4(1.0); float dist = distance(vec2(0.5), UV); float nd = (dist - (0.5 - width)) / width; col.a = mix(1.0, 0.0, clamp(nd, 0.0, 1.0)); COLOR = col; } ================================================ FILE: src/shader/door.gdshader ================================================ shader_type canvas_item; uniform vec4 col1 : hint_color = vec4(1.0, 1.0, 1.0, 1.0); uniform vec4 col2 : hint_color = vec4(0.0, 0.0, 0.0, 1.0); uniform vec4 col3 : hint_color = vec4(1.0, 0.0, 0.0, 1.0); uniform float line : hint_range(0.0, 1.0) = 0.5; uniform bool is_flip = false; uniform float ring : hint_range(0.0, 1.0) = 0.5; uniform float ring_offset : hint_range(-3.0, 3.0) = 0.0; void fragment(){ COLOR = mix(col1, mix(col2, col3, floor(mod((distance(vec2(0.5), UV) + (TIME * ring_offset)) / ring, 2.0))) , float(UV.x < line == is_flip)); } ================================================ FILE: src/shader/door_arrow.gdshader ================================================ shader_type canvas_item; uniform float fill_y : hint_range(0.0, 1.0) = 0.5; uniform bool is_flip = false; uniform bool is_descent = false; void fragment(){ vec4 c = texture(TEXTURE, UV); vec4 i = vec4(1.0) - c; float f = is_descent ? fill_y : (1.0 - fill_y); COLOR = mix(c, vec4(i.rgb, c.a), float(is_flip ? (UV.y > f) : (UV.y < f))); } ================================================ FILE: src/shader/door_big.gdshader ================================================ shader_type canvas_item; uniform vec4 col_fill : hint_color = vec4(1.0, 1.0, 1.0, 1.0); uniform vec4 col_back : hint_color = vec4(0.0, 0.0, 0.0, 1.0); uniform vec4 col_back2 : hint_color = vec4(1.0, 0.0, 0.0, 1.0); uniform vec4 col_line : hint_color = vec4(0.5, 0.5, 0.5, 1.0); uniform float line_width : hint_range(0.0, 1.0) = 0.035; uniform float line : hint_range(0.0, 1.0) = 0.5; uniform float ring : hint_range(0.0, 1.0) = 0.5; uniform float ring_offset : hint_range(-3.0, 3.0) = 0.0; uniform float gem_size : hint_range(0.0, 1.0) = 0.75; uniform float gem_line : hint_range(0.0, 1.0) = 0.667; uniform vec2 gem_offset = vec2(0.0, -0.1); uniform vec4 gem_col : hint_color = vec4(1.0, 1.0, 0.0, 1.0); uniform vec4 gem_fill : hint_color = vec4(1.0, 0.866, 0.0, 1.0); uniform vec4 knob_col : hint_color = vec4(1.0, 1.0, 0.0, 1.0); uniform vec2 knob_offset = vec2(0.25, 0.65); uniform float knob_size : hint_range(0.0, 0.3) = 0.075; void fragment(){ float x = abs(UV.x); float s = 1.0 - line; float new_x = (x - line) / s; float sum = new_x + abs(UV.y - gem_offset.y); bool is_knob = distance(vec2(new_x, UV.y), knob_offset) < knob_size; if (x < line){ COLOR = mix(col_back, col_back2, floor(mod((length(UV) + (TIME * ring_offset)) / ring, 2.0)) ); } else if (sum < gem_size){ COLOR = mix(gem_fill, gem_col, float(sum > gem_size * gem_line)); } else if (is_knob){ COLOR = knob_col; } else{ COLOR = mix(col_fill, col_line, float(x < line + (line_width * s))); } } ================================================ FILE: src/shader/fade_x.gdshader ================================================ shader_type canvas_item; render_mode blend_mix; uniform float size : hint_range(0.0, 1.0) = 0.5; uniform float width : hint_range(0.0, 1.0) = 0.1; uniform vec4 color : hint_color = vec4(1.0); uniform float scale : hint_range(0.01, 1.0) = 1.0; uniform bool is_half = false; void fragment(){ vec4 col = vec4(1.0); float dist = abs(0.5 - UV.x); float nd = (dist - (0.5 - width)) / width; col.a = mix(1.0, 0.0, clamp(nd, 0.0, 1.0)); COLOR = col * color; } ================================================ FILE: src/shader/goal.gdshader ================================================ shader_type canvas_item; uniform vec4 color : hint_color = vec4(1.0); uniform float radius : hint_range(0.0, 0.5) = 0.5; void fragment(){ vec4 c = color; c = vec4(1.0) - texture(SCREEN_TEXTURE, SCREEN_UV); c.a = float(distance(vec2(0.5), UV) < radius); COLOR = c; } ================================================ FILE: src/shader/guide.gdshader ================================================ shader_type canvas_item; uniform float height : hint_range(0.0, 5.0) = 3.0; uniform float fade_height : hint_range(0.0, 5.0) = 3.0; uniform float scale_x : hint_range(0.0, 1.0) = 1.0; uniform float scale_y : hint_range(0.0, 1.0) = 1.0; uniform float time_scale : hint_range(0.0, 2.0) = 1.0; uniform sampler2D tread_mask; uniform sampler2D box_mask; void fragment(){ vec4 c = texture(SCREEN_TEXTURE, SCREEN_UV); // invert color c = vec4(vec3(1.0) - c.rgb, 1.0); // gradient fade out c.a *= smoothstep(1.0, 0.0, (UV.y - (height * scale_y) + fade_height) / fade_height); // tread_mask c.a *= texture(tread_mask, vec2(UV.x, UV.y + -TIME * time_scale)).r; // scale_x cutoff c.a *= float(abs(UV.x - 0.5) < (scale_x * 0.5)); // box_mask c.a *= 1.0 - texture(box_mask, UV - vec2(0.0, 0.5)).a * float(UV.y < 0.5); COLOR = c; } ================================================ FILE: src/shader/inset_shadow.gdshader ================================================ shader_type canvas_item; uniform vec4 fill_color : hint_color = vec4(0.0, 0.0, 0.0, 1.0); uniform vec4 shadow_color : hint_color = vec4(0.2, 0.2, 0.2, 1.0); uniform float shadow_dist : hint_range(0.0, 0.3) = 0.1; uniform float shadow_angle : hint_range(-1.0, 1.0) = 0.0; uniform float shadow_offset : hint_range(0.0, 1.0) = 0.25; uniform vec2 uv_scale = vec2(1.0, 3.25); uniform float samples = 1.0; const float TAU = 6.28318530717959; void fragment(){ vec4 c = texture(TEXTURE, UV) * fill_color; for (float i = 1.0; i < samples + 1.0; i += 1.0){ float ang = (shadow_angle + shadow_offset) * TAU; float f = (i / ceil(samples)); vec4 s = texture(TEXTURE, UV + (vec2(sin(ang), cos(ang)) * uv_scale * shadow_dist * f)); c.rgb = mix(c.rgb, shadow_color.rgb, (1.0 - s.a) * (1.0 / samples)); } COLOR = c; } ================================================ FILE: src/shader/inside_circle.gdshader ================================================ shader_type canvas_item; uniform float radius : hint_range(0.0, 1.0) = 0.5; uniform float width : hint_range(0.0, 0.2) = 0.05; uniform vec4 line_color : hint_color = vec4(0.0, 0.0, 0.0, 1.0); uniform vec4 outside_color : hint_color = vec4(0.0, 0.0, 0.0, 0.0); void fragment(){ float dist = distance(vec2(0.5, 0.5), UV); if (dist < radius - width){ COLOR = texture(TEXTURE, UV); } else if (dist < radius) { COLOR = line_color; } else { COLOR = outside_color; } } ================================================ FILE: src/shader/inside_round_rect.gdshader ================================================ shader_type canvas_item; uniform float radius : hint_range(0.0, 0.5) = 0.25; uniform vec4 inside_color : hint_color = vec4(0.0); uniform vec4 outside_color : hint_color = vec4(1.0); void fragment(){ vec2 uv = abs(UV - floor(UV * 2.0)); COLOR = mix(inside_color, mix(outside_color, inside_color, float(distance(uv, vec2(radius)) < radius)), float(uv.x < radius && uv.y < radius)); } ================================================ FILE: src/shader/moon.gdshader ================================================ shader_type canvas_item; render_mode blend_mix; uniform vec2 point = vec2(0, 0.5); uniform float radius : hint_range(0.0, 1.0) = 0.5; uniform vec4 outside_color : hint_color = vec4(1.0); uniform vec4 inside_color : hint_color = vec4(0.0); uniform vec4 sun_color : hint_color = vec4(1.0, 1.0, 0.0, 1.0); uniform vec4 col1 : hint_color = vec4(1.0); uniform vec4 col2 : hint_color = vec4(0.0); uniform float sun_frac : hint_range(0.0, 1.0) = 0.0; uniform float time_scale : hint_range(0.0, 0.05) = 1.0; uniform float time_add : hint_range(0.0, 10.0) = 0.0; vec3 blendAddy(vec3 base, vec3 blend) { return min(base+blend,vec3(1.0)); } vec3 blendAdd(vec3 base, vec3 blend, float opacity) { return (blendAddy(base, blend) * opacity + base * (1.0 - opacity)); } void fragment(){ vec4 c = mix(col2, col1, SCREEN_UV.y); float f = mod(time_add + (TIME * time_scale), 2.0) - 0.5; vec4 nc = mix(outside_color, inside_color, float(distance(vec2(f, 0.5), UV) < radius)); COLOR = mix(vec4(blendAdd(c.rgb, nc.rgb, nc.a), 1.0), sun_color, sun_frac); } ================================================ FILE: src/shader/offset_y.gdshader ================================================ shader_type canvas_item; uniform float offset_y : hint_range(-1.0, 1.0) = 0.0; uniform vec4 add_color : hint_color = vec4(0.0, 0.0, 0.0, 0.0); void fragment(){ COLOR = texture(TEXTURE, UV - vec2(0.0, offset_y)) + vec4(add_color.rgb, 0.0); } ================================================ FILE: src/shader/outline2D_outer.shader ================================================ shader_type canvas_item; uniform vec4 line_color : hint_color = vec4(1); uniform float line_thickness : hint_range(0, 10) = 1.0; void fragment() { vec2 size = TEXTURE_PIXEL_SIZE * line_thickness; float outline = texture(TEXTURE, UV + vec2(-size.x, 0)).a; outline += texture(TEXTURE, UV + vec2(0, size.y)).a; outline += texture(TEXTURE, UV + vec2(size.x, 0)).a; outline += texture(TEXTURE, UV + vec2(0, -size.y)).a; outline += texture(TEXTURE, UV + vec2(-size.x, size.y)).a; outline += texture(TEXTURE, UV + vec2(size.x, size.y)).a; outline += texture(TEXTURE, UV + vec2(-size.x, -size.y)).a; outline += texture(TEXTURE, UV + vec2(size.x, -size.y)).a; outline = min(outline, 1.0); vec4 color = texture(TEXTURE, UV); COLOR = mix(color, line_color, outline - color.a); } ================================================ FILE: src/shader/radial_blur_guy.gdshader ================================================ shader_type canvas_item; render_mode blend_mix; uniform float blur_angle : hint_range(-10, 10) = 0.0; uniform float blur_offset : hint_range(-1.0, 1.0) = 0.0; uniform float steps : hint_range(1.0, 30.0) = 8.0; uniform float aspect : hint_range(0.0, 2.0) = 0.5625; void fragment() { vec2 uv = SCREEN_UV; uv.y *= aspect; vec2 center = vec2(0.5, 0.5 * aspect); float angle = atan(uv.y - center.y, uv.x - center.x); float dist = distance(uv, center); vec3 color = vec3(0.0); for (float i = 0.0; i < steps; i += 1.0) { float _angle = angle + (blur_angle * blur_offset) + mix(-blur_angle, blur_angle, i / ceil(steps)); vec2 tuv = vec2(cos(_angle), sin(_angle)) * dist + center; tuv.y /= aspect; color += texture(SCREEN_TEXTURE, tuv).rgb / ceil(steps); } COLOR.rgb = color; } ================================================ FILE: src/shader/repeat_x_axis.gdshader ================================================ shader_type canvas_item; void fragment(){ vec2 uv = UV; uv.x = mod(uv.x, 1.0); uv.y = clamp(UV.y, 0.0, 1.0); COLOR = texture(TEXTURE, uv); } ================================================ FILE: src/shader/sky.gdshader ================================================ shader_type canvas_item; uniform vec4 col1 : hint_color = vec4(0.0, 0.38, 1.0, 1.0); uniform vec4 col2 : hint_color = vec4(0.0, 0.92, 1.0, 1.0); void fragment(){ COLOR = mix(col1, col2, UV.y); } ================================================ FILE: src/shader/sky2.gdshader ================================================ shader_type canvas_item; uniform vec4 col0 : hint_color = vec4(0.0, 0.38, 1.0, 1.0); uniform vec4 col1 : hint_color = vec4(0.0, 0.92, 1.0, 1.0); uniform vec4 col2 : hint_color = vec4(0.0, 0.92, 1.0, 1.0); uniform vec4 col3 : hint_color = vec4(0.0, 0.38, 1.0, 1.0); uniform float time_scale : hint_range(0.0, 1.0) = 1.0; uniform float time = 30.0; void fragment(){ float f = abs((mod(TIME, time) / time) - 0.5) * 2.0; vec4 c1 = mix(col0, col2, f); vec4 c2 = mix(col1, col3, f); //mix(col0, col2, ) COLOR = mix(c1, c2, UV.y); } ================================================ FILE: src/shader/sky_screen.gdshader ================================================ shader_type canvas_item; uniform vec4 col1 : hint_color = vec4(0.0, 0.38, 1.0, 1.0); uniform vec4 col2 : hint_color = vec4(0.0, 0.92, 1.0, 1.0); void fragment(){ COLOR = mix(col1, col2, 1.0 -SCREEN_UV.y); } ================================================ FILE: src/shader/spike.gdshader ================================================ shader_type canvas_item; uniform float offset_y : hint_range(0.0, 0.5) = 0.0; uniform sampler2D mask; void fragment(){ vec4 col = texture(TEXTURE, UV - vec2(0.0, offset_y)); col.a *= -texture(mask, UV).a + 1.0; COLOR = col; } ================================================ FILE: src/shader/wipe.gdshader ================================================ shader_type canvas_item; uniform vec4 inside : hint_color = vec4(1.0, 1.0, 1.0, 1.0); uniform vec4 line : hint_color = vec4(0.0, 0.0, 0.0, 1.0); uniform vec4 outside : hint_color = vec4(1.0, 1.0, 1.0, 1.0); uniform float scale : hint_range(0.0, 20.0) = 1.0; uniform vec2 offset = vec2(0.0); uniform vec2 start_offset = vec2(0.5); uniform float radius : hint_range(0.0, 1.0) = 0.5; uniform float width : hint_range(0.0, 1.0) = 0.05; void fragment(){ float dist = distance(start_offset, mod(UV / scale - offset, 1.0)); if (dist < radius - width){ COLOR = inside; } else if (dist < radius) { COLOR = line; } else { COLOR = outside; } } ================================================ FILE: src/stage/SolidTileMap.gd ================================================ tool extends TileMap onready var auto = get_child(0) export var detail := 0 setget set_tileset var sets = [preload("res://src/stage/tileset/TileSet0.tres"),preload("res://src/stage/tileset/TileSet1.tres"), preload("res://src/stage/tileset/TileSet2.tres"),preload("res://src/stage/tileset/TileSet3.tres"), preload("res://src/stage/tileset/TileSet4.tres"),preload("res://src/stage/tileset/TileSet5.tres"), preload("res://src/stage/tileset/TileSet6.tres")] func _ready(): set_tileset() tile_set.tile_set_modulate(0, Color(0, 0, 0, 0)) make_tiles() func set_tileset(arg := detail): detail = posmod(int(arg), sets.size()) if auto and detail < sets.size(): if sets[detail] is TileSet: auto.tile_set = sets[detail] auto.update() func set_cell(x, y, tile, flip_x=false, flip_y=false, transpose=false, autotile_coord=Vector2()): .set_cell(x, y, tile, flip_x, flip_y, transpose, autotile_coord) # larger range while in game var n = 1 if Engine.editor_hint else 2 # set tile range for _x in range(x - n, x + n): for _y in range(y - n, y + n): set_tile(_x, _y) func make_tiles(): auto.clear() var r = get_used_rect() for x in range(r.position.x - 1, r.position.x + r.size.x + 1): for y in range(r.position.y - 1, r.position.y + r.size.y + 1): set_tile(x, y) func set_tile(x : int, y : int): var up_left = int(get_cell(x, y) != -1) var up_right = int(get_cell(x + 1, y) != -1) var down_right = int(get_cell(x + 1, y + 1) != -1) var down_left = int(get_cell(x, y + 1) != -1) # calculate tile value var tile_value = up_left + (up_right * 2) + (down_right * 4) + (down_left * 8) # create tile var tile = -1 var fx := false var fy := false var tr := false var solid = 0 var corner = 1 var flat = 2 var inside = 3 var meeting = 4 match tile_value: 1: tile = corner fx = true fy = true 2: tile = corner fy = true 3: tile = flat fy = true 4: tile = corner 5: tile = meeting fx = true 6: tile = flat tr = true fy = true 7: tile = inside fy = true 8: tile = corner fx = true 9: tile = flat tr = true fx = true 10: tile = meeting 11: tile = inside fx = true fy = true 12: tile = flat 13: tile = inside fx = true 14: tile = inside 15: tile = solid if !auto: auto = get_child(0) auto.set_cell(x, y, tile, fx, fy, tr) ================================================ FILE: src/stage/SolidTileMap.tscn ================================================ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/stage/SolidTileMap.gd" type="Script" id=1] [ext_resource path="res://media/image/box/box-100.png" type="Texture" id=2] [ext_resource path="res://src/stage/tileset/TileSet0.tres" type="TileSet" id=3] [ext_resource path="res://src/shader/add_color.gdshader" type="Shader" id=4] [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 100, 100, 0, 100, 0, 0, 100, 0 ) [sub_resource type="TileSet" id=2] 0/name = "rect-100.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 5 ) 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 ) } ] 0/z_index = 0 [sub_resource type="ShaderMaterial" id=4] shader = ExtResource( 4 ) shader_param/add_color = Color( 0, 0, 0, 1 ) [node name="SolidTileMap" type="TileMap" groups=["solid_map"]] tile_set = SubResource( 2 ) cell_size = Vector2( 100, 100 ) occluder_light_mask = 0 format = 1 script = ExtResource( 1 ) [node name="Offset" type="TileMap" parent="."] material = SubResource( 4 ) position = Vector2( 50, 50 ) scale = Vector2( 0.25, 0.25 ) tile_set = ExtResource( 3 ) cell_size = Vector2( 400, 400 ) cell_custom_transform = Transform2D( 400, 0, 0, 400, 0, 0 ) format = 1 ================================================ FILE: src/stage/SpikeMap.gd ================================================ tool extends TileMap var spike_scene = preload("res://src/actor/Spike.tscn") var spikes = {} func _ready(): yield(get_parent(), "ready") tile_set.tile_set_modulate(0, Color(0, 0, 0, 0)) make_tiles() func set_cell(x, y, tile, flip_x=false, flip_y=false, transpose=false, autotile_coord=Vector2()): .set_cell(x, y, tile, flip_x, flip_y, transpose, autotile_coord) remove_spike(x, y) if tile == 0: set_spike(Vector2(x, y)) func rot(vec = Vector2.ZERO, dir = 0): return vec.rotated(deg2rad(dir * 90)).round() func make_tiles(): spikes = {} for i in get_children(): i.queue_free() for i in get_used_cells(): set_spike(i) func remove_spike(x : int, y : int): var key = str(x) + "," + str(y) if spikes.has(key) and is_instance_valid(spikes[key]): spikes[key].queue_free() spikes.erase(key) func set_spike(i : Vector2): # instance spike var s = spike_scene.instance() add_child(s) spikes[str(i.x) + "," + str(i.y)] = s # set pos s.position = (i + Vector2.ONE / 2) * cell_size # set dir var t = is_cell_transposed(i.x, i.y) var y = is_cell_y_flipped(i.x, i.y) if t and y: s.dir = 3 elif t: s.dir = 1 elif y: s.dir = 2 ================================================ FILE: src/stage/SpikeMap.tscn ================================================ [gd_scene load_steps=5 format=2] [ext_resource path="res://media/image/spike/spike_tile.png" type="Texture" id=1] [ext_resource path="res://src/stage/SpikeMap.gd" type="Script" id=2] [sub_resource type="ConvexPolygonShape2D" id=3] points = PoolVector2Array( 0, 100, 0, 90, 25, 50, 50, 90, 75, 50, 100, 90, 100, 100 ) [sub_resource type="TileSet" id=2] 0/name = "spike_tile.png 0" 0/texture = ExtResource( 1 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 0, 0, 0, 0 ) 0/region = Rect2( 0, 0, 100, 100 ) 0/tile_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( 3 ) 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( 3 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] 0/z_index = 0 [node name="SpikeMap" type="TileMap" groups=["spike"]] z_index = -1 tile_set = SubResource( 2 ) cell_size = Vector2( 100, 100 ) cell_custom_transform = Transform2D( 100, 0, 0, 100, 0, 0 ) collision_layer = 8 collision_mask = 0 format = 1 script = ExtResource( 2 ) ================================================ FILE: src/stage/tileset/TileSet0.tres ================================================ [gd_resource type="TileSet" load_steps=11 format=2] [ext_resource path="res://media/image/tiles/tile_4.png" type="Texture" id=1] [ext_resource path="res://media/image/tiles/tile_0.png" type="Texture" id=2] [ext_resource path="res://media/image/tiles/tile_3.png" type="Texture" id=3] [ext_resource path="res://media/image/tiles/tile_1.png" type="Texture" id=4] [ext_resource path="res://media/image/tiles/tile_2.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=1] polygon = PoolVector2Array( 400, 400, 0, 400, 0, 0, 400, 0 ) [sub_resource type="OccluderPolygon2D" id=6] polygon = PoolVector2Array( 200, 400, 200, 400, 200, 387, 150, 363, 200, 338, 200, 312, 175, 300, 201, 287, 203, 275, 206, 265, 183, 230, 226, 233, 232, 227, 240, 220, 238, 188, 266, 206, 273, 203, 280, 202, 312, 138, 344, 200, 356, 200, 375, 163, 394, 200, 400, 200, 400, 400 ) [sub_resource type="OccluderPolygon2D" id=7] polygon = PoolVector2Array( 0, 200, 0, 200, 12, 200, 38, 150, 62, 200, 87, 200, 100, 175, 113, 200, 150, 200, 175, 150, 200, 200, 237, 200, 250, 175, 263, 200, 287, 200, 313, 150, 338, 200, 362, 200, 375, 175, 388, 200, 400, 200, 400, 400, 0, 400 ) [sub_resource type="OccluderPolygon2D" id=8] polygon = PoolVector2Array( 0, 200, 0, 200, 12, 200, 38, 150, 62, 200, 87, 200, 100, 175, 113, 200, 134, 199, 142, 159, 166, 186, 181, 172, 192, 156, 170, 136, 199, 130, 200, 112, 150, 87, 200, 63, 200, 38, 175, 25, 200, 12, 200, 0, 400, 0, 400, 400, 0, 400 ) [sub_resource type="OccluderPolygon2D" id=9] polygon = PoolVector2Array( 0, 200, 0, 200, 12, 200, 38, 150, 63, 200, 83, 200, 91, 171, 111, 196, 122, 192, 113, 131, 167, 161, 174, 153, 153, 124, 190, 124, 194, 112, 144, 72, 199, 57, 199, 37, 175, 25, 200, 12, 200, 0, 400, 0, 400, 200, 387, 200, 363, 250, 337, 200, 317, 200, 310, 229, 289, 204, 278, 207, 287, 269, 231, 238, 225, 245, 247, 276, 207, 275, 203, 286, 256, 328, 199, 343, 199, 362, 225, 375, 200, 388, 200, 400, 0, 400 ) [resource] 0/name = "tile_0.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 1, 1, 1, 1 ) 0/region = Rect2( 0, 0, 400, 400 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 1 ) 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 = "tile_1.png 1" 1/texture = ExtResource( 4 ) 1/tex_offset = Vector2( 0, 0 ) 1/modulate = Color( 1, 1, 1, 1 ) 1/region = Rect2( 0, 0, 400, 400 ) 1/tile_mode = 0 1/occluder_offset = Vector2( 0, 0 ) 1/occluder = SubResource( 6 ) 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 = "tile_2.png 2" 2/texture = ExtResource( 5 ) 2/tex_offset = Vector2( 0, 0 ) 2/modulate = Color( 1, 1, 1, 1 ) 2/region = Rect2( 0, 0, 400, 400 ) 2/tile_mode = 0 2/occluder_offset = Vector2( 0, 0 ) 2/occluder = SubResource( 7 ) 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 = "tile_3.png 3" 3/texture = ExtResource( 3 ) 3/tex_offset = Vector2( 0, 0 ) 3/modulate = Color( 1, 1, 1, 1 ) 3/region = Rect2( 0, 0, 400, 400 ) 3/tile_mode = 0 3/occluder_offset = Vector2( 0, 0 ) 3/occluder = SubResource( 8 ) 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 4/name = "tile_4.png 4" 4/texture = ExtResource( 1 ) 4/tex_offset = Vector2( 0, 0 ) 4/modulate = Color( 1, 1, 1, 1 ) 4/region = Rect2( 0, 0, 400, 400 ) 4/tile_mode = 0 4/occluder_offset = Vector2( 0, 0 ) 4/occluder = SubResource( 9 ) 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 ================================================ FILE: src/stage/tileset/TileSet1.tres ================================================ [gd_resource type="TileSet" load_steps=11 format=2] [ext_resource path="res://media/image/tiles/tile2_0.png" type="Texture" id=1] [ext_resource path="res://media/image/tiles/tile2_3.png" type="Texture" id=2] [ext_resource path="res://media/image/tiles/tile2_1.png" type="Texture" id=3] [ext_resource path="res://media/image/tiles/tile2_4.png" type="Texture" id=4] [ext_resource path="res://media/image/tiles/tile2_2.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=1] polygon = PoolVector2Array( 400, 400, 0, 400, 0, 0, 400, 0 ) [sub_resource type="OccluderPolygon2D" id=2] polygon = PoolVector2Array( 187, 400, 187, 400, 187, 341, 189, 331, 194, 323, 200, 318, 200, 289, 201, 286, 194, 279, 189, 271, 187, 262, 188, 252, 192, 243, 242, 193, 252, 188, 259, 187, 268, 188, 275, 191, 286, 201, 290, 200, 318, 200, 326, 192, 333, 189, 341, 187, 400, 187, 400, 400 ) [sub_resource type="OccluderPolygon2D" id=3] polygon = PoolVector2Array( 0, 187, 0, 187, 58, 187, 69, 189, 79, 196, 82, 200, 118, 200, 125, 193, 135, 188, 142, 187, 258, 187, 268, 189, 275, 193, 282, 200, 318, 200, 326, 192, 335, 188, 341, 187, 400, 187, 400, 400, 0, 400 ) [sub_resource type="OccluderPolygon2D" id=4] polygon = PoolVector2Array( 0, 187, 0, 187, 59, 187, 69, 189, 78, 195, 82, 200, 102, 200, 106, 194, 194, 106, 200, 103, 200, 82, 195, 78, 190, 71, 187, 59, 187, 0, 400, 0, 400, 400, 0, 400 ) [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 0, 187, 0, 187, 57, 187, 66, 189, 87, 180, 106, 170, 113, 160, 158, 115, 168, 107, 176, 95, 184, 78, 189, 66, 187, 59, 187, 0, 400, 0, 400, 213, 342, 213, 333, 211, 315, 218, 294, 229, 288, 239, 241, 287, 229, 294, 219, 312, 211, 332, 213, 341, 213, 400, 0, 400 ) [resource] 0/name = "tile2_0.png 0" 0/texture = ExtResource( 1 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 1, 1, 1, 1 ) 0/region = Rect2( 0, 0, 400, 400 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 1 ) 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 = "tile2_1.png 1" 1/texture = ExtResource( 3 ) 1/tex_offset = Vector2( 0, 0 ) 1/modulate = Color( 1, 1, 1, 1 ) 1/region = Rect2( 0, 0, 400, 400 ) 1/tile_mode = 0 1/occluder_offset = Vector2( 0, 0 ) 1/occluder = SubResource( 2 ) 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 = "tile2_2.png 2" 2/texture = ExtResource( 5 ) 2/tex_offset = Vector2( 0, 0 ) 2/modulate = Color( 1, 1, 1, 1 ) 2/region = Rect2( 0, 0, 400, 400 ) 2/tile_mode = 0 2/occluder_offset = Vector2( 0, 0 ) 2/occluder = SubResource( 3 ) 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 = "tile3_3.png 3" 3/texture = ExtResource( 2 ) 3/tex_offset = Vector2( 0, 0 ) 3/modulate = Color( 1, 1, 1, 1 ) 3/region = Rect2( 0, 0, 400, 400 ) 3/tile_mode = 0 3/occluder_offset = Vector2( 0, 0 ) 3/occluder = SubResource( 4 ) 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 4/name = "tile4_4.png 4" 4/texture = ExtResource( 4 ) 4/tex_offset = Vector2( 0, 0 ) 4/modulate = Color( 1, 1, 1, 1 ) 4/region = Rect2( 0, 0, 400, 400 ) 4/tile_mode = 0 4/occluder_offset = Vector2( 0, 0 ) 4/occluder = SubResource( 5 ) 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 ================================================ FILE: src/stage/tileset/TileSet2.tres ================================================ [gd_resource type="TileSet" load_steps=11 format=2] [ext_resource path="res://media/image/tiles/tile3_1.png" type="Texture" id=1] [ext_resource path="res://media/image/tiles/tile3_0.png" type="Texture" id=2] [ext_resource path="res://media/image/tiles/tile3_3.png" type="Texture" id=3] [ext_resource path="res://media/image/tiles/tile3_2.png" type="Texture" id=4] [ext_resource path="res://media/image/tiles/tile3_4.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=1] polygon = PoolVector2Array( 400, 400, 0, 400, 0, 0, 400, 0 ) [sub_resource type="OccluderPolygon2D" id=2] polygon = PoolVector2Array( 175, 400, 175, 400, 175, 347, 178, 318, 189, 284, 203, 258, 216, 240, 239, 217, 263, 200, 291, 186, 319, 178, 343, 175, 400, 175, 400, 400 ) [sub_resource type="OccluderPolygon2D" id=3] polygon = PoolVector2Array( 0, 175, 0, 175, 26, 175, 58, 178, 80, 182, 113, 190, 143, 196, 167, 199, 193, 200, 228, 199, 248, 197, 270, 194, 320, 182, 351, 177, 382, 175, 400, 175, 400, 400, 0, 400 ) [sub_resource type="OccluderPolygon2D" id=4] polygon = PoolVector2Array( 0, 175, 0, 175, 15, 175, 32, 177, 55, 184, 86, 195, 105, 199, 119, 200, 135, 199, 147, 196, 158, 192, 171, 184, 181, 174, 190, 163, 195, 151, 199, 137, 200, 126, 199, 108, 196, 86, 189, 66, 181, 45, 176, 24, 175, 15, 175, 0, 400, 0, 400, 400, 0, 400 ) [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 0, 175, 0, 175, 90, 175, 105, 173, 118, 169, 129, 164, 141, 156, 154, 144, 164, 130, 171, 113, 174, 98, 175, 0, 400, 0, 400, 225, 308, 225, 288, 228, 268, 237, 255, 247, 246, 256, 236, 271, 231, 282, 226, 298, 225, 400, 0, 400 ) [resource] 0/name = "tile3_0.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 1, 1, 1, 1 ) 0/region = Rect2( 0, 0, 400, 400 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 1 ) 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 = "tile3_1.png 1" 1/texture = ExtResource( 1 ) 1/tex_offset = Vector2( 0, 0 ) 1/modulate = Color( 1, 1, 1, 1 ) 1/region = Rect2( 0, 0, 400, 400 ) 1/tile_mode = 0 1/occluder_offset = Vector2( 0, 0 ) 1/occluder = SubResource( 2 ) 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 = "tile3_2.png 2" 2/texture = ExtResource( 4 ) 2/tex_offset = Vector2( 0, 0 ) 2/modulate = Color( 1, 1, 1, 1 ) 2/region = Rect2( 0, 0, 400, 400 ) 2/tile_mode = 0 2/occluder_offset = Vector2( 0, 0 ) 2/occluder = SubResource( 3 ) 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 = "tile3_3.png 3" 3/texture = ExtResource( 3 ) 3/tex_offset = Vector2( 0, 0 ) 3/modulate = Color( 1, 1, 1, 1 ) 3/region = Rect2( 0, 0, 400, 400 ) 3/tile_mode = 0 3/occluder_offset = Vector2( 0, 0 ) 3/occluder = SubResource( 4 ) 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 4/name = "tile3_4.png 4" 4/texture = ExtResource( 5 ) 4/tex_offset = Vector2( 0, 0 ) 4/modulate = Color( 1, 1, 1, 1 ) 4/region = Rect2( 0, 0, 400, 400 ) 4/tile_mode = 0 4/occluder_offset = Vector2( 0, 0 ) 4/occluder = SubResource( 5 ) 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 ================================================ FILE: src/stage/tileset/TileSet3.tres ================================================ [gd_resource type="TileSet" load_steps=11 format=2] [ext_resource path="res://media/image/tiles/tile4_0.png" type="Texture" id=1] [ext_resource path="res://media/image/tiles/tile4_4.png" type="Texture" id=2] [ext_resource path="res://media/image/tiles/tile4_3.png" type="Texture" id=3] [ext_resource path="res://media/image/tiles/tile4_2.png" type="Texture" id=4] [ext_resource path="res://media/image/tiles/tile4_1.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=1] polygon = PoolVector2Array( 400, 400, 0, 400, 0, 0, 400, 0 ) [sub_resource type="OccluderPolygon2D" id=2] polygon = PoolVector2Array( 200, 400, 200, 400, 200, 390, 188, 390, 181, 387, 174, 381, 171, 375, 170, 371, 170, 321, 171, 314, 176, 307, 181, 303, 188, 300, 200, 300, 200, 290, 204, 273, 194, 265, 186, 254, 182, 244, 180, 236, 180, 225, 182, 215, 188, 202, 196, 193, 204, 187, 212, 183, 224, 180, 234, 180, 244, 182, 254, 186, 266, 195, 271, 201, 272, 204, 278, 202, 289, 200, 300, 200, 300, 188, 306, 177, 314, 171, 320, 170, 370, 170, 379, 173, 386, 179, 389, 184, 390, 192, 390, 200, 400, 200, 400, 400 ) [sub_resource type="OccluderPolygon2D" id=3] polygon = PoolVector2Array( 0, 200, 0, 200, 13, 200, 19, 188, 27, 178, 41, 167, 53, 162, 63, 160, 74, 160, 86, 162, 98, 167, 105, 171, 114, 179, 121, 188, 127, 200, 159, 200, 187, 173, 196, 170, 204, 170, 212, 173, 218, 177, 240, 200, 273, 200, 279, 187, 288, 177, 299, 168, 312, 162, 324, 160, 336, 160, 352, 164, 362, 169, 369, 174, 379, 185, 384, 193, 387, 200, 400, 200, 400, 400, 0, 400 ) [sub_resource type="OccluderPolygon2D" id=4] polygon = PoolVector2Array( 0, 200, 0, 200, 10, 200, 10, 188, 13, 180, 22, 172, 29, 170, 81, 170, 90, 173, 96, 179, 100, 188, 100, 200, 120, 200, 120, 190, 124, 173, 133, 156, 143, 144, 153, 135, 164, 128, 184, 121, 191, 120, 200, 120, 200, 100, 188, 100, 180, 97, 173, 90, 170, 83, 170, 28, 174, 19, 181, 13, 189, 10, 200, 10, 200, 0, 400, 0, 400, 400, 0, 400 ) [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 0, 200, 0, 200, 10, 200, 10, 188, 13, 180, 21, 173, 30, 170, 79, 170, 90, 173, 97, 181, 100, 189, 100, 200, 120, 200, 120, 192, 124, 174, 127, 167, 134, 154, 144, 143, 154, 134, 171, 125, 191, 120, 200, 120, 200, 100, 188, 100, 178, 96, 173, 89, 170, 81, 170, 28, 174, 19, 183, 12, 189, 10, 200, 10, 200, 0, 400, 0, 400, 200, 390, 200, 390, 212, 386, 221, 379, 227, 371, 230, 319, 230, 311, 227, 304, 221, 300, 212, 300, 200, 280, 200, 280, 209, 275, 229, 268, 242, 258, 255, 247, 265, 233, 273, 218, 278, 209, 280, 200, 280, 200, 300, 211, 300, 221, 304, 227, 311, 230, 318, 230, 371, 227, 380, 220, 387, 211, 390, 200, 390, 200, 400, 0, 400 ) [resource] 0/name = "tile4_0.png 0" 0/texture = ExtResource( 1 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 1, 1, 1, 1 ) 0/region = Rect2( 0, 0, 400, 400 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 1 ) 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 = "tile4_1.png 1" 1/texture = ExtResource( 5 ) 1/tex_offset = Vector2( 0, 0 ) 1/modulate = Color( 1, 1, 1, 1 ) 1/region = Rect2( 0, 0, 400, 400 ) 1/tile_mode = 0 1/occluder_offset = Vector2( 0, 0 ) 1/occluder = SubResource( 2 ) 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 = "tile4_2.png 2" 2/texture = ExtResource( 4 ) 2/tex_offset = Vector2( 0, 0 ) 2/modulate = Color( 1, 1, 1, 1 ) 2/region = Rect2( 0, 0, 400, 400 ) 2/tile_mode = 0 2/occluder_offset = Vector2( 0, 0 ) 2/occluder = SubResource( 3 ) 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 = "tile4_3.png 3" 3/texture = ExtResource( 3 ) 3/tex_offset = Vector2( 0, 0 ) 3/modulate = Color( 1, 1, 1, 1 ) 3/region = Rect2( 0, 0, 400, 400 ) 3/tile_mode = 0 3/occluder_offset = Vector2( 0, 0 ) 3/occluder = SubResource( 4 ) 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 4/name = "tile4_4.png 4" 4/texture = ExtResource( 2 ) 4/tex_offset = Vector2( 0, 0 ) 4/modulate = Color( 1, 1, 1, 1 ) 4/region = Rect2( 0, 0, 400, 400 ) 4/tile_mode = 0 4/occluder_offset = Vector2( 0, 0 ) 4/occluder = SubResource( 5 ) 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 ================================================ FILE: src/stage/tileset/TileSet4.tres ================================================ [gd_resource type="TileSet" load_steps=11 format=2] [ext_resource path="res://media/image/tiles/tile5_3.png" type="Texture" id=1] [ext_resource path="res://media/image/tiles/tile5_0.png" type="Texture" id=2] [ext_resource path="res://media/image/tiles/tile5_1.png" type="Texture" id=3] [ext_resource path="res://media/image/tiles/tile5_2.png" type="Texture" id=4] [ext_resource path="res://media/image/tiles/tile5_4.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=1] polygon = PoolVector2Array( 400, 400, 0, 400, 0, 0, 400, 0 ) [sub_resource type="OccluderPolygon2D" id=2] polygon = PoolVector2Array( 140, 400, 140, 400, 145, 365, 155, 340, 170, 325, 155, 300, 150, 280, 150, 245, 160, 215, 175, 190, 205, 165, 225, 155, 245, 150, 270, 150, 295, 155, 315, 165, 320, 170, 340, 155, 365, 145, 385, 140, 400, 140, 400, 400 ) [sub_resource type="OccluderPolygon2D" id=3] polygon = PoolVector2Array( 0, 140, 0, 140, 35, 145, 60, 155, 80, 170, 100, 195, 120, 170, 140, 155, 165, 145, 190, 140, 215, 140, 235, 145, 260, 155, 280, 170, 300, 195, 320, 170, 340, 155, 360, 145, 380, 140, 400, 140, 400, 400, 0, 400 ) [sub_resource type="OccluderPolygon2D" id=4] polygon = PoolVector2Array( 0, 140, 0, 140, 15, 140, 35, 145, 60, 155, 80, 170, 90, 150, 100, 135, 115, 115, 140, 95, 160, 85, 170, 80, 155, 60, 145, 35, 140, 15, 140, 0, 400, 0, 400, 400, 0, 400 ) [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 0, 140, 0, 140, 15, 140, 35, 145, 60, 155, 85, 175, 90, 150, 105, 125, 125, 105, 140, 95, 165, 85, 170, 80, 155, 60, 145, 35, 140, 15, 140, 0, 400, 0, 400, 260, 390, 260, 365, 255, 335, 240, 315, 225, 310, 250, 295, 275, 275, 295, 250, 310, 225, 320, 235, 330, 250, 350, 260, 385, 260, 400, 0, 400 ) [resource] 0/name = "tile5_0.png 0" 0/texture = ExtResource( 2 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 1, 1, 1, 1 ) 0/region = Rect2( 0, 0, 400, 400 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 1 ) 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 = "tile5_1.png 1" 1/texture = ExtResource( 3 ) 1/tex_offset = Vector2( 0, 0 ) 1/modulate = Color( 1, 1, 1, 1 ) 1/region = Rect2( 0, 0, 400, 400 ) 1/tile_mode = 0 1/occluder_offset = Vector2( 0, 0 ) 1/occluder = SubResource( 2 ) 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 = "tile5_2.png 2" 2/texture = ExtResource( 4 ) 2/tex_offset = Vector2( 0, 0 ) 2/modulate = Color( 1, 1, 1, 1 ) 2/region = Rect2( 0, 0, 400, 400 ) 2/tile_mode = 0 2/occluder_offset = Vector2( 0, 0 ) 2/occluder = SubResource( 3 ) 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 = "tile5_3.png 3" 3/texture = ExtResource( 1 ) 3/tex_offset = Vector2( 0, 0 ) 3/modulate = Color( 1, 1, 1, 1 ) 3/region = Rect2( 0, 0, 400, 400 ) 3/tile_mode = 0 3/occluder_offset = Vector2( 0, 0 ) 3/occluder = SubResource( 4 ) 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 4/name = "tile5_4.png 4" 4/texture = ExtResource( 5 ) 4/tex_offset = Vector2( 0, 0 ) 4/modulate = Color( 1, 1, 1, 1 ) 4/region = Rect2( 0, 0, 400, 400 ) 4/tile_mode = 0 4/occluder_offset = Vector2( 0, 0 ) 4/occluder = SubResource( 5 ) 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 ================================================ FILE: src/stage/tileset/TileSet5.tres ================================================ [gd_resource type="TileSet" load_steps=11 format=2] [ext_resource path="res://media/image/tiles/tile6_3.png" type="Texture" id=1] [ext_resource path="res://media/image/tiles/tile6_1.png" type="Texture" id=2] [ext_resource path="res://media/image/tiles/tile6_0.png" type="Texture" id=3] [ext_resource path="res://media/image/tiles/tile6_2.png" type="Texture" id=4] [ext_resource path="res://media/image/tiles/tile6_4.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=1] polygon = PoolVector2Array( 400, 400, 0, 400, 0, 0, 400, 0 ) [sub_resource type="OccluderPolygon2D" id=2] polygon = PoolVector2Array( 200, 400, 200, 400, 201, 377, 206, 351, 214, 327, 223, 306, 236, 285, 256, 261, 277, 242, 303, 225, 329, 213, 359, 204, 382, 201, 400, 200, 400, 400 ) [sub_resource type="OccluderPolygon2D" id=3] polygon = PoolVector2Array( 400, 400, 0, 400, 0, 200, 400, 200 ) [sub_resource type="OccluderPolygon2D" id=4] polygon = PoolVector2Array( 0, 200, 0, 200, 26, 198, 47, 194, 64, 189, 83, 182, 110, 167, 133, 149, 156, 125, 177, 94, 187, 70, 195, 44, 199, 21, 200, 0, 400, 0, 400, 400, 0, 400 ) [sub_resource type="OccluderPolygon2D" id=5] polygon = PoolVector2Array( 0, 200, 0, 200, 31, 197, 54, 192, 79, 183, 105, 170, 128, 153, 144, 138, 159, 121, 172, 101, 183, 80, 191, 59, 196, 39, 199, 20, 200, 0, 400, 0, 400, 200, 374, 202, 345, 208, 325, 215, 302, 226, 282, 239, 263, 255, 247, 272, 230, 295, 215, 325, 206, 353, 202, 371, 200, 400, 0, 400 ) [resource] 0/name = "tile6_0.png 0" 0/texture = ExtResource( 3 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 1, 1, 1, 1 ) 0/region = Rect2( 0, 0, 400, 400 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 1 ) 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 = "tile6_1.png 1" 1/texture = ExtResource( 2 ) 1/tex_offset = Vector2( 0, 0 ) 1/modulate = Color( 1, 1, 1, 1 ) 1/region = Rect2( 0, 0, 400, 400 ) 1/tile_mode = 0 1/occluder_offset = Vector2( 0, 0 ) 1/occluder = SubResource( 2 ) 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 = "tile6_2.png 2" 2/texture = ExtResource( 4 ) 2/tex_offset = Vector2( 0, 0 ) 2/modulate = Color( 1, 1, 1, 1 ) 2/region = Rect2( 0, 0, 400, 400 ) 2/tile_mode = 0 2/occluder_offset = Vector2( 0, 0 ) 2/occluder = SubResource( 3 ) 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 = "tile6_3.png 3" 3/texture = ExtResource( 1 ) 3/tex_offset = Vector2( 0, 0 ) 3/modulate = Color( 1, 1, 1, 1 ) 3/region = Rect2( 0, 0, 400, 400 ) 3/tile_mode = 0 3/occluder_offset = Vector2( 0, 0 ) 3/occluder = SubResource( 4 ) 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 4/name = "tile6_4.png 4" 4/texture = ExtResource( 5 ) 4/tex_offset = Vector2( 0, 0 ) 4/modulate = Color( 1, 1, 1, 1 ) 4/region = Rect2( 0, 0, 400, 400 ) 4/tile_mode = 0 4/occluder_offset = Vector2( 0, 0 ) 4/occluder = SubResource( 5 ) 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 ================================================ FILE: src/stage/tileset/TileSet6.tres ================================================ [gd_resource type="TileSet" load_steps=7 format=2] [ext_resource path="res://media/image/tiles/tile7_1.png" type="Texture" id=1] [ext_resource path="res://media/image/tiles/tile7_2.png" type="Texture" id=2] [ext_resource path="res://media/image/tiles/tile6_0.png" type="Texture" id=3] [ext_resource path="res://media/image/tiles/tile6_3.png" type="Texture" id=4] [ext_resource path="res://media/image/tiles/tile6_4.png" type="Texture" id=5] [sub_resource type="OccluderPolygon2D" id=1] polygon = PoolVector2Array( 400, 400, 0, 400, 0, 0, 400, 0 ) [resource] 0/name = "tile6_0.png 0" 0/texture = ExtResource( 3 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 1, 1, 1, 1 ) 0/region = Rect2( 0, 0, 400, 400 ) 0/tile_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/occluder = SubResource( 1 ) 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 = "tile7_1.png 1" 1/texture = ExtResource( 1 ) 1/tex_offset = Vector2( 0, 0 ) 1/modulate = Color( 1, 1, 1, 1 ) 1/region = Rect2( 0, 0, 400, 400 ) 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 = "tile7_2.png 2" 2/texture = ExtResource( 2 ) 2/tex_offset = Vector2( 0, 0 ) 2/modulate = Color( 1, 1, 1, 1 ) 2/region = Rect2( 0, 0, 400, 400 ) 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 = "tile6_3.png 3" 3/texture = ExtResource( 4 ) 3/tex_offset = Vector2( 0, 0 ) 3/modulate = Color( 1, 1, 1, 1 ) 3/region = Rect2( 0, 0, 400, 400 ) 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 4/name = "tile6_4.png 4" 4/texture = ExtResource( 5 ) 4/tex_offset = Vector2( 0, 0 ) 4/modulate = Color( 1, 1, 1, 1 ) 4/region = Rect2( 0, 0, 400, 400 ) 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 ================================================ FILE: src/theme/shadow_text.tres ================================================ [gd_resource type="Theme" load_steps=3 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [sub_resource type="DynamicFont" id=2] size = 50 font_data = ExtResource( 1 ) [resource] default_font = SubResource( 2 ) Label/colors/font_color = Color( 1, 1, 1, 1 ) Label/colors/font_color_shadow = Color( 0.3, 0.3, 0.3, 0.25098 ) Label/constants/shadow_offset_x = 5 Label/constants/shadow_offset_y = 7 Label/fonts/font = SubResource( 2 ) ================================================ FILE: src/theme/title_text.tres ================================================ [gd_resource type="Theme" load_steps=3 format=2] [ext_resource path="res://media/font/mini-wakuwaku.otf" type="DynamicFontData" id=1] [sub_resource type="DynamicFont" id=2] size = 50 outline_color = Color( 0, 0, 0, 1 ) font_data = ExtResource( 1 ) [resource] default_font = SubResource( 2 ) Label/colors/font_color = Color( 1, 1, 1, 1 ) Label/fonts/font = SubResource( 2 )