From 759f2292a4a61bbea4f75c8f312ec7c2050b0378 Mon Sep 17 00:00:00 2001 From: Will Thompson Date: Thu, 13 Aug 2026 15:46:49 +0100 Subject: [PATCH] Tile-o-matic This adds a script that can be used to automatically update water, foam, shadows (cliff and bridge), and cliff collisions based on the other layers in the scene. It supports multiple layers of bridges but only one layer of elevations or (elevation or bridge) shadows. The intended workflow is to paint floors, cliffs, and bridges, then click Update to fix the others. One thing I discovered while writing this is that we didn't have collisionless alternatives for every cliff-edge tile, only for two of them, and those alternatives were missing their occlusion (physics and light) polygons and possibly some other properties. I wrote a script to give every cliff-edge tile an alternative that does not have wall collisions. (`elephant.gd`, needs a better name or to be deleted.) However this is still not quite correct. Bottom edges include include the cliff-face below. That face needs to be walkable when the bridge is coming from the bottom; but when coming from the side, the bottom should block the player. So we need two alts for that. Similarly, if you have a bridge reaching a top-right corner from its right edge, and land at a lower height above its top edge, you shouldn't be able to walk off the top. I did not fix this family of issues. This is also all painfully hard-coded to the specific tilesets in the main game... I edited the alts to add a modulation so they are easier to see in the editor. --- .../quest_004/mythical_meadows.tscn | 42 +++-- scenes/tileomatic.gd | 171 ++++++++++++++++++ scenes/tileomatic.gd.uid | 1 + tiles/elevation_2.tres | 162 +++++++++++++++++ tiles/water.tres | 2 + tools/elephant.gd | 43 +++++ tools/elephant.gd.uid | 1 + 7 files changed, 411 insertions(+), 11 deletions(-) create mode 100644 scenes/tileomatic.gd create mode 100644 scenes/tileomatic.gd.uid create mode 100644 tools/elephant.gd create mode 100644 tools/elephant.gd.uid diff --git a/scenes/quests/lore_quests/quest_004/mythical_meadows.tscn b/scenes/quests/lore_quests/quest_004/mythical_meadows.tscn index bf44ee1b68..4f5edfc2bf 100644 --- a/scenes/quests/lore_quests/quest_004/mythical_meadows.tscn +++ b/scenes/quests/lore_quests/quest_004/mythical_meadows.tscn @@ -5,13 +5,14 @@ [ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="2_brig6"] [ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="2_jj505"] [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="3_0yw4f"] +[ext_resource type="Script" uid="uid://dd58aty1bmx1g" path="res://scenes/tileomatic.gd" id="3_jj505"] [ext_resource type="TileSet" uid="uid://41pk6xbhypue" path="res://tiles/fence.tres" id="4_ag7vv"] [ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="5_jj505"] [ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="6_8dhto"] -[ext_resource type="TileSet" uid="uid://dfp36ffpanjq2" path="res://tiles/elevation.tres" id="7_y5fl1"] [ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="8_gejpg"] [ext_resource type="TileSet" uid="uid://ciq5guijvlyb0" path="res://tiles/void_chromakey.tres" id="9_q603x"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="10_1wq77"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="10_jj505"] [ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="12_q0isu"] [ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="13_33k3i"] [ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="13_ag7vv"] @@ -29,43 +30,61 @@ script = ExtResource("1_ag7vv") stream = ExtResource("2_jj505") metadata/_custom_type_script = "uid://c8405c212rbn6" -[node name="TileMapLayers" type="Node2D" parent="." unique_id=1846893098] +[node name="TileMapLayers" type="Node2D" parent="." unique_id=1846893098 node_paths=PackedStringArray("water", "foam", "floors", "bridge_shadows", "bridges", "elevation_shadows", "elevation")] +script = ExtResource("3_jj505") +water = NodePath("Water") +foam = NodePath("Foam") +floors = [NodePath("Grass"), NodePath("Paths")] +bridge_shadows = NodePath("BridgeShadow") +bridges = [NodePath("Bridges"), NodePath("Bridges_Level1")] +elevation_shadows = NodePath("CliffShadows") +elevation = NodePath("Cliffs") [node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=1934786228] z_index = -1 -tile_map_data = PackedByteArray("AAADAAEAAAAAAAAAAAADAAIAAAAAAAAAAAADAAMAAAAAAAAAAAADAAQAAAAAAAAAAAADAAUAAAAAAAAAAAADAAYAAAAAAAAAAAADAAcAAAAAAAAAAAADAAgAAAAAAAAAAAADAAkAAAAAAAAAAAAEAAEAAAAAAAAAAAAFAAEAAAAAAAAAAAAFAAkAAAAAAAAAAAAGAAEAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAEAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAEAAAAAAAAAAAAIAAkAAAAAAAAAAAAJAAEAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAEAAAAAAAAAAAAKAAkAAAAAAAAAAAALAAEAAAAAAAAAAAALAAkAAAAAAAAAAAAMAAEAAAAAAAAAAAAMAAkAAAAAAAAAAAANAAEAAAAAAAAAAAANAAkAAAAAAAAAAAAOAAEAAAAAAAAAAAAOAAkAAAAAAAAAAAAPAAEAAAAAAAAAAAAPAAkAAAAAAAAAAAAQAAEAAAAAAAAAAAAQAAkAAAAAAAAAAAARAAEAAAAAAAAAAAARAAkAAAAAAAAAAAASAAEAAAAAAAAAAAASAAkAAAAAAAAAAAATAAEAAAAAAAAAAAATAAkAAAAAAAAAAAAUAAEAAAAAAAAAAAAUAAkAAAAAAAAAAAAVAAEAAAAAAAAAAAAVAAkAAAAAAAAAAAAWAAEAAAAAAAAAAAAWAAkAAAAAAAAAAAAXAAEAAAAAAAAAAAAXAAkAAAAAAAAAAAAYAAEAAAAAAAAAAAAYAAkAAAAAAAAAAAAZAAEAAAAAAAAAAAAZAAkAAAAAAAAAAAAaAAEAAAAAAAAAAAAaAAkAAAAAAAAAAAAbAAEAAAAAAAAAAAAbAAkAAAAAAAAAAAAcAAEAAAAAAAAAAAAcAAkAAAAAAAAAAAAdAAEAAAAAAAAAAAAdAAkAAAAAAAAAAAAeAAEAAAAAAAAAAAAeAAkAAAAAAAAAAAAfAAEAAAAAAAAAAAAfAAkAAAAAAAAAAAAgAAEAAAAAAAAAAAAgAAkAAAAAAAAAAAAhAAEAAAAAAAAAAAAhAAkAAAAAAAAAAAAiAAEAAAAAAAAAAAAiAAIAAAAAAAAAAAAiAAMAAAAAAAAAAAAiAAQAAAAAAAAAAAAiAAUAAAAAAAAAAAAiAAYAAAAAAAAAAAAiAAcAAAAAAAAAAAAiAAgAAAAAAAAAAAAiAAkAAAAAAAAAAAAEAAkAAAAAAAAAAAADAAoAAAAAAAAAAAADAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAAEAAoAAAAAAAAAAAAFAAoAAAAAAAAAAAAGAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAJAAoAAAAAAAAAAAAKAAoAAAAAAAAAAAALAAoAAAAAAAAAAAAMAAoAAAAAAAAAAAAMAAsAAAAAAAAAAAANAAsAAAAAAAAAAAANAAwAAAAAAAAAAAAMAAwAAAAAAAAAAAALAAwAAAAAAAAAAAAKAAwAAAAAAAAAAAAJAAwAAAAAAAAAAAAIAAwAAAAAAAAAAAAHAAwAAAAAAAAAAAAGAAwAAAAAAAAAAAAFAAwAAAAAAAAAAAAEAAwAAAAAAAAAAAADAAwAAAAAAAAAAAAFAAsAAAAAAAAAAAAGAAsAAAAAAAAAAAAHAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAKAAsAAAAAAAAAAAALAAsAAAAAAAAAAAANAAoAAAAAAAAAAAAOAAoAAAAAAAAAAAAOAAsAAAAAAAAAAAAOAAwAAAAAAAAAAAAOAA0AAAAAAAAAAAANAA4AAAAAAAAAAAAMAA4AAAAAAAAAAAALAA4AAAAAAAAAAAALAA8AAAAAAAAAAAAKAA8AAAAAAAAAAAAJAA8AAAAAAAAAAAAJAA4AAAAAAAAAAAAIAA4AAAAAAAAAAAAHAA4AAAAAAAAAAAAGAA4AAAAAAAAAAAAFAA4AAAAAAAAAAAAEAA4AAAAAAAAAAAADAA4AAAAAAAAAAAACAA4AAAAAAAAAAAACAA0AAAAAAAAAAAADAA0AAAAAAAAAAAAEAA0AAAAAAAAAAAAFAA0AAAAAAAAAAAAGAA0AAAAAAAAAAAAHAA0AAAAAAAAAAAAIAA0AAAAAAAAAAAAJAA0AAAAAAAAAAAAKAA0AAAAAAAAAAAALAA0AAAAAAAAAAAAMAA0AAAAAAAAAAAANAA0AAAAAAAAAAAAKAA4AAAAAAAAAAAACAAEAAAAAAAAAAAACAAIAAAAAAAAAAAACAAMAAAAAAAAAAAACAAQAAAAAAAAAAAACAAUAAAAAAAAAAAACAAYAAAAAAAAAAAACAAcAAAAAAAAAAAACAAgAAAAAAAAAAAACAAkAAAAAAAAAAAACAAoAAAAAAAAAAAACAAsAAAAAAAAAAAACAAwAAAAAAAAAAAACAA8AAAAAAAAAAAADAA8AAAAAAAAAAAAEAA8AAAAAAAAAAAAFAA8AAAAAAAAAAAAGAA8AAAAAAAAAAAAHAA8AAAAAAAAAAAAIAA8AAAAAAAAAAAAMAA8AAAAAAAAAAAANAA8AAAAAAAAAAAAOAA8AAAAAAAAAAAAPAA8AAAAAAAAAAAAQAA8AAAAAAAAAAAAOAA4AAAAAAAAAAAAPAA4AAAAAAAAAAAAQAA4AAAAAAAAAAAAQAA0AAAAAAAAAAAAQAAwAAAAAAAAAAAAQAAsAAAAAAAAAAAAQAAoAAAAAAAAAAAAPAAoAAAAAAAAAAAAPAAsAAAAAAAAAAAAPAAwAAAAAAAAAAAAPAA0AAAAAAAAAAAARAAoAAAAAAAAAAAARAAsAAAAAAAAAAAARAAwAAAAAAAAAAAARAA0AAAAAAAAAAAARAA4AAAAAAAAAAAARAA8AAAAAAAAAAAARABAAAAAAAAAAAAAQABAAAAAAAAAAAAAPABAAAAAAAAAAAAAOABEAAAAAAAAAAAANABEAAAAAAAAAAAAMABEAAAAAAAAAAAALABEAAAAAAAAAAAAKABEAAAAAAAAAAAAJABEAAAAAAAAAAAAIABEAAAAAAAAAAAAHABEAAAAAAAAAAAAGABEAAAAAAAAAAAAFABEAAAAAAAAAAAAEABEAAAAAAAAAAAADABEAAAAAAAAAAAACABEAAAAAAAAAAAACABAAAAAAAAAAAAADABAAAAAAAAAAAAAEABAAAAAAAAAAAAAFABAAAAAAAAAAAAAGABAAAAAAAAAAAAAHABAAAAAAAAAAAAAIABAAAAAAAAAAAAAJABAAAAAAAAAAAAAKABAAAAAAAAAAAAALABAAAAAAAAAAAAAMABAAAAAAAAAAAAANABAAAAAAAAAAAAAOABAAAAAAAAAAAAAPABEAAAAAAAAAAAAQABEAAAAAAAAAAAARABEAAAAAAAAAAAASABAAAAAAAAAAAAASAA8AAAAAAAAAAAASAA4AAAAAAAAAAAASAA0AAAAAAAAAAAASAAwAAAAAAAAAAAASAAsAAAAAAAAAAAASAAoAAAAAAAAAAAATAAoAAAAAAAAAAAAUAAoAAAAAAAAAAAAVAAoAAAAAAAAAAAAWAAoAAAAAAAAAAAAXAAoAAAAAAAAAAAAYAAoAAAAAAAAAAAAZAAoAAAAAAAAAAAAaAAoAAAAAAAAAAAAbAAoAAAAAAAAAAAAcAAoAAAAAAAAAAAAdAAoAAAAAAAAAAAAeAAoAAAAAAAAAAAAfAAoAAAAAAAAAAAAgAAoAAAAAAAAAAAAhAAoAAAAAAAAAAAAiAAoAAAAAAAAAAAAiAAsAAAAAAAAAAAAiAAwAAAAAAAAAAAAiAA0AAAAAAAAAAAAiAA4AAAAAAAAAAAAiAA8AAAAAAAAAAAAiABAAAAAAAAAAAAAhABAAAAAAAAAAAAAhABEAAAAAAAAAAAAgABEAAAAAAAAAAAAfABEAAAAAAAAAAAAeABEAAAAAAAAAAAAdABEAAAAAAAAAAAAcABEAAAAAAAAAAAAbABEAAAAAAAAAAAAaABEAAAAAAAAAAAAZABEAAAAAAAAAAAAYABEAAAAAAAAAAAAXABEAAAAAAAAAAAAWABEAAAAAAAAAAAAVABEAAAAAAAAAAAAUABEAAAAAAAAAAAATABEAAAAAAAAAAAASABEAAAAAAAAAAAATABAAAAAAAAAAAAAUABAAAAAAAAAAAAAVABAAAAAAAAAAAAAWABAAAAAAAAAAAAAXABAAAAAAAAAAAAAYABAAAAAAAAAAAAAZABAAAAAAAAAAAAAaABAAAAAAAAAAAAAbABAAAAAAAAAAAAAcABAAAAAAAAAAAAAdABAAAAAAAAAAAAAeABAAAAAAAAAAAAAfABAAAAAAAAAAAAAgABAAAAAAAAAAAAAhAA8AAAAAAAAAAAAhAA4AAAAAAAAAAAAhAA0AAAAAAAAAAAAhAAwAAAAAAAAAAAAhAAsAAAAAAAAAAAAgAAsAAAAAAAAAAAAfAAsAAAAAAAAAAAAeAAsAAAAAAAAAAAAdAAsAAAAAAAAAAAAcAAsAAAAAAAAAAAAbAAsAAAAAAAAAAAAaAAsAAAAAAAAAAAAZAAsAAAAAAAAAAAAYAAsAAAAAAAAAAAAXAAsAAAAAAAAAAAAWAAsAAAAAAAAAAAAVAAsAAAAAAAAAAAAUAAsAAAAAAAAAAAAUAAwAAAAAAAAAAAATAAwAAAAAAAAAAAATAA0AAAAAAAAAAAATAA4AAAAAAAAAAAATAA8AAAAAAAAAAAATAAsAAAAAAAAAAAAVAAwAAAAAAAAAAAAVAA0AAAAAAAAAAAAVAA4AAAAAAAAAAAAUAA4AAAAAAAAAAAAUAA8AAAAAAAAAAAAVAA8AAAAAAAAAAAAWAA8AAAAAAAAAAAAXAA8AAAAAAAAAAAAYAA8AAAAAAAAAAAAXAA4AAAAAAAAAAAAWAA4AAAAAAAAAAAAUAA0AAAAAAAAAAAAWAA0AAAAAAAAAAAAXAA0AAAAAAAAAAAAYAA0AAAAAAAAAAAAZAA0AAAAAAAAAAAAaAA0AAAAAAAAAAAAbAA0AAAAAAAAAAAAcAA0AAAAAAAAAAAAdAA0AAAAAAAAAAAAeAA0AAAAAAAAAAAAfAA0AAAAAAAAAAAAfAAwAAAAAAAAAAAAgAAwAAAAAAAAAAAAeAAwAAAAAAAAAAAAdAAwAAAAAAAAAAAAcAAwAAAAAAAAAAAAbAAwAAAAAAAAAAAAaAAwAAAAAAAAAAAAZAAwAAAAAAAAAAAAYAAwAAAAAAAAAAAAXAAwAAAAAAAAAAAAWAAwAAAAAAAAAAAAYAA4AAAAAAAAAAAAZAA4AAAAAAAAAAAAZAA8AAAAAAAAAAAAcAA8AAAAAAAAAAAAdAA8AAAAAAAAAAAAeAA8AAAAAAAAAAAAfAA8AAAAAAAAAAAAgAA8AAAAAAAAAAAAgAA0AAAAAAAAAAAAgAA4AAAAAAAAAAAAeAA4AAAAAAAAAAAAdAA4AAAAAAAAAAAAcAA4AAAAAAAAAAAAbAA4AAAAAAAAAAAAaAA4AAAAAAAAAAAAaAA8AAAAAAAAAAAAbAA8AAAAAAAAAAAAfAA4AAAAAAAAAAAACABIAAAAAAAAAAAADABIAAAAAAAAAAAAEABIAAAAAAAAAAAAFABIAAAAAAAAAAAAGABIAAAAAAAAAAAAHABIAAAAAAAAAAAAIABIAAAAAAAAAAAAJABIAAAAAAAAAAAAKABIAAAAAAAAAAAALABIAAAAAAAAAAAAMABIAAAAAAAAAAAANABIAAAAAAAAAAAAOABIAAAAAAAAAAAAPABIAAAAAAAAAAAAQABIAAAAAAAAAAAARABIAAAAAAAAAAAASABIAAAAAAAAAAAATABIAAAAAAAAAAAAUABIAAAAAAAAAAAAVABIAAAAAAAAAAAAWABIAAAAAAAAAAAAXABIAAAAAAAAAAAAYABIAAAAAAAAAAAAZABIAAAAAAAAAAAAaABIAAAAAAAAAAAAbABIAAAAAAAAAAAAcABIAAAAAAAAAAAAdABIAAAAAAAAAAAAeABIAAAAAAAAAAAAfABIAAAAAAAAAAAAgABIAAAAAAAAAAAAhABIAAAAAAAAAAAAiABEAAAAAAAAAAAAiABIAAAAAAAAAAAAiABMAAAAAAAAAAAAiABQAAAAAAAAAAAAhABQAAAAAAAAAAAAgABQAAAAAAAAAAAAfABQAAAAAAAAAAAAeABQAAAAAAAAAAAAdABQAAAAAAAAAAAAcABQAAAAAAAAAAAAbABQAAAAAAAAAAAAaABQAAAAAAAAAAAAZABQAAAAAAAAAAAAYABQAAAAAAAAAAAAXABQAAAAAAAAAAAAWABQAAAAAAAAAAAAVABQAAAAAAAAAAAAUABQAAAAAAAAAAAATABQAAAAAAAAAAAASABQAAAAAAAAAAAARABQAAAAAAAAAAAAQABQAAAAAAAAAAAAPABQAAAAAAAAAAAAOABQAAAAAAAAAAAANABQAAAAAAAAAAAAMABQAAAAAAAAAAAALABQAAAAAAAAAAAAKABQAAAAAAAAAAAAJABQAAAAAAAAAAAAIABQAAAAAAAAAAAAHABQAAAAAAAAAAAAGABQAAAAAAAAAAAAFABQAAAAAAAAAAAAEABQAAAAAAAAAAAADABQAAAAAAAAAAAACABQAAAAAAAAAAAACABMAAAAAAAAAAAADABMAAAAAAAAAAAAEABMAAAAAAAAAAAAFABMAAAAAAAAAAAAGABMAAAAAAAAAAAAHABMAAAAAAAAAAAAIABMAAAAAAAAAAAAJABMAAAAAAAAAAAAKABMAAAAAAAAAAAALABMAAAAAAAAAAAAMABMAAAAAAAAAAAANABMAAAAAAAAAAAAOABMAAAAAAAAAAAAPABMAAAAAAAAAAAAQABMAAAAAAAAAAAARABMAAAAAAAAAAAASABMAAAAAAAAAAAAeABMAAAAAAAAAAAAfABMAAAAAAAAAAAAgABMAAAAAAAAAAAAhABMAAAAAAAAAAAAdABMAAAAAAAAAAAAcABMAAAAAAAAAAAAbABMAAAAAAAAAAAAaABMAAAAAAAAAAAAZABMAAAAAAAAAAAAYABMAAAAAAAAAAAAXABMAAAAAAAAAAAAWABMAAAAAAAAAAAAVABMAAAAAAAAAAAAUABMAAAAAAAAAAAATABMAAAAAAAAAAAACABUAAAAAAAAAAAAEABUAAAAAAAAAAAADABUAAAAAAAAAAAAFABUAAAAAAAAAAAAGABUAAAAAAAAAAAAHABUAAAAAAAAAAAAIABUAAAAAAAAAAAAJABUAAAAAAAAAAAAKABUAAAAAAAAAAAALABUAAAAAAAAAAAAMABUAAAAAAAAAAAANABUAAAAAAAAAAAAOABUAAAAAAAAAAAAPABUAAAAAAAAAAAAQABUAAAAAAAAAAAARABUAAAAAAAAAAAASABUAAAAAAAAAAAATABUAAAAAAAAAAAAUABUAAAAAAAAAAAAVABUAAAAAAAAAAAAWABUAAAAAAAAAAAAXABUAAAAAAAAAAAAYABUAAAAAAAAAAAAZABUAAAAAAAAAAAAaABUAAAAAAAAAAAAbABUAAAAAAAAAAAAcABUAAAAAAAAAAAAdABUAAAAAAAAAAAAeABUAAAAAAAAAAAAfABUAAAAAAAAAAAAgABUAAAAAAAAAAAAhABUAAAAAAAAAAAAiABUAAAAAAAAAAAAiABYAAAAAAAAAAAAhABYAAAAAAAAAAAAgABYAAAAAAAAAAAAfABYAAAAAAAAAAAAeABYAAAAAAAAAAAAdABYAAAAAAAAAAAAcABYAAAAAAAAAAAAbABYAAAAAAAAAAAAaABYAAAAAAAAAAAAZABYAAAAAAAAAAAAYABYAAAAAAAAAAAAXABYAAAAAAAAAAAAWABcAAAAAAAAAAAAVABcAAAAAAAAAAAAUABcAAAAAAAAAAAATABcAAAAAAAAAAAASABcAAAAAAAAAAAARABcAAAAAAAAAAAAQABcAAAAAAAAAAAAPABcAAAAAAAAAAAAOABcAAAAAAAAAAAANABcAAAAAAAAAAAAMABcAAAAAAAAAAAALABcAAAAAAAAAAAAKABcAAAAAAAAAAAAJABcAAAAAAAAAAAAIABcAAAAAAAAAAAAHABcAAAAAAAAAAAAGABcAAAAAAAAAAAAFABYAAAAAAAAAAAAEABYAAAAAAAAAAAADABYAAAAAAAAAAAACABYAAAAAAAAAAAACABcAAAAAAAAAAAADABcAAAAAAAAAAAAEABcAAAAAAAAAAAAFABcAAAAAAAAAAAAHABYAAAAAAAAAAAAGABYAAAAAAAAAAAAIABYAAAAAAAAAAAAJABYAAAAAAAAAAAAKABYAAAAAAAAAAAALABYAAAAAAAAAAAAMABYAAAAAAAAAAAANABYAAAAAAAAAAAAOABYAAAAAAAAAAAAPABYAAAAAAAAAAAAQABYAAAAAAAAAAAARABYAAAAAAAAAAAASABYAAAAAAAAAAAATABYAAAAAAAAAAAAUABYAAAAAAAAAAAAVABYAAAAAAAAAAAAWABYAAAAAAAAAAAAXABcAAAAAAAAAAAAYABcAAAAAAAAAAAAZABcAAAAAAAAAAAAaABcAAAAAAAAAAAAbABcAAAAAAAAAAAAcABcAAAAAAAAAAAAdABcAAAAAAAAAAAAeABcAAAAAAAAAAAAfABcAAAAAAAAAAAAgABcAAAAAAAAAAAAhABcAAAAAAAAAAAAiABcAAAAAAAAAAAAiABgAAAAAAAAAAAAhABgAAAAAAAAAAAAgABgAAAAAAAAAAAAfABgAAAAAAAAAAAAeABgAAAAAAAAAAAAdABgAAAAAAAAAAAAcABgAAAAAAAAAAAAbABgAAAAAAAAAAAAaABgAAAAAAAAAAAAZABgAAAAAAAAAAAAYABgAAAAAAAAAAAAXABgAAAAAAAAAAAAWABgAAAAAAAAAAAAVABgAAAAAAAAAAAAUABgAAAAAAAAAAAATABgAAAAAAAAAAAASABgAAAAAAAAAAAARABgAAAAAAAAAAAAQABgAAAAAAAAAAAAPABgAAAAAAAAAAAAOABgAAAAAAAAAAAANABgAAAAAAAAAAAAMABgAAAAAAAAAAAALABgAAAAAAAAAAAAKABgAAAAAAAAAAAAJABgAAAAAAAAAAAAIABgAAAAAAAAAAAAHABgAAAAAAAAAAAAGABgAAAAAAAAAAAAFABgAAAAAAAAAAAAEABgAAAAAAAAAAAADABgAAAAAAAAAAAACABgAAAAAAAAAAAABABgAAAAAAAAAAAABABkAAAAAAAAAAAACABkAAAAAAAAAAAADABkAAAAAAAAAAAAEABkAAAAAAAAAAAAFABkAAAAAAAAAAAAGABkAAAAAAAAAAAAHABkAAAAAAAAAAAAIABkAAAAAAAAAAAAJABkAAAAAAAAAAAAKABkAAAAAAAAAAAALABkAAAAAAAAAAAAMABkAAAAAAAAAAAANABkAAAAAAAAAAAAOABkAAAAAAAAAAAAPABkAAAAAAAAAAAAQABkAAAAAAAAAAAARABkAAAAAAAAAAAASABkAAAAAAAAAAAATABkAAAAAAAAAAAAUABkAAAAAAAAAAAAVABkAAAAAAAAAAAAWABkAAAAAAAAAAAAXABoAAAAAAAAAAAAYABoAAAAAAAAAAAAZABoAAAAAAAAAAAAaABoAAAAAAAAAAAAbABoAAAAAAAAAAAAcABoAAAAAAAAAAAAdABoAAAAAAAAAAAAeABoAAAAAAAAAAAAfABoAAAAAAAAAAAAgABoAAAAAAAAAAAAhABoAAAAAAAAAAAAhABkAAAAAAAAAAAAiABkAAAAAAAAAAAAgABkAAAAAAAAAAAAfABkAAAAAAAAAAAAeABkAAAAAAAAAAAAdABkAAAAAAAAAAAAcABkAAAAAAAAAAAAbABkAAAAAAAAAAAAaABkAAAAAAAAAAAAZABkAAAAAAAAAAAAYABkAAAAAAAAAAAAXABkAAAAAAAAAAAAWABoAAAAAAAAAAAAVABoAAAAAAAAAAAAUABoAAAAAAAAAAAATABoAAAAAAAAAAAASABoAAAAAAAAAAAARABoAAAAAAAAAAAAQABoAAAAAAAAAAAAPABoAAAAAAAAAAAAOABoAAAAAAAAAAAANABoAAAAAAAAAAAAMABoAAAAAAAAAAAALABoAAAAAAAAAAAAKABoAAAAAAAAAAAAJABoAAAAAAAAAAAAIABoAAAAAAAAAAAAHABoAAAAAAAAAAAAGABoAAAAAAAAAAAAFABoAAAAAAAAAAAAEABoAAAAAAAAAAAADABoAAAAAAAAAAAACABoAAAAAAAAAAAABABoAAAAAAAAAAAABAAEAAAAAAAAAAAABAAIAAAAAAAAAAAABAAMAAAAAAAAAAAABAAQAAAAAAAAAAAABAAUAAAAAAAAAAAABAAYAAAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAABAAkAAAAAAAAAAAABAAoAAAAAAAAAAAABAAsAAAAAAAAAAAABAAwAAAAAAAAAAAABAA0AAAAAAAAAAAABAA4AAAAAAAAAAAABAA8AAAAAAAAAAAABABAAAAAAAAAAAAABABEAAAAAAAAAAAABABIAAAAAAAAAAAABABMAAAAAAAAAAAABABQAAAAAAAAAAAABABUAAAAAAAAAAAABABYAAAAAAAAAAAABABcAAAAAAAAAAAABAPv/AAAAAAAAAAABAPz/AAAAAAAAAAABAP3/AAAAAAAAAAABAP7/AAAAAAAAAAABAP//AAAAAAAAAAABAAAAAAAAAAAAAAACAPv/AAAAAAAAAAACAPz/AAAAAAAAAAACAP3/AAAAAAAAAAACAP7/AAAAAAAAAAACAP//AAAAAAAAAAACAAAAAAAAAAAAAAADAPv/AAAAAAAAAAADAPz/AAAAAAAAAAADAP3/AAAAAAAAAAADAP7/AAAAAAAAAAADAP//AAAAAAAAAAADAAAAAAAAAAAAAAAEAPv/AAAAAAAAAAAEAPz/AAAAAAAAAAAEAP3/AAAAAAAAAAAEAP7/AAAAAAAAAAAEAP//AAAAAAAAAAAEAAAAAAAAAAAAAAAFAPv/AAAAAAAAAAAFAPz/AAAAAAAAAAAFAP3/AAAAAAAAAAAFAP7/AAAAAAAAAAAFAP//AAAAAAAAAAAFAAAAAAAAAAAAAAAGAPv/AAAAAAAAAAAGAPz/AAAAAAAAAAAGAP3/AAAAAAAAAAAGAP7/AAAAAAAAAAAGAP//AAAAAAAAAAAGAAAAAAAAAAAAAAAHAPv/AAAAAAAAAAAHAPz/AAAAAAAAAAAHAP3/AAAAAAAAAAAHAP7/AAAAAAAAAAAHAP//AAAAAAAAAAAHAAAAAAAAAAAAAAAIAPv/AAAAAAAAAAAIAPz/AAAAAAAAAAAIAP3/AAAAAAAAAAAIAP7/AAAAAAAAAAAIAP//AAAAAAAAAAAIAAAAAAAAAAAAAAAJAPv/AAAAAAAAAAAJAPz/AAAAAAAAAAAJAP3/AAAAAAAAAAAJAP7/AAAAAAAAAAAJAP//AAAAAAAAAAAJAAAAAAAAAAAAAAAKAPv/AAAAAAAAAAAKAPz/AAAAAAAAAAAKAP3/AAAAAAAAAAAKAP7/AAAAAAAAAAAKAP//AAAAAAAAAAAKAAAAAAAAAAAAAAALAPv/AAAAAAAAAAALAPz/AAAAAAAAAAALAP3/AAAAAAAAAAALAP7/AAAAAAAAAAALAP//AAAAAAAAAAALAAAAAAAAAAAAAAAMAPv/AAAAAAAAAAAMAPz/AAAAAAAAAAAMAP3/AAAAAAAAAAAMAP7/AAAAAAAAAAAMAP//AAAAAAAAAAAMAAAAAAAAAAAAAAANAPv/AAAAAAAAAAANAPz/AAAAAAAAAAANAP3/AAAAAAAAAAANAP7/AAAAAAAAAAANAP//AAAAAAAAAAANAAAAAAAAAAAAAAAOAPv/AAAAAAAAAAAOAPz/AAAAAAAAAAAOAP3/AAAAAAAAAAAOAP7/AAAAAAAAAAAOAP//AAAAAAAAAAAOAAAAAAAAAAAAAAAPAPv/AAAAAAAAAAAPAPz/AAAAAAAAAAAPAP3/AAAAAAAAAAAPAP7/AAAAAAAAAAAPAP//AAAAAAAAAAAPAAAAAAAAAAAAAAAQAPv/AAAAAAAAAAAQAPz/AAAAAAAAAAAQAP3/AAAAAAAAAAAQAP7/AAAAAAAAAAAQAP//AAAAAAAAAAAQAAAAAAAAAAAAAAARAPv/AAAAAAAAAAARAPz/AAAAAAAAAAARAP3/AAAAAAAAAAARAP7/AAAAAAAAAAARAP//AAAAAAAAAAARAAAAAAAAAAAAAAASAPv/AAAAAAAAAAASAPz/AAAAAAAAAAASAP3/AAAAAAAAAAASAP7/AAAAAAAAAAASAP//AAAAAAAAAAASAAAAAAAAAAAAAAATAPv/AAAAAAAAAAATAPz/AAAAAAAAAAATAP3/AAAAAAAAAAATAP7/AAAAAAAAAAATAP//AAAAAAAAAAATAAAAAAAAAAAAAAAUAPv/AAAAAAAAAAAUAPz/AAAAAAAAAAAUAP3/AAAAAAAAAAAUAP7/AAAAAAAAAAAUAP//AAAAAAAAAAAUAAAAAAAAAAAAAAAVAPv/AAAAAAAAAAAVAPz/AAAAAAAAAAAVAP3/AAAAAAAAAAAVAP7/AAAAAAAAAAAVAP//AAAAAAAAAAAVAAAAAAAAAAAAAAAWAPv/AAAAAAAAAAAWAPz/AAAAAAAAAAAWAP3/AAAAAAAAAAAWAP7/AAAAAAAAAAAWAP//AAAAAAAAAAAWAAAAAAAAAAAAAAAXAPv/AAAAAAAAAAAXAPz/AAAAAAAAAAAXAP3/AAAAAAAAAAAXAP7/AAAAAAAAAAAXAP//AAAAAAAAAAAXAAAAAAAAAAAAAAAYAPv/AAAAAAAAAAAYAPz/AAAAAAAAAAAYAP3/AAAAAAAAAAAYAP7/AAAAAAAAAAAYAP//AAAAAAAAAAAYAAAAAAAAAAAAAAAZAPv/AAAAAAAAAAAZAPz/AAAAAAAAAAAZAP3/AAAAAAAAAAAZAP7/AAAAAAAAAAAZAP//AAAAAAAAAAAZAAAAAAAAAAAAAAAaAPv/AAAAAAAAAAAaAPz/AAAAAAAAAAAaAP3/AAAAAAAAAAAaAP7/AAAAAAAAAAAaAP//AAAAAAAAAAAaAAAAAAAAAAAAAAAbAPv/AAAAAAAAAAAbAPz/AAAAAAAAAAAbAP3/AAAAAAAAAAAbAP7/AAAAAAAAAAAbAP//AAAAAAAAAAAbAAAAAAAAAAAAAAAcAPv/AAAAAAAAAAAcAPz/AAAAAAAAAAAcAP3/AAAAAAAAAAAcAP7/AAAAAAAAAAAcAP//AAAAAAAAAAAcAAAAAAAAAAAAAAAdAPv/AAAAAAAAAAAdAPz/AAAAAAAAAAAdAP3/AAAAAAAAAAAdAP7/AAAAAAAAAAAdAP//AAAAAAAAAAAdAAAAAAAAAAAAAAAeAPv/AAAAAAAAAAAeAPz/AAAAAAAAAAAeAP3/AAAAAAAAAAAeAP7/AAAAAAAAAAAeAP//AAAAAAAAAAAeAAAAAAAAAAAAAAAfAPv/AAAAAAAAAAAfAPz/AAAAAAAAAAAfAP3/AAAAAAAAAAAfAP7/AAAAAAAAAAAfAP//AAAAAAAAAAAfAAAAAAAAAAAAAAAgAPv/AAAAAAAAAAAgAPz/AAAAAAAAAAAgAP3/AAAAAAAAAAAgAP7/AAAAAAAAAAAgAP//AAAAAAAAAAAgAAAAAAAAAAAAAAAhAPv/AAAAAAAAAAAhAPz/AAAAAAAAAAAhAP3/AAAAAAAAAAAhAP7/AAAAAAAAAAAhAP//AAAAAAAAAAAhAAAAAAAAAAAAAAAiAPv/AAAAAAAAAAAiAPz/AAAAAAAAAAAiAP3/AAAAAAAAAAAiAP7/AAAAAAAAAAAiAP//AAAAAAAAAAAiAAAAAAAAAAAAAAA=") +tile_map_data = PackedByteArray("AAADAAMAAAAAAAAAAAADAAQAAAAAAAAAAAADAAUAAAAAAAAAAAADAAYAAAAAAAAAAAADAAcAAAAAAAAAAAADAAgAAAAAAAAAAAADAAkAAAAAAAAAAAAFAAkAAAAAAAAAAAAGAAEAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAEAAAAAAAAAAAAIAAEAAAAAAAAAAAAJAAEAAAAAAAAAAAAKAAEAAAAAAAAAAAALAAEAAAAAAAAAAAAMAAEAAAAAAAAAAAANAAEAAAAAAAAAAAANAAkAAAAAAAAAAAAOAAEAAAAAAAAAAAAOAAkAAAAAAAAAAAAPAAEAAAAAAAAAAAAPAAkAAAAAAAAAAAAQAAEAAAAAAAAAAAAQAAkAAAAAAAAAAAARAAkAAAAAAAAAAAASAAkAAAAAAAAAAAAUAAEAAAAAAAAAAAAUAAkAAAAAAAAAAAAVAAEAAAAAAAAAAAAVAAkAAAAAAAAAAAAWAAEAAAAAAAAAAAAWAAkAAAAAAAAAAAAXAAEAAAAAAAAAAAAXAAkAAAAAAAAAAAAYAAEAAAAAAAAAAAAYAAkAAAAAAAAAAAAZAAEAAAAAAAAAAAAZAAkAAAAAAAAAAQAaAAEAAAAAAAAAAAAaAAkAAAAAAAAAAAAbAAEAAAAAAAAAAAAbAAkAAAAAAAAAAAAcAAkAAAAAAAAAAAAdAAkAAAAAAAAAAAAeAAkAAAAAAAAAAAAfAAkAAAAAAAAAAAAgAAEAAAAAAAAAAAAgAAkAAAAAAAAAAAAhAAEAAAAAAAAAAAAhAAkAAAAAAAAAAAAiAAEAAAAAAAAAAAAiAAIAAAAAAAAAAAAiAAMAAAAAAAAAAAAiAAQAAAAAAAAAAAAiAAUAAAAAAAAAAAAiAAYAAAAAAAAAAAAiAAcAAAAAAAAAAAAiAAgAAAAAAAAAAAAiAAkAAAAAAAAAAAAEAAkAAAAAAAAAAAACAAEAAAAAAAAAAAACAAIAAAAAAAAAAAACAAMAAAAAAAAAAAACAAQAAAAAAAAAAAACAAUAAAAAAAAAAAACAAYAAAAAAAAAAAACAAcAAAAAAAAAAAACAAgAAAAAAAAAAAACAAkAAAAAAAAAAAABAAEAAAAAAAAAAAABAAIAAAAAAAAAAAABAAMAAAAAAAAAAAABAAQAAAAAAAAAAAABAAUAAAAAAAAAAAABAAYAAAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAABAAkAAAAAAAAAAAABAAoAAAAAAAAAAAABAAsAAAAAAAAAAAABAAwAAAAAAAAAAAABAA0AAAAAAAAAAAACAAoAAAAAAAAAAAACAAsAAAAAAAAAAAACAAwAAAAAAAAAAAACAA0AAAAAAAAAAAADAAoAAAAAAAAAAAADAAsAAAAAAAAAAAADAAwAAAAAAAAAAAADAA0AAAAAAAAAAAAEAAoAAAAAAAAAAAAEAAsAAAAAAAAAAAAEAAwAAAAAAAAAAAAEAA0AAAAAAAAAAAAFAAoAAAAAAAAAAAAFAAsAAAAAAAAAAAAFAAwAAAAAAAAAAAAFAA0AAAAAAAAAAAAGAAoAAAAAAAAAAAAGAAsAAAAAAAAAAAAGAAwAAAAAAAAAAAAGAA0AAAAAAAAAAAAKAAwAAAAAAAAAAQAKAA0AAAAAAAAAAgALAAwAAAAAAAAAAAALAA0AAAAAAAAAAAAMAA0AAAAAAAAAAAANAAoAAAAAAAAAAAANAAsAAAAAAAAAAAANAAwAAAAAAAAAAAANAA0AAAAAAAAAAAAOAAoAAAAAAAAAAAAOAAsAAAAAAAAAAAAOAAwAAAAAAAAAAAAOAA0AAAAAAAAAAAAPAAoAAAAAAAAAAAAPAAsAAAAAAAAAAAAPAAwAAAAAAAAAAAAPAA0AAAAAAAAAAAAQAAoAAAAAAAAAAAAQAAsAAAAAAAAAAAAQAAwAAAAAAAAAAAAQAA0AAAAAAAAAAAARAAoAAAAAAAAAAAARAAsAAAAAAAAAAAARAAwAAAAAAAAAAAARAA0AAAAAAAAAAAASAAoAAAAAAAAAAAASAAsAAAAAAAAAAAASAAwAAAAAAAAAAAASAA0AAAAAAAAAAAAUAAoAAAAAAAAAAAAUAAsAAAAAAAAAAAAUAAwAAAAAAAAAAAAUAA0AAAAAAAAAAAAVAAoAAAAAAAAAAAAVAAsAAAAAAAAAAAAVAAwAAAAAAAAAAAAVAA0AAAAAAAAAAAAWAAoAAAAAAAAAAAAWAAsAAAAAAAAAAAAWAAwAAAAAAAAAAAAWAA0AAAAAAAAAAAAXAAoAAAAAAAAAAAAXAAsAAAAAAAAAAAAXAAwAAAAAAAAAAAAXAA0AAAAAAAAAAAAYAAoAAAAAAAAAAAAYAAsAAAAAAAAAAAAYAAwAAAAAAAAAAAAYAA0AAAAAAAAAAAAZAAoAAAAAAAAAAQAZAAsAAAAAAAAAAgAZAAwAAAAAAAAAAAAZAA0AAAAAAAAAAAAaAAoAAAAAAAAAAAAaAAsAAAAAAAAAAAAaAAwAAAAAAAAAAAAaAA0AAAAAAAAAAAAbAAoAAAAAAAAAAAAbAAsAAAAAAAAAAAAbAAwAAAAAAAAAAAAbAA0AAAAAAAAAAAAcAAoAAAAAAAAAAAAcAAsAAAAAAAAAAAAcAAwAAAAAAAAAAAAcAA0AAAAAAAAAAAAdAAoAAAAAAAAAAAAdAAsAAAAAAAAAAAAdAAwAAAAAAAAAAAAdAA0AAAAAAAAAAAAeAAoAAAAAAAAAAAAeAAsAAAAAAAAAAAAeAAwAAAAAAAAAAAAeAA0AAAAAAAAAAAAfAAoAAAAAAAAAAAAfAAsAAAAAAAAAAAAfAAwAAAAAAAAAAAAfAA0AAAAAAAAAAAAgAAoAAAAAAAAAAAAgAAsAAAAAAAAAAAAgAAwAAAAAAAAAAAAgAA0AAAAAAAAAAAAhAAoAAAAAAAAAAAAhAAsAAAAAAAAAAAAhAAwAAAAAAAAAAAAhAA0AAAAAAAAAAAAiAAoAAAAAAAAAAAAiAAsAAAAAAAAAAAAiAAwAAAAAAAAAAAAiAA0AAAAAAAAAAAABAAAAAAAAAAAAAAABAA4AAAAAAAAAAAACAAAAAAAAAAAAAAACAA4AAAAAAAAAAAADAA4AAAAAAAAAAAAEAA4AAAAAAAAAAAAFAA4AAAAAAAAAAAAGAAAAAAAAAAAAAAAGAA4AAAAAAAAAAAAKAA4AAAAAAAAAAAALAAAAAAAAAAAAAAALAA4AAAAAAAAAAAAMAAAAAAAAAAAAAAAMAA4AAAAAAAAAAAANAAAAAAAAAAAAAAANAA4AAAAAAAAAAAAOAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAPAAAAAAAAAAAAAAAPAA4AAAAAAAAAAAAQAAAAAAAAAAAAAAAQAA4AAAAAAAAAAAARAA4AAAAAAAAAAAASAA4AAAAAAAAAAAATAA4AAAAAAAAAAAAUAAAAAAAAAAAAAAAUAA4AAAAAAAAAAAAVAAAAAAAAAAAAAAAVAA4AAAAAAAAAAAAWAAAAAAAAAAAAAAAWAA4AAAAAAAAAAAAXAAAAAAAAAAAAAAAXAA4AAAAAAAAAAAAYAAAAAAAAAAAAAAAYAA4AAAAAAAAAAAAZAAAAAAAAAAAAAAAZAA4AAAAAAAAAAAAaAAAAAAAAAAAAAAAaAA4AAAAAAAAAAAAbAAAAAAAAAAAAAAAbAA4AAAAAAAAAAAAcAAAAAAAAAAAAAQAcAA4AAAAAAAAAAAAdAA4AAAAAAAAAAAAeAA4AAAAAAAAAAAAfAA4AAAAAAAAAAAAgAAAAAAAAAAAAAAAgAA4AAAAAAAAAAAAhAAAAAAAAAAAAAAAhAA4AAAAAAAAAAAAiAAAAAAAAAAAAAAAiAA4AAAAAAAAAAAAjAAAAAAAAAAAAAAAjAAEAAAAAAAAAAAAjAAIAAAAAAAAAAAAjAAMAAAAAAAAAAAAjAAQAAAAAAAAAAAAjAAUAAAAAAAAAAAAjAAYAAAAAAAAAAAAjAAcAAAAAAAAAAAAjAAgAAAAAAAAAAAAjAAkAAAAAAAAAAAAjAAoAAAAAAAAAAAAjAAsAAAAAAAAAAAAjAAwAAAAAAAAAAAAjAA0AAAAAAAAAAAAjAA4AAAAAAAAAAAABAA8AAAAAAAAAAAACAA8AAAAAAAAAAAADAA8AAAAAAAAAAAAEAA8AAAAAAAAAAAAFAA8AAAAAAAAAAAAGAA8AAAAAAAAAAAAHAA8AAAAAAAAAAAAIAA8AAAAAAAAAAAAJAA8AAAAAAAAAAAAKAA8AAAAAAAAAAAALAA8AAAAAAAAAAAAMAA8AAAAAAAAAAAANAA8AAAAAAAAAAAAOAA8AAAAAAAAAAAAPAA8AAAAAAAAAAAAQAA8AAAAAAAAAAAARAA8AAAAAAAAAAAASAA8AAAAAAAAAAAATAA8AAAAAAAAAAAAUAA8AAAAAAAAAAAAVAA8AAAAAAAAAAAAWAA8AAAAAAAAAAAAXAA8AAAAAAAAAAAAYAA8AAAAAAAAAAAAZAA8AAAAAAAAAAAAaAA8AAAAAAAAAAAAbAA8AAAAAAAAAAAAcAA8AAAAAAAAAAAAdAA8AAAAAAAAAAAAeAA8AAAAAAAAAAAAfAA8AAAAAAAAAAAAgAA8AAAAAAAAAAAAhAA8AAAAAAAAAAAAiAA8AAAAAAAAAAAAjAA8AAAAAAAAAAAD+//7/AAAAAAAAAAD+////AAAAAAAAAAD+/wAAAAAAAAAAAAD+/wEAAAAAAAAAAAD+/wIAAAAAAAAAAAD+/wMAAAAAAAAAAAD+/wQAAAAAAAAAAAD+/wUAAAAAAAAAAAD+/wYAAAAAAAAAAAD+/wcAAAAAAAAAAAD+/wgAAAAAAAAAAAD+/wkAAAAAAAAAAAD+/woAAAAAAAAAAAD+/wsAAAAAAAAAAAD+/wwAAAAAAAAAAAD+/w0AAAAAAAAAAAD+/w4AAAAAAAAAAAD+/w8AAAAAAAAAAAD///7/AAAAAAAAAAD/////AAAAAAAAAAD//wAAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAAD//wUAAAAAAAAAAAD//wYAAAAAAAAAAAD//wcAAAAAAAAAAAD//wgAAAAAAAAAAAD//wkAAAAAAAAAAAD//woAAAAAAAAAAAD//wsAAAAAAAAAAAD//wwAAAAAAAAAAAD//w0AAAAAAAAAAAD//w4AAAAAAAAAAAD//w8AAAAAAAAAAAAAAP7/AAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA8AAAAAAAAAAAABAP7/AAAAAAAAAAABAP//AAAAAAAAAAAGAP7/AAAAAAAAAAAHAAkAAAAAAAAAAAAHAAoAAAAAAAAAAAAHAAsAAAAAAAAAAAAHAAwAAAAAAAAAAAAHAA0AAAAAAAAAAAAHAA4AAAAAAAAAAAAIAAwAAAAAAAAAAAAIAA0AAAAAAAAAAAAIAA4AAAAAAAAAAAAJAAwAAAAAAAAAAAAJAA0AAAAAAAAAAAAJAA4AAAAAAAAAAAALAP7/AAAAAAAAAAALAP//AAAAAAAAAAAMAP7/AAAAAAAAAAAMAP//AAAAAAAAAAANAP7/AAAAAAAAAAANAP//AAAAAAAAAAATAAkAAAAAAAAAAAATAAoAAAAAAAAAAAATAAsAAAAAAAAAAAATAAwAAAAAAAAAAAATAA0AAAAAAAAAAAAWAP7/AAAAAAAAAAAWAP//AAAAAAAAAQAXAP7/AAAAAAAAAAAXAP//AAAAAAAAAQAYAP7/AAAAAAAAAAAYAP//AAAAAAAAAQAZAP7/AAAAAAAAAAAZAP//AAAAAAAAAQAaAP7/AAAAAAAAAAAaAP//AAAAAAAAAQAgAP7/AAAAAAAAAAAgAP//AAAAAAAAAAAhAP7/AAAAAAAAAAAhAP//AAAAAAAAAAAiAP7/AAAAAAAAAAAiAP//AAAAAAAAAAAjAP7/AAAAAAAAAAAjAP//AAAAAAAAAAD+//n/AAAAAAAAAAD+//r/AAAAAAAAAAD+//v/AAAAAAAAAAD+//z/AAAAAAAAAAD+//3/AAAAAAAAAAD///n/AAAAAAAAAAD///r/AAAAAAAAAAD///v/AAAAAAAAAAD///z/AAAAAAAAAAD///3/AAAAAAAAAAAAAPn/AAAAAAAAAAAAAPr/AAAAAAAAAAAAAPv/AAAAAAAAAAAAAPz/AAAAAAAAAAAAAP3/AAAAAAAAAAABAPn/AAAAAAAAAAABAPr/AAAAAAAAAAABAPv/AAAAAAAAAAABAPz/AAAAAAAAAAABAP3/AAAAAAAAAAAEAPr/AAAAAAAAAAAEAPv/AAAAAAAAAQAFAPr/AAAAAAAAAAAFAPv/AAAAAAAAAQAFAP3/AAAAAAAAAQAGAPr/AAAAAAAAAAAGAPv/AAAAAAAAAQAGAP3/AAAAAAAAAAAHAPn/AAAAAAAAAAAHAPr/AAAAAAAAAAAHAPv/AAAAAAAAAAAIAPr/AAAAAAAAAAAIAPv/AAAAAAAAAQAJAPr/AAAAAAAAAQAJAPv/AAAAAAAAAgAKAPr/AAAAAAAAAAAKAPv/AAAAAAAAAQALAPn/AAAAAAAAAAALAPr/AAAAAAAAAAALAPv/AAAAAAAAAQALAPz/AAAAAAAAAAALAP3/AAAAAAAAAAAMAPr/AAAAAAAAAAAMAPv/AAAAAAAAAQAMAPz/AAAAAAAAAAAMAP3/AAAAAAAAAAANAPr/AAAAAAAAAAANAPv/AAAAAAAAAQANAPz/AAAAAAAAAAANAP3/AAAAAAAAAAAOAPr/AAAAAAAAAAAPAPn/AAAAAAAAAAAPAPr/AAAAAAAAAAAQAPn/AAAAAAAAAAAQAPr/AAAAAAAAAAARAPv/AAAAAAAAAAASAPn/AAAAAAAAAAASAPr/AAAAAAAAAAASAPv/AAAAAAAAAAATAPn/AAAAAAAAAAATAPr/AAAAAAAAAAATAPv/AAAAAAAAAAAUAPn/AAAAAAAAAAAUAPr/AAAAAAAAAAAUAPv/AAAAAAAAAAAVAPn/AAAAAAAAAAAVAPr/AAAAAAAAAAAVAPv/AAAAAAAAAAAWAPn/AAAAAAAAAAAWAPr/AAAAAAAAAAAWAPv/AAAAAAAAAAAWAPz/AAAAAAAAAAAWAP3/AAAAAAAAAAAXAPn/AAAAAAAAAAAXAPr/AAAAAAAAAAAXAPv/AAAAAAAAAAAXAPz/AAAAAAAAAAAXAP3/AAAAAAAAAAAYAPn/AAAAAAAAAAAYAPr/AAAAAAAAAAAYAPv/AAAAAAAAAAAYAPz/AAAAAAAAAAAYAP3/AAAAAAAAAAAZAPn/AAAAAAAAAAAZAPr/AAAAAAAAAAAZAPv/AAAAAAAAAAAZAPz/AAAAAAAAAAAZAP3/AAAAAAAAAAAaAPn/AAAAAAAAAAAaAPr/AAAAAAAAAAAaAPv/AAAAAAAAAAAaAPz/AAAAAAAAAAAaAP3/AAAAAAAAAAAbAPn/AAAAAAAAAAAbAPr/AAAAAAAAAAAbAPv/AAAAAAAAAAAcAPn/AAAAAAAAAAAcAPr/AAAAAAAAAAAcAPv/AAAAAAAAAAAdAPn/AAAAAAAAAAAdAPr/AAAAAAAAAAAdAPv/AAAAAAAAAAAeAPn/AAAAAAAAAAAeAPr/AAAAAAAAAAAeAPv/AAAAAAAAAAAfAPn/AAAAAAAAAAAfAPr/AAAAAAAAAAAfAPv/AAAAAAAAAAAgAPn/AAAAAAAAAAAgAPr/AAAAAAAAAAAgAPv/AAAAAAAAAAAgAPz/AAAAAAAAAAAgAP3/AAAAAAAAAAAhAPn/AAAAAAAAAAAhAPr/AAAAAAAAAAAhAPv/AAAAAAAAAAAhAPz/AAAAAAAAAAAhAP3/AAAAAAAAAAAiAPn/AAAAAAAAAAAiAPr/AAAAAAAAAAAiAPv/AAAAAAAAAAAiAPz/AAAAAAAAAAAiAP3/AAAAAAAAAAAjAPn/AAAAAAAAAAAjAPr/AAAAAAAAAAAjAPv/AAAAAAAAAAAjAPz/AAAAAAAAAAAjAP3/AAAAAAAAAAAMAAkAAAAAAAAAAAAMAAoAAAAAAAAAAAAMAAsAAAAAAAAAAAAMAAwAAAAAAAAAAAARAAAAAAAAAAAAAAARAAEAAAAAAAAAAAASAAAAAAAAAAAAAQASAAEAAAAAAAAAAQATAAAAAAAAAAAAAAATAAEAAAAAAAAAAAAfAAAAAAAAAAAAAAAfAAEAAAAAAAAAAAAHAPz/AAAAAAAAAAAHAP3/AAAAAAAAAAAHAP7/AAAAAAAAAAAIAP3/AAAAAAAAAAAIAP7/AAAAAAAAAQATAAgAAAAAAAAAAAAUAAgAAAAAAAAAAAAVAAgAAAAAAAAAAAAXAAIAAAAAAAAAAAAXAAMAAAAAAAAAAAAYAAIAAAAAAAAAAAAYAAMAAAAAAAAAAAAZAAIAAAAAAAAAAAAZAAMAAAAAAAAAAAASAP3/AAAAAAAAAAAUAP3/AAAAAAAAAAAFAAMAAAAAAAAAAAAFAAQAAAAAAAAAAAAFAAUAAAAAAAAAAAAFAAYAAAAAAAAAAAAFAAcAAAAAAAAAAAAGAAMAAAAAAAAAAAAGAAQAAAAAAAAAAAAGAAUAAAAAAAAAAAAGAAYAAAAAAAAAAAAGAAcAAAAAAAAAAAAOAPv/AAAAAAAAAQAPAPv/AAAAAAAAAQAQAPv/AAAAAAAAAQD+//X/AAAAAAAAAAD+//b/AAAAAAAAAAD+//f/AAAAAAAAAAD+//j/AAAAAAAAAAD///X/AAAAAAAAAAD///b/AAAAAAAAAAD///f/AAAAAAAAAAD///j/AAAAAAAAAAAAAPX/AAAAAAAAAAAAAPb/AAAAAAAAAAAAAPf/AAAAAAAAAAAAAPj/AAAAAAAAAAABAPX/AAAAAAAAAAABAPb/AAAAAAAAAAABAPf/AAAAAAAAAAABAPj/AAAAAAAAAAACAPX/AAAAAAAAAAACAPb/AAAAAAAAAQADAPX/AAAAAAAAAAADAPb/AAAAAAAAAQAEAPX/AAAAAAAAAAAEAPb/AAAAAAAAAQAFAPX/AAAAAAAAAAAFAPb/AAAAAAAAAQAGAPX/AAAAAAAAAAAGAPb/AAAAAAAAAQAHAPX/AAAAAAAAAAAHAPb/AAAAAAAAAAAHAPf/AAAAAAAAAAAHAPj/AAAAAAAAAQAIAPX/AAAAAAAAAAAIAPb/AAAAAAAAAAAIAPf/AAAAAAAAAQAJAPX/AAAAAAAAAAAJAPb/AAAAAAAAAAAJAPf/AAAAAAAAAQAKAPX/AAAAAAAAAAAKAPb/AAAAAAAAAAAKAPf/AAAAAAAAAQALAPX/AAAAAAAAAAALAPb/AAAAAAAAAAALAPf/AAAAAAAAAAALAPj/AAAAAAAAAQAMAPX/AAAAAAAAAAAMAPb/AAAAAAAAAAAMAPf/AAAAAAAAAAAMAPj/AAAAAAAAAQANAPX/AAAAAAAAAAANAPb/AAAAAAAAAAANAPf/AAAAAAAAAAANAPj/AAAAAAAAAQAOAPX/AAAAAAAAAAAOAPb/AAAAAAAAAAAOAPf/AAAAAAAAAAAOAPj/AAAAAAAAAQAPAPX/AAAAAAAAAAAPAPb/AAAAAAAAAAAPAPf/AAAAAAAAAAAPAPj/AAAAAAAAAQAQAPX/AAAAAAAAAAAQAPb/AAAAAAAAAAAQAPf/AAAAAAAAAAAQAPj/AAAAAAAAAQARAPX/AAAAAAAAAAARAPb/AAAAAAAAAAARAPf/AAAAAAAAAQASAPX/AAAAAAAAAAASAPb/AAAAAAAAAAASAPf/AAAAAAAAAQASAPj/AAAAAAAAAAATAPX/AAAAAAAAAAATAPb/AAAAAAAAAAATAPf/AAAAAAAAAQAUAPX/AAAAAAAAAAAUAPb/AAAAAAAAAAAUAPf/AAAAAAAAAAAUAPj/AAAAAAAAAAAVAPX/AAAAAAAAAAAVAPb/AAAAAAAAAAAVAPf/AAAAAAAAAAAVAPj/AAAAAAAAAAAWAPX/AAAAAAAAAAAWAPb/AAAAAAAAAAAWAPf/AAAAAAAAAAAWAPj/AAAAAAAAAAAXAPX/AAAAAAAAAAAXAPb/AAAAAAAAAAAXAPf/AAAAAAAAAAAXAPj/AAAAAAAAAAAYAPX/AAAAAAAAAAAYAPb/AAAAAAAAAAAYAPf/AAAAAAAAAAAYAPj/AAAAAAAAAAAZAPX/AAAAAAAAAAAZAPb/AAAAAAAAAAAZAPf/AAAAAAAAAAAZAPj/AAAAAAAAAAAaAPX/AAAAAAAAAAAaAPb/AAAAAAAAAAAaAPf/AAAAAAAAAAAaAPj/AAAAAAAAAAAbAPX/AAAAAAAAAAAbAPb/AAAAAAAAAAAbAPf/AAAAAAAAAAAbAPj/AAAAAAAAAAAcAPX/AAAAAAAAAAAcAPb/AAAAAAAAAAAcAPf/AAAAAAAAAAAcAPj/AAAAAAAAAAAdAPX/AAAAAAAAAAAdAPb/AAAAAAAAAAAdAPf/AAAAAAAAAAAdAPj/AAAAAAAAAAAeAPX/AAAAAAAAAAAeAPb/AAAAAAAAAAAeAPf/AAAAAAAAAAAeAPj/AAAAAAAAAAAfAPX/AAAAAAAAAAAfAPb/AAAAAAAAAAAfAPf/AAAAAAAAAAAfAPj/AAAAAAAAAAAgAPX/AAAAAAAAAAAgAPb/AAAAAAAAAAAgAPf/AAAAAAAAAAAgAPj/AAAAAAAAAAAhAPX/AAAAAAAAAAAhAPb/AAAAAAAAAAAhAPf/AAAAAAAAAAAhAPj/AAAAAAAAAAAiAPX/AAAAAAAAAAAiAPb/AAAAAAAAAAAiAPf/AAAAAAAAAAAiAPj/AAAAAAAAAAAjAPX/AAAAAAAAAAAjAPb/AAAAAAAAAAAjAPf/AAAAAAAAAAAjAPj/AAAAAAAAAAD+//T/AAAAAAAAAAD///T/AAAAAAAAAAAAAPT/AAAAAAAAAAABAPT/AAAAAAAAAAACAPT/AAAAAAAAAAADAPT/AAAAAAAAAAAEAPT/AAAAAAAAAAAFAPT/AAAAAAAAAAAGAPT/AAAAAAAAAAAHAPT/AAAAAAAAAAAHAP//AAAAAAAAAQAIAPT/AAAAAAAAAAAJAPT/AAAAAAAAAAAKAPT/AAAAAAAAAAALAPT/AAAAAAAAAAAMAPT/AAAAAAAAAAANAPT/AAAAAAAAAAAOAPT/AAAAAAAAAAAPAPT/AAAAAAAAAAAQAPT/AAAAAAAAAAARAPT/AAAAAAAAAAASAPT/AAAAAAAAAAATAPT/AAAAAAAAAAAUAPT/AAAAAAAAAAAVAPT/AAAAAAAAAAAWAPT/AAAAAAAAAAAXAPT/AAAAAAAAAAAYAPT/AAAAAAAAAAAZAPT/AAAAAAAAAAAaAPT/AAAAAAAAAAAbAPT/AAAAAAAAAAAcAPT/AAAAAAAAAAAdAPT/AAAAAAAAAAAeAPT/AAAAAAAAAAAfAPT/AAAAAAAAAAAgAPT/AAAAAAAAAAAhAPT/AAAAAAAAAAAiAPT/AAAAAAAAAAAjAPT/AAAAAAAAAAACAP//AAAAAAAAAAAGAP//AAAAAAAAAAA=") tile_set = ExtResource("1_elkht") +metadata/_edit_lock_ = true [node name="Foam" type="TileMapLayer" parent="TileMapLayers" unique_id=170161388] -tile_map_data = PackedByteArray("AAAEAAIAAgAAAAAAAAAEAAMAAgAAAAAAAAAEAAQAAgAAAAAAAAAEAAUAAgAAAAAAAAAEAAYAAgAAAAAAAAAEAAcAAgAAAAAAAAAEAAgAAgAAAAAAAAAFAAIAAgAAAAAAAAAFAAgAAgAAAAAAAAAGAAIAAgAAAAAAAAAGAAgAAgAAAAAAAAAHAAIAAgAAAAAAAAAHAAgAAgAAAAAAAAAIAAIAAgAAAAAAAAAIAAgAAgAAAAAAAAAJAAIAAgAAAAAAAAAJAAgAAgAAAAAAAAAKAAIAAgAAAAAAAAAKAAgAAgAAAAAAAAALAAIAAgAAAAAAAAALAAgAAgAAAAAAAAAMAAIAAgAAAAAAAAAMAAgAAgAAAAAAAAANAAIAAgAAAAAAAAANAAgAAgAAAAAAAAAOAAIAAgAAAAAAAAAOAAgAAgAAAAAAAAAPAAIAAgAAAAAAAAAPAAgAAgAAAAAAAAAQAAIAAgAAAAAAAAAQAAgAAgAAAAAAAAARAAIAAgAAAAAAAAARAAgAAgAAAAAAAAASAAIAAgAAAAAAAAASAAgAAgAAAAAAAAATAAIAAgAAAAAAAAATAAgAAgAAAAAAAAAUAAIAAgAAAAAAAAAUAAgAAgAAAAAAAAAVAAIAAgAAAAAAAAAVAAgAAgAAAAAAAAAWAAIAAgAAAAAAAAAWAAgAAgAAAAAAAAAXAAIAAgAAAAAAAAAXAAgAAgAAAAAAAAAYAAIAAgAAAAAAAAAYAAgAAgAAAAAAAAAZAAIAAgAAAAAAAAAZAAgAAgAAAAAAAAAaAAIAAgAAAAAAAAAaAAgAAgAAAAAAAAAbAAIAAgAAAAAAAAAbAAgAAgAAAAAAAAAcAAIAAgAAAAAAAAAcAAgAAgAAAAAAAAAdAAIAAgAAAAAAAAAdAAgAAgAAAAAAAAAeAAIAAgAAAAAAAAAeAAgAAgAAAAAAAAAfAAIAAgAAAAAAAAAfAAgAAgAAAAAAAAAgAAIAAgAAAAAAAAAgAAgAAgAAAAAAAAAhAAIAAgAAAAAAAAAhAAMAAgAAAAAAAAAhAAQAAgAAAAAAAAAhAAUAAgAAAAAAAAAhAAYAAgAAAAAAAAAhAAcAAgAAAAAAAAAhAAgAAgAAAAAAAAA=") +tile_map_data = PackedByteArray("AAAHAAAAAgAAAAAAAAAIAP//AgAAAAAAAAAIAAAAAgAAAAAAAAAJAPz/AgAAAAAAAAAJAP3/AgAAAAAAAAAJAP7/AgAAAAAAAAAJAAAAAgAAAAAAAAAKAPz/AgAAAAAAAAAKAP3/AgAAAAAAAAAKAP7/AgAAAAAAAAAKAP//AgAAAAAAAAAKAAAAAgAAAAAAAAAOAPz/AgAAAAAAAAAOAP3/AgAAAAAAAAAOAP7/AgAAAAAAAAAPAPz/AgAAAAAAAAAPAP//AgAAAAAAAAAQAPz/AgAAAAAAAAAEAAMAAgAAAAAAAAAEAAQAAgAAAAAAAAAEAAUAAgAAAAAAAAAEAAYAAgAAAAAAAAAEAAcAAgAAAAAAAAAEAAgAAgAAAAAAAAAFAAIAAgAAAAAAAAAFAAgAAgAAAAAAAAAGAAIAAgAAAAAAAAAGAAgAAgAAAAAAAAAHAAIAAgAAAAAAAAAHAAMAAgAAAAAAAAAHAAQAAgAAAAAAAAAHAAUAAgAAAAAAAAAHAAYAAgAAAAAAAAAHAAcAAgAAAAAAAAAHAAgAAgAAAAAAAAAIAAIAAgAAAAAAAAAJAAIAAgAAAAAAAAAKAAIAAgAAAAAAAAALAAIAAgAAAAAAAAAMAAIAAgAAAAAAAAAMAAgAAgAAAAAAAAANAAIAAgAAAAAAAAANAAgAAgAAAAAAAAAOAP//AgAAAAAAAAAOAAIAAgAAAAAAAAAOAAgAAgAAAAAAAAAPAAIAAgAAAAAAAAAPAAgAAgAAAAAAAAAQAP//AgAAAAAAAAAQAAIAAgAAAAAAAAAQAAgAAgAAAAAAAAARAPz/AgAAAAAAAAARAP3/AgAAAAAAAAARAP//AgAAAAAAAAARAAIAAgAAAAAAAAARAAgAAgAAAAAAAAASAPz/AgAAAAAAAAASAP7/AgAAAAAAAAASAP//AgAAAAAAAAASAAIAAgAAAAAAAAASAAgAAgAAAAAAAAATAPz/AgAAAAAAAAATAP3/AgAAAAAAAAATAP//AgAAAAAAAAATAAIAAgAAAAAAAAATAAcAAgAAAAAAAAAUAPz/AgAAAAAAAAAUAP7/AgAAAAAAAAAUAP//AgAAAAAAAAAUAAIAAgAAAAAAAAAUAAcAAgAAAAAAAAAVAPz/AgAAAAAAAAAVAP3/AgAAAAAAAAAVAP7/AgAAAAAAAAAVAP//AgAAAAAAAAAVAAIAAgAAAAAAAAAVAAcAAgAAAAAAAAAWAAIAAgAAAAAAAAAWAAMAAgAAAAAAAAAWAAgAAgAAAAAAAAAXAAQAAgAAAAAAAAAXAAgAAgAAAAAAAAAYAAQAAgAAAAAAAAAYAAgAAgAAAAAAAAAZAAQAAgAAAAAAAAAZAAgAAgAAAAAAAAAaAAIAAgAAAAAAAAAaAAMAAgAAAAAAAAAaAAgAAgAAAAAAAAAbAPz/AgAAAAAAAAAbAP3/AgAAAAAAAAAbAP7/AgAAAAAAAAAbAP//AgAAAAAAAAAbAAIAAgAAAAAAAAAbAAgAAgAAAAAAAAAcAPz/AgAAAAAAAAAcAP//AgAAAAAAAAAcAAgAAgAAAAAAAAAdAPz/AgAAAAAAAAAdAAgAAgAAAAAAAAAeAPz/AgAAAAAAAAAeAAgAAgAAAAAAAAAfAPz/AgAAAAAAAAAfAP3/AgAAAAAAAAAfAP7/AgAAAAAAAAAfAP//AgAAAAAAAAAfAAIAAgAAAAAAAAAfAAgAAgAAAAAAAAAgAAIAAgAAAAAAAAAgAAgAAgAAAAAAAAAhAAIAAgAAAAAAAAAhAAMAAgAAAAAAAAAhAAQAAgAAAAAAAAAhAAUAAgAAAAAAAAAhAAYAAgAAAAAAAAAhAAcAAgAAAAAAAAAhAAgAAgAAAAAAAAAIAAkAAgAAAAAAAAAIAAoAAgAAAAAAAAAIAAsAAgAAAAAAAAAJAAsAAgAAAAAAAAAKAAsAAgAAAAAAAAALAAkAAgAAAAAAAAALAAoAAgAAAAAAAAALAAsAAgAAAAAAAAAcAAEAAgAAAAAAAAAdAAAAAgAAAAAAAAAeAAAAAgAAAAAAAAAeAAEAAgAAAAAAAAAIAPj/AgAAAAAAAAAIAPn/AgAAAAAAAAAIAPz/AgAAAAAAAAAJAPj/AgAAAAAAAAAJAPn/AgAAAAAAAAAKAPj/AgAAAAAAAAAKAPn/AgAAAAAAAAACAPf/AgAAAAAAAAACAPj/AgAAAAAAAAACAPn/AgAAAAAAAAACAPr/AgAAAAAAAAACAPv/AgAAAAAAAAACAPz/AgAAAAAAAAACAP3/AgAAAAAAAAACAP7/AgAAAAAAAAADAPf/AgAAAAAAAAADAPr/AgAAAAAAAAADAPv/AgAAAAAAAAADAAAAAgAAAAAAAAADAAEAAgAAAAAAAAADAAIAAgAAAAAAAAAEAPf/AgAAAAAAAAAEAPn/AgAAAAAAAAAEAPz/AgAAAAAAAAAEAP3/AgAAAAAAAAAFAPf/AgAAAAAAAAAFAPn/AgAAAAAAAAAFAPz/AgAAAAAAAAAFAP7/AgAAAAAAAAAFAAAAAgAAAAAAAAAFAAEAAgAAAAAAAAAGAPf/AgAAAAAAAAAGAPj/AgAAAAAAAAAGAPn/AgAAAAAAAAAGAPz/AgAAAAAAAAAMAPn/AgAAAAAAAAANAPn/AgAAAAAAAAAOAPn/AgAAAAAAAAARAPj/AgAAAAAAAAARAPn/AgAAAAAAAAARAPr/AgAAAAAAAAATAPj/AgAAAAAAAAADAP//AgAAAAAAAAAFAP//AgAAAAAAAAA=") tile_set = ExtResource("2_brig6") - -[node name="Dirt" type="TileMapLayer" parent="TileMapLayers" unique_id=1805831877] -tile_map_data = PackedByteArray("AAAhAAgABgACAAIAAAAhAAcABgACAAEAAAAhAAYABgACAAEAAAAhAAUABgACAAEAAAAhAAQABgACAAEAAAAhAAMABgACAAEAAAAhAAIABgACAAAAAAAgAAgABgABAAIAAAAgAAcABgABAAEAAAAgAAYABgABAAEAAAAgAAUABgABAAEAAAAgAAQABgABAAEAAAAgAAMABgABAAEAAAAgAAIABgABAAAAAAAfAAgABgABAAIAAAAfAAcABgABAAEAAAAfAAYABgABAAEAAAAfAAUABgABAAEAAAAfAAQABgABAAEAAAAfAAMABgABAAEAAAAfAAIABgABAAAAAAAeAAgABgABAAIAAAAeAAcABgABAAEAAAAeAAYABgABAAEAAAAeAAUABgABAAEAAAAeAAQABgABAAEAAAAeAAMABgABAAEAAAAeAAIABgABAAAAAAAdAAgABgABAAIAAAAdAAcABgABAAEAAAAdAAYABgABAAEAAAAdAAUABgABAAEAAAAdAAQABgABAAEAAAAdAAMABgABAAEAAAAdAAIABgABAAAAAAAcAAgABgABAAIAAAAcAAcABgABAAEAAAAcAAYABgABAAEAAAAcAAUABgABAAEAAAAcAAQABgABAAEAAAAcAAMABgABAAEAAAAcAAIABgABAAAAAAAbAAgABgABAAIAAAAbAAcABgABAAEAAAAbAAYABgABAAEAAAAbAAUABgABAAEAAAAbAAQABgABAAEAAAAbAAMABgABAAEAAAAbAAIABgABAAAAAAAaAAgABgABAAIAAAAaAAcABgABAAEAAAAaAAYABgABAAEAAAAaAAUABgABAAEAAAAaAAQABgABAAEAAAAaAAMABgABAAEAAAAaAAIABgABAAAAAAAZAAgABgABAAIAAAAZAAcABgABAAEAAAAZAAYABgABAAEAAAAZAAUABgABAAEAAAAZAAQABgABAAEAAAAZAAMABgABAAEAAAAZAAIABgABAAAAAAAYAAgABgABAAIAAAAYAAcABgABAAEAAAAYAAYABgABAAEAAAAYAAUABgABAAEAAAAYAAQABgABAAEAAAAYAAMABgABAAEAAAAYAAIABgABAAAAAAAXAAgABgABAAIAAAAXAAcABgABAAEAAAAXAAYABgABAAEAAAAXAAUABgABAAEAAAAXAAQABgABAAEAAAAXAAMABgABAAEAAAAXAAIABgABAAAAAAAWAAgABgABAAIAAAAWAAcABgABAAEAAAAWAAYABgABAAEAAAAWAAUABgABAAEAAAAWAAQABgABAAEAAAAWAAMABgABAAEAAAAWAAIABgABAAAAAAAVAAgABgABAAIAAAAVAAcABgABAAEAAAAVAAYABgABAAEAAAAVAAUABgABAAEAAAAVAAQABgABAAEAAAAVAAMABgABAAEAAAAVAAIABgABAAAAAAAUAAgABgABAAIAAAAUAAcABgABAAEAAAAUAAYABgABAAEAAAAUAAUABgABAAEAAAAUAAQABgABAAEAAAAUAAMABgABAAEAAAAUAAIABgABAAAAAAATAAgABgABAAIAAAATAAcABgABAAEAAAATAAYABgABAAEAAAATAAUABgABAAEAAAATAAQABgABAAEAAAATAAMABgABAAEAAAATAAIABgABAAAAAAASAAgABgABAAIAAAASAAcABgABAAEAAAASAAYABgABAAEAAAASAAUABgABAAEAAAASAAQABgABAAEAAAASAAMABgABAAEAAAASAAIABgABAAAAAAARAAgABgABAAIAAAARAAcABgABAAEAAAARAAYABgABAAEAAAARAAUABgABAAEAAAARAAQABgABAAEAAAARAAMABgABAAEAAAARAAIABgABAAAAAAAQAAgABgABAAIAAAAQAAcABgABAAEAAAAQAAYABgABAAEAAAAQAAUABgABAAEAAAAQAAQABgABAAEAAAAQAAMABgABAAEAAAAQAAIABgABAAAAAAAPAAgABgABAAIAAAAPAAcABgABAAEAAAAPAAYABgABAAEAAAAPAAUABgABAAEAAAAPAAQABgABAAEAAAAPAAMABgABAAEAAAAPAAIABgABAAAAAAAOAAgABgABAAIAAAAOAAcABgABAAEAAAAOAAYABgABAAEAAAAOAAUABgABAAEAAAAOAAQABgABAAEAAAAOAAMABgABAAEAAAAOAAIABgABAAAAAAANAAgABgABAAIAAAANAAcABgABAAEAAAANAAYABgABAAEAAAANAAUABgABAAEAAAANAAQABgABAAEAAAANAAMABgABAAEAAAANAAIABgABAAAAAAAMAAgABgABAAIAAAAMAAcABgABAAEAAAAMAAYABgABAAEAAAAMAAUABgABAAEAAAAMAAQABgABAAEAAAAMAAMABgABAAEAAAAMAAIABgABAAAAAAALAAgABgABAAIAAAALAAcABgABAAEAAAALAAYABgABAAEAAAALAAUABgABAAEAAAALAAQABgABAAEAAAALAAMABgABAAEAAAALAAIABgABAAAAAAAKAAgABgABAAIAAAAKAAcABgABAAEAAAAKAAYABgABAAEAAAAKAAUABgABAAEAAAAKAAQABgABAAEAAAAKAAMABgABAAEAAAAKAAIABgABAAAAAAAJAAgABgABAAIAAAAJAAcABgABAAEAAAAJAAYABgABAAEAAAAJAAUABgABAAEAAAAJAAQABgABAAEAAAAJAAMABgABAAEAAAAJAAIABgABAAAAAAAIAAgABgABAAIAAAAIAAcABgABAAEAAAAIAAYABgABAAEAAAAIAAUABgABAAEAAAAIAAQABgABAAEAAAAIAAMABgABAAEAAAAIAAIABgABAAAAAAAHAAgABgABAAIAAAAHAAcABgABAAEAAAAHAAYABgABAAEAAAAHAAUABgABAAEAAAAHAAQABgABAAEAAAAHAAMABgABAAEAAAAHAAIABgABAAAAAAAGAAgABgABAAIAAAAGAAcABgABAAEAAAAGAAYABgABAAEAAAAGAAUABgABAAEAAAAGAAQABgABAAEAAAAGAAMABgABAAEAAAAGAAIABgABAAAAAAAFAAgABgABAAIAAAAFAAcABgABAAEAAAAFAAYABgABAAEAAAAFAAUABgABAAEAAAAFAAQABgABAAEAAAAFAAMABgABAAEAAAAFAAIABgABAAAAAAAEAAgABgAAAAIAAAAEAAcABgAAAAEAAAAEAAYABgAAAAEAAAAEAAUABgAAAAEAAAAEAAQABgAAAAEAAAAEAAMABgAAAAEAAAAEAAIABgAAAAAAAAA=") -tile_set = ExtResource("3_0yw4f") +metadata/_edit_lock_ = true [node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=1795357034] -tile_map_data = PackedByteArray("AAAhAAgAAQACAAIAAAAhAAcAAQACAAEAAAAhAAYAAQACAAEAAAAhAAUAAQACAAEAAAAhAAQAAQACAAEAAAAhAAMAAQACAAEAAAAhAAIAAQACAAAAAAAgAAgAAQABAAIAAAAgAAcAAQABAAEAAAAgAAYAAQABAAEAAAAgAAUAAQABAAEAAAAgAAQAAQABAAEAAAAgAAIAAQABAAAAAAAfAAgAAQABAAIAAAAfAAcAAQABAAEAAAAfAAYAAQABAAEAAAAfAAUAAQABAAEAAAAfAAQAAQABAAEAAAAfAAMAAQAKAAAAAAAfAAIAAQABAAAAAAAeAAgAAQABAAIAAAAeAAcAAQABAAEAAAAeAAYAAQABAAEAAAAeAAUAAQABAAEAAAAeAAQAAQABAAEAAAAeAAMAAQABAAEAAAAeAAIAAQABAAAAAAAdAAgAAQABAAIAAAAdAAcAAQABAAEAAAAdAAYAAQABAAEAAAAdAAUAAQABAAEAAAAdAAQAAQABAAEAAAAdAAMAAQABAAEAAAAdAAIAAQABAAAAAAAcAAgAAQABAAIAAAAcAAcAAQABAAEAAAAcAAYAAQABAAEAAAAcAAUAAQABAAEAAAAcAAQAAQABAAEAAAAcAAMAAQABAAEAAAAcAAIAAQABAAAAAAAbAAgAAQABAAIAAAAbAAcAAQABAAEAAAAbAAYAAQABAAEAAAAbAAUAAQABAAEAAAAbAAQAAQABAAEAAAAbAAMAAQABAAEAAAAbAAIAAQABAAAAAAAaAAgAAQABAAIAAAAaAAcAAQABAAEAAAAaAAYAAQABAAEAAAAaAAUAAQABAAEAAAAaAAQAAQABAAEAAAAaAAMAAQABAAEAAAAaAAIAAQABAAAAAAAZAAgAAQABAAIAAAAZAAcAAQABAAEAAAAZAAYAAQABAAEAAAAZAAUAAQABAAEAAAAZAAQAAQABAAEAAAAZAAMAAQABAAEAAAAZAAIAAQABAAAAAAAYAAgAAQABAAIAAAAYAAcAAQAMAAAAAAAYAAYAAQABAAEAAAAYAAUAAQABAAEAAAAYAAQAAQABAAEAAAAYAAMAAQABAAEAAAAYAAIAAQABAAAAAAAXAAgAAQABAAIAAAAXAAcAAQABAAEAAAAXAAYAAQABAAEAAAAXAAUAAQABAAEAAAAXAAQAAQABAAEAAAAXAAMAAQABAAEAAAAXAAIAAQABAAAAAAAWAAgAAQABAAIAAAAWAAcAAQABAAEAAAAWAAYAAQABAAEAAAAWAAUAAQABAAEAAAAWAAQAAQABAAEAAAAWAAMAAQABAAEAAAAWAAIAAQABAAAAAAAVAAgAAQABAAIAAAAVAAcAAQABAAEAAAAVAAYAAQABAAEAAAAVAAUAAQABAAEAAAAVAAQAAQABAAEAAAAVAAMAAQABAAEAAAAVAAIAAQABAAAAAAAUAAgAAQABAAIAAAAUAAcAAQABAAEAAAAUAAYAAQABAAEAAAAUAAUAAQABAAEAAAAUAAQAAQABAAEAAAAUAAMAAQABAAEAAAAUAAIAAQABAAAAAAATAAgAAQABAAIAAAATAAcAAQABAAEAAAATAAYAAQABAAEAAAATAAUAAQABAAEAAAATAAQAAQABAAEAAAATAAMAAQABAAEAAAATAAIAAQABAAAAAAASAAgAAQABAAIAAAASAAcAAQABAAEAAAASAAYAAQABAAEAAAASAAUAAQABAAEAAAASAAQAAQABAAEAAAASAAMAAQABAAEAAAASAAIAAQABAAAAAAARAAgAAQABAAIAAAARAAcAAQABAAEAAAARAAYAAQABAAEAAAARAAUAAQABAAEAAAARAAQAAQABAAEAAAARAAMAAQABAAEAAAARAAIAAQABAAAAAAAQAAgAAQABAAIAAAAQAAcAAQABAAEAAAAQAAYAAQABAAEAAAAQAAUAAQABAAEAAAAQAAQAAQABAAEAAAAQAAMAAQABAAEAAAAQAAIAAQABAAAAAAAPAAgAAQABAAIAAAAPAAcAAQABAAEAAAAPAAYAAQABAAEAAAAPAAUAAQABAAEAAAAPAAQAAQABAAEAAAAPAAMAAQABAAEAAAAPAAIAAQABAAAAAAAOAAgAAQABAAIAAAAOAAcAAQABAAEAAAAOAAYAAQABAAEAAAAOAAUAAQABAAEAAAAOAAQAAQABAAEAAAAOAAMAAQALAAAAAAAOAAIAAQABAAAAAAANAAgAAQABAAIAAAANAAcAAQABAAEAAAANAAYAAQABAAEAAAANAAUAAQABAAEAAAANAAQAAQABAAEAAAANAAMAAQABAAEAAAANAAIAAQABAAAAAAAMAAgAAQABAAIAAAAMAAcAAQABAAEAAAAMAAYAAQABAAEAAAAMAAUAAQABAAEAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQABAAAAAAALAAgAAQABAAIAAAALAAcAAQABAAEAAAALAAYAAQABAAEAAAALAAUAAQABAAEAAAALAAQAAQABAAEAAAALAAMAAQABAAEAAAALAAIAAQABAAAAAAAKAAgAAQABAAIAAAAKAAcAAQABAAEAAAAKAAYAAQABAAEAAAAKAAUAAQABAAEAAAAKAAQAAQABAAEAAAAKAAMAAQABAAEAAAAKAAIAAQABAAAAAAAJAAgAAQABAAIAAAAJAAcAAQABAAEAAAAJAAYAAQABAAEAAAAJAAUAAQABAAEAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAAAAAAIAAgAAQABAAIAAAAIAAcAAQABAAEAAAAIAAYAAQABAAEAAAAIAAUAAQABAAEAAAAIAAQAAQABAAEAAAAHAAgAAQABAAIAAAAHAAcAAQABAAEAAAAHAAYAAQABAAEAAAAHAAUAAQABAAEAAAAHAAQAAQABAAEAAAAGAAgAAQABAAIAAAAGAAcAAQABAAEAAAAGAAYAAQAKAAAAAAAGAAUAAQABAAEAAAAGAAQAAQABAAEAAAAFAAgAAQABAAIAAAAFAAcAAQABAAEAAAAFAAYAAQABAAEAAAAFAAUAAQABAAEAAAAFAAQAAQABAAEAAAAEAAgAAQAAAAIAAAAEAAcAAQAAAAEAAAAEAAYAAQAAAAEAAAAEAAUAAQAAAAEAAAAEAAQAAQAAAAEAAAAEAAMAAQAAAAEAAAAEAAIAAQAAAAAAAAAIAAMAAQABAAEAAAAIAAIAAQABAAAAAAAHAAMAAQABAAEAAAAHAAIAAQABAAAAAAAGAAMAAQABAAEAAAAGAAIAAQABAAAAAAAFAAMAAQABAAEAAAAFAAIAAQABAAAAAAAgAAMAAQABAAEAAAA=") +tile_map_data = PackedByteArray("AAAhAAgAAQACAAIAAAAhAAcAAQACAAEAAAAhAAYAAQACAAEAAAAhAAUAAQACAAEAAAAhAAQAAQACAAEAAAAhAAMAAQACAAEAAAAhAAIAAQACAAAAAAAgAAgAAQABAAIAAAAgAAcAAQABAAEAAAAgAAYAAQABAAEAAAAgAAUAAQABAAEAAAAgAAQAAQABAAEAAAAgAAIAAQABAAAAAAAfAAgAAQABAAIAAAAfAAcAAQABAAEAAAAfAAYAAQABAAEAAAAfAAUAAQABAAEAAAAfAAQAAQABAAEAAAAfAAMAAQABAAEAAAAfAAIAAQABAAAAAAAeAAgAAQABAAIAAAAeAAcAAQABAAEAAAAeAAYAAQABAAEAAAAeAAUAAQABAAEAAAAeAAQAAQABAAEAAAAeAAMAAQABAAEAAAAeAAIAAQABAAAAAAAdAAgAAQABAAIAAAAdAAcAAQABAAEAAAAdAAYAAQABAAEAAAAdAAUAAQABAAEAAAAdAAQAAQABAAEAAAAdAAMAAQABAAEAAAAdAAIAAQABAAAAAAAcAAgAAQABAAIAAAAcAAcAAQABAAEAAAAcAAYAAQABAAEAAAAcAAUAAQABAAEAAAAcAAQAAQABAAEAAAAcAAMAAQABAAEAAAAcAAIAAQABAAAAAAAbAAgAAQABAAIAAAAbAAcAAQABAAEAAAAbAAYAAQABAAEAAAAbAAUAAQABAAEAAAAbAAQAAQABAAEAAAAbAAMAAQABAAEAAAAbAAIAAQABAAAAAAAaAAgAAQABAAIAAAAaAAcAAQABAAEAAAAaAAYAAQABAAEAAAAaAAUAAQABAAEAAAAaAAQAAQABAAEAAAAaAAMAAQAAAAEAAAAaAAIAAQAAAAAAAAAZAAgAAQABAAIAAAAZAAcAAQABAAEAAAAZAAYAAQABAAEAAAAZAAUAAQABAAEAAAAZAAQAAQABAAAAAAAYAAgAAQABAAIAAAAYAAcAAQABAAEAAAAYAAYAAQABAAEAAAAYAAUAAQABAAEAAAAYAAQAAQABAAAAAAAXAAgAAQABAAIAAAAXAAcAAQABAAEAAAAXAAYAAQABAAEAAAAXAAUAAQABAAEAAAAXAAQAAQABAAAAAAAWAAgAAQAAAAIAAAAWAAcAAQABAAEAAAAWAAYAAQABAAEAAAAWAAUAAQABAAEAAAAWAAQAAQABAAEAAAAWAAMAAQACAAEAAAAWAAIAAQACAAAAAAAVAAcAAQABAAIAAAAVAAYAAQABAAEAAAAVAAUAAQABAAEAAAAVAAQAAQABAAEAAAAVAAMAAQABAAEAAAAVAAIAAQABAAAAAAAUAAcAAQABAAIAAAAUAAYAAQABAAEAAAAUAAUAAQABAAEAAAAUAAQAAQABAAEAAAAUAAMAAQABAAEAAAAUAAIAAQABAAAAAAATAAcAAQABAAIAAAATAAYAAQABAAEAAAATAAUAAQABAAEAAAATAAQAAQABAAEAAAATAAMAAQABAAEAAAATAAIAAQABAAAAAAASAAgAAQACAAIAAAASAAcAAQABAAEAAAASAAYAAQABAAEAAAASAAUAAQABAAEAAAASAAQAAQABAAEAAAASAAMAAQABAAEAAAASAAIAAQABAAAAAAARAAgAAQABAAIAAAARAAcAAQABAAEAAAARAAYAAQABAAEAAAARAAUAAQABAAEAAAARAAQAAQABAAEAAAARAAMAAQABAAEAAAARAAIAAQABAAAAAAAQAAgAAQABAAIAAAAQAAcAAQABAAEAAAAQAAYAAQABAAEAAAAQAAUAAQABAAEAAAAQAAQAAQABAAEAAAAQAAMAAQABAAEAAAAQAAIAAQABAAAAAAAPAAgAAQABAAIAAAAPAAcAAQABAAEAAAAPAAYAAQABAAEAAAAPAAUAAQABAAEAAAAPAAQAAQABAAEAAAAPAAMAAQABAAEAAAAPAAIAAQABAAAAAAAOAAgAAQABAAIAAAAOAAcAAQABAAEAAAAOAAYAAQABAAEAAAAOAAUAAQABAAEAAAAOAAQAAQABAAEAAAAOAAMAAQABAAEAAAAOAAIAAQABAAAAAAANAAgAAQABAAIAAAANAAcAAQABAAEAAAANAAYAAQABAAEAAAANAAUAAQABAAEAAAANAAQAAQABAAEAAAANAAMAAQABAAEAAAANAAIAAQABAAAAAAAMAAgAAQABAAIAAAAMAAcAAQABAAEAAAAMAAYAAQABAAEAAAAMAAUAAQABAAEAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQABAAAAAAALAAgAAQABAAEAAAALAAcAAQABAAEAAAALAAYAAQABAAEAAAALAAUAAQABAAEAAAALAAQAAQABAAEAAAALAAMAAQABAAEAAAALAAIAAQABAAAAAAAKAAgAAQABAAEAAAAKAAcAAQABAAEAAAAKAAYAAQABAAEAAAAKAAUAAQABAAEAAAAKAAQAAQABAAEAAAAKAAMAAQABAAEAAAAKAAIAAQABAAAAAAAJAAgAAQABAAEAAAAJAAcAAQABAAEAAAAJAAYAAQABAAEAAAAJAAUAAQABAAEAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAAAAAAIAAYAAQABAAEAAAAIAAUAAQABAAEAAAAIAAQAAQABAAEAAAAHAAYAAQAAAAEAAAAHAAUAAQAAAAEAAAAHAAQAAQAAAAEAAAAEAAYAAQADAAEAAAAEAAUAAQADAAEAAAAIAAMAAQABAAEAAAAIAAIAAQABAAAAAAAHAAMAAQAAAAEAAAAHAAIAAQABAAAAAAAgAAMAAQABAAEAAAAIAAgAAQABAAEAAAAIAAcAAQABAAEAAAAHAAgAAQABAAIAAAAHAAcAAQAAAAEAAAAGAAgAAQABAAMAAAAFAAgAAQABAAMAAAAEAAgAAQAAAAIAAAAEAAcAAQADAAEAAAAGAAIAAQABAAMAAAAFAAIAAQABAAIAAAAEAAQAAQADAAEAAAAEAAMAAQADAAEAAAAEAAIAAQABAAEAAAAVAP//AQACAAIAAAAVAP7/AQACAAEAAAAVAP3/AQADAAEAAAAVAPz/AQACAAAAAAAUAP//AQABAAIAAAAUAP7/AQABAAAAAAAUAPz/AQABAAMAAAATAP//AQABAAIAAAATAP7/AQABAAAAAAATAPz/AQABAAMAAAASAP//AQABAAIAAAASAP7/AQABAAAAAAASAPz/AQABAAMAAAARAP//AQABAAIAAAARAP7/AQABAAEAAAARAP3/AQACAAEAAAARAPz/AQABAAAAAAAQAP//AQABAAIAAAAQAP7/AQABAAEAAAAQAP3/AQABAAEAAAAQAPz/AQABAAAAAAAPAP//AQABAAIAAAAPAP7/AQABAAEAAAAPAP3/AQABAAEAAAAPAPz/AQABAAAAAAAOAP//AQAAAAIAAAAOAP7/AQAAAAEAAAAOAP3/AQAAAAEAAAAOAPz/AQAAAAAAAAAfAP//AQACAAIAAAAfAP7/AQACAAEAAAAfAP3/AQACAAEAAAAfAPz/AQACAAAAAAAeAP//AQABAAIAAAAeAP7/AQABAAEAAAAeAP3/AQABAAEAAAAeAPz/AQABAAAAAAAdAP//AQABAAIAAAAdAP7/AQABAAEAAAAdAP3/AQABAAEAAAAdAPz/AQABAAAAAAAcAP//AQABAAIAAAAcAP7/AQABAAEAAAAcAP3/AQABAAEAAAAcAPz/AQABAAAAAAAbAP//AQAAAAIAAAAbAP7/AQAAAAEAAAAbAP3/AQAAAAEAAAAbAPz/AQAAAAAAAAALAAsAAQACAAIAAAALAAoAAQACAAEAAAALAAkAAQACAAEAAAAKAAsAAQABAAIAAAAKAAoAAQABAAEAAAAKAAkAAQABAAEAAAAJAAsAAQABAAIAAAAJAAoAAQABAAEAAAAJAAkAAQABAAEAAAAIAAsAAQAAAAIAAAAIAAoAAQAAAAEAAAAIAAkAAQAAAAEAAAAFAAEAAQACAAEAAAAFAAAAAQACAAEAAAAFAP//AQACAAAAAAAEAAEAAQABAAEAAAAEAAAAAQABAAEAAAAEAP//AQABAAAAAAADAAIAAQAAAAIAAAADAAEAAQAAAAEAAAADAAAAAQAAAAEAAAADAP//AQAAAAAAAAA=") tile_set = ExtResource("3_0yw4f") [node name="Paths" type="TileMapLayer" parent="TileMapLayers" unique_id=2017548496] -tile_map_data = PackedByteArray("AAAeAAUAAQALAAEAAAAdAAUAAQAGAAEAAAAcAAUAAQAGAAMAAAAbAAUAAQAGAAMAAAAaAAUAAQAGAAMAAAAZAAUAAQAGAAMAAAAYAAUAAQAGAAMAAAAXAAUAAQAGAAMAAAAWAAUAAQAGAAMAAAAVAAUAAQAGAAMAAAAUAAUAAQAGAAMAAAATAAUAAQAGAAMAAAASAAUAAQAGAAMAAAARAAUAAQAGAAMAAAAQAAUAAQAGAAMAAAAPAAUAAQAGAAMAAAAOAAUAAQAGAAMAAAANAAUAAQAGAAMAAAAMAAUAAQAGAAMAAAALAAUAAQAGAAMAAAAKAAUAAQAGAAMAAAAJAAUAAQAFAAMAAAAfAAYAAQAHAAIAAAAfAAUAAQAHAAEAAAAfAAQAAQAHAAAAAAAeAAYAAQAGAAIAAAAeAAQAAQAGAAAAAAAdAAYAAQAFAAIAAAAdAAQAAQAFAAAAAAA=") +tile_map_data = PackedByteArray("AAAeAAUAAQALAAEAAAAdAAUAAQAGAAEAAAAcAAUAAQAGAAMAAAAbAAUAAQAGAAMAAAAaAAUAAQAGAAMAAAAZAAUAAQAGAAMAAAAYAAUAAQAGAAMAAAAXAAUAAQAGAAMAAAAWAAUAAQAGAAMAAAAVAAUAAQAGAAMAAAAUAAUAAQAGAAMAAAATAAUAAQAGAAMAAAASAAUAAQAGAAMAAAARAAUAAQAGAAMAAAAQAAUAAQAGAAMAAAAPAAUAAQAGAAMAAAAOAAUAAQAGAAMAAAANAAUAAQAGAAMAAAAMAAUAAQAGAAMAAAALAAUAAQAGAAMAAAAKAAUAAQAGAAMAAAAJAAUAAQAFAAMAAAAfAAYAAQAHAAIAAAAfAAUAAQAHAAEAAAAfAAQAAQAHAAAAAAAeAAYAAQAGAAIAAAAeAAQAAQAGAAAAAAAdAAYAAQAFAAIAAAAdAAQAAQAFAAAAAAATAP3/AQAIAAEAAAATAPz/AQAIAAAAAAATAP7/AQAIAAIAAAA=") tile_set = ExtResource("3_0yw4f") [node name="Fences" type="TileMapLayer" parent="TileMapLayers" unique_id=1630992728] tile_set = ExtResource("4_ag7vv") [node name="BridgeShadow" type="TileMapLayer" parent="TileMapLayers" unique_id=672619778] +tile_map_data = PackedByteArray("AAAaAP//AwACAAMAAAAZAP//AwACAAMAAAAYAP//AwACAAMAAAAXAP//AwACAAMAAAAWAP//AwACAAMAAAALAPz/AwACAAMAAAAMAPz/AwACAAMAAAANAPz/AwACAAMAAAAQAPn/AwACAAMAAAAPAPn/AwACAAMAAAAKAPn/AwACAAMAAAALAPn/AwACAAMAAAAHAPn/AwACAAMAAAAIAPn/AwACAAMAAAASAPj/AwACAAMAAAA=") tile_set = ExtResource("5_jj505") +metadata/_edit_lock_ = true [node name="Bridges" type="TileMapLayer" parent="TileMapLayers" unique_id=1986468518] +tile_map_data = PackedByteArray("AAASAAIAAwAAAAMAAAASAAEAAwAAAAIAAAASAAAAAwAAAAIAAAASAP//AwAAAAEAAAAZAAsAAwAAAAMAAAAZAAoAAwAAAAIAAAAZAAkAAwAAAAIAAAAZAAgAAwAAAAEAAAAbAP//AwACAAAAAAAaAP//AwABAAAAAAAZAP//AwABAAAAAAAYAP//AwABAAAAAAAXAP//AwABAAAAAAAWAP//AwABAAAAAAAVAP//AwAAAAAAAAAKAA0AAwAAAAMAAAAKAAwAAwAAAAIAAAAKAAsAAwAAAAEAAAA=") tile_set = ExtResource("5_jj505") +metadata/height = 0 [node name="CliffShadows" type="TileMapLayer" parent="TileMapLayers" unique_id=1831008475] +tile_map_data = PackedByteArray("AAAHAAAAAAAAAAAAAAAIAP//AAAAAAAAAAAIAAAAAAAAAAAAAAAJAPz/AAAAAAAAAAAJAP3/AAAAAAAAAAAJAP7/AAAAAAAAAAAJAAAAAAAAAAAAAAAKAPz/AAAAAAAAAAAKAP3/AAAAAAAAAAAKAP7/AAAAAAAAAAAKAP//AAAAAAAAAAAKAAAAAAAAAAAAAAAOAPz/AAAAAAAAAAAOAP3/AAAAAAAAAAAOAP7/AAAAAAAAAAAPAPz/AAAAAAAAAAAQAPz/AAAAAAAAAAAQAP3/AAAAAAAAAAAQAP7/AAAAAAAAAAAcAAEAAAAAAAAAAAAcAAIAAAAAAAAAAAAcAAMAAAAAAAAAAAAdAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAEAAAAAAAAAAAAeAAIAAAAAAAAAAAAeAAMAAAAAAAAAAAAPAP7/AAAAAAAAAAAdAAMAAAAAAAAAAAAIAPj/AAAAAAAAAAAIAPn/AAAAAAAAAAAIAPz/AAAAAAAAAAAJAPj/AAAAAAAAAAAJAPn/AAAAAAAAAAAKAPj/AAAAAAAAAAAKAPn/AAAAAAAAAAACAPf/AAAAAAAAAAACAPj/AAAAAAAAAAACAPn/AAAAAAAAAAACAPr/AAAAAAAAAAACAPv/AAAAAAAAAAACAPz/AAAAAAAAAAACAP3/AAAAAAAAAAACAP7/AAAAAAAAAAADAPf/AAAAAAAAAAADAPr/AAAAAAAAAAADAPv/AAAAAAAAAAADAP//AAAAAAAAAAAEAPf/AAAAAAAAAAAEAPn/AAAAAAAAAAAEAPz/AAAAAAAAAAAEAP3/AAAAAAAAAAAEAP//AAAAAAAAAAAFAPf/AAAAAAAAAAAFAPn/AAAAAAAAAAAFAPz/AAAAAAAAAAAFAP7/AAAAAAAAAAAFAP//AAAAAAAAAAAGAPf/AAAAAAAAAAAGAPj/AAAAAAAAAAAGAPn/AAAAAAAAAAAGAPz/AAAAAAAAAAAMAPn/AAAAAAAAAAANAPn/AAAAAAAAAAAOAPn/AAAAAAAAAAARAPj/AAAAAAAAAAARAPn/AAAAAAAAAAARAPr/AAAAAAAAAAATAPj/AAAAAAAAAAA=") tile_set = ExtResource("6_8dhto") +metadata/_edit_lock_ = true [node name="Cliffs" type="TileMapLayer" parent="TileMapLayers" unique_id=1942530617] -tile_set = ExtResource("7_y5fl1") +tile_map_data = PackedByteArray("AAAKAP//BAACAAIAAAAKAP7/BAACAAEAAAAKAP3/BAACAAEAAAAKAPz/BAACAAEAAAAKAPv/BAACAAAAAQAJAP//BAABAAIAAAAJAP7/BAABAAEAAAAJAP3/BAAAAAEAAAAJAPz/BAAAAAEAAAAJAPv/BAABAAAAAQAIAP//BAABAAIAAAAIAP7/BAAAAAAAAAAHAP//BAAAAAQAAAAQAP3/BAACAAIAAAAQAPz/BAACAAEAAAAQAPv/BAACAAAAAAAPAP3/BAABAAIAAQAPAPz/BAABAAEAAAAPAPv/BAABAAAAAAAOAP3/BAAAAAIAAAAOAPz/BAAAAAEAAAAOAPv/BAAAAAAAAQAPAP7/BAADAAcAAAAeAAIABAACAAIAAAAeAAEABAACAAEAAAAeAAAABAACAAEAAAAeAP//BAACAAAAAAAdAAIABAABAAIAAQAdAAEABAABAAEAAAAdAAAABAABAAEAAAAdAP//BAAAAAAAAAAcAAIABAAAAAIAAAAcAAEABAAAAAEAAAAcAAAABAAAAAAAAAAdAAMABAABAAcAAAAKAPj/BAACAAIAAQAKAPf/BAACAAAAAAAJAPj/BAABAAIAAQAJAPf/BAABAAAAAAAIAPj/BAAAAAIAAQAIAPf/BAAAAAAAAAAIAPv/BAAAAAQAAAAGAPj/BAACAAIAAQAFAP7/BAACAAIAAQAFAP3/BAACAAAAAAAFAPv/BAABAAQAAAAEAP7/BAABAAIAAQAEAP3/BAABAAEAAAAEAPz/BAACAAEAAAAEAPv/BAABAAAAAAAEAPj/BAABAAIAAAAEAPf/BAABAAEAAAAEAPb/BAABAAAAAAADAP7/BAAAAAIAAQADAP3/BAABAAEAAAADAPz/BAABAAEAAAADAPv/BAABAAEAAAADAPr/BAACAAEAAAADAPn/BAACAAEAAAADAPj/BAABAAEAAAADAPf/BAABAAEAAAADAPb/BAABAAAAAAACAP3/BAAAAAIAAAACAPz/BAAAAAEAAAACAPv/BAAAAAEAAAACAPr/BAAAAAEAAAACAPn/BAAAAAEAAAACAPj/BAAAAAEAAAACAPf/BAAAAAEAAAACAPb/BAAAAAAAAAAGAPv/BAACAAQAAAAOAPj/BAACAAQAAQANAPj/BAABAAQAAAAMAPj/BAAAAAQAAQARAPn/BAADAAIAAAARAPj/BAADAAEAAQARAPf/BAADAAAAAQAGAPf/BAACAAEAAAAGAPb/BAACAAAAAAAFAPj/BAABAAIAAAAFAPf/BAABAAEAAAAFAPb/BAABAAAAAAATAPf/BAADAAQAAQADAP//BAAAAAcAAAAEAP//BAABAAcAAAAFAP//BAACAAcAAAA=") +tile_set = ExtResource("10_jj505") + +[node name="Bridges_Level1" type="TileMapLayer" parent="TileMapLayers" unique_id=1340428238] +tile_map_data = PackedByteArray("AAAKAPv/AwAAAAAAAAALAPv/AwABAAAAAAAMAPv/AwABAAAAAAANAPv/AwABAAAAAAAOAPv/AwACAAAAAAAJAPv/AwAAAAMAAAAJAPr/AwAAAAIAAAAJAPn/AwAAAAIAAAAJAPj/AwAAAAEAAAARAPj/AwACAAAAAAAQAPj/AwABAAAAAAAPAPj/AwABAAAAAAAOAPj/AwAAAAAAAAAKAPj/AwABAAAAAAALAPj/AwABAAAAAAAMAPj/AwACAAAAAAAGAPj/AwAAAAAAAAAHAPj/AwABAAAAAAAIAPj/AwABAAAAAAATAPf/AwACAAAAAAASAPf/AwABAAAAAAARAPf/AwAAAAAAAAA=") +tile_set = ExtResource("5_jj505") +metadata/height = 1 [node name="Void" type="TileMapLayer" parent="TileMapLayers" unique_id=2125320263] texture_filter = 1 @@ -81,6 +100,7 @@ player_name = "StoryWeaver" sprite_frames = ExtResource("13_ag7vv") [node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=2102827971] +limit_enabled = false limit_left = 128 limit_top = -128 limit_right = 2240 diff --git a/scenes/tileomatic.gd b/scenes/tileomatic.gd new file mode 100644 index 0000000000..d726f2f24f --- /dev/null +++ b/scenes/tileomatic.gd @@ -0,0 +1,171 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +extends Node + +enum WaterAlternatives { + UNSET = -1, + NORMAL = 0, + WALKABLE = 1, + TOP_WALKABLE = 2, +} +enum FillMode { + WHEN_EXPOSED, + WHEN_NEIGHBOURS_EXPOSED, +} + +const WATER_SOURCE_ID := 0 +const WATER_TILE := Vector2i(0, 0) + +const FOAM_SOURCE_ID := 2 +const FOAM_TILE := Vector2i(0, 0) + +const SHADOWS_SOURCE_ID = 0 +const SHADOWS_TILE := Vector2i(0, 0) + +const BRIDGES_SOURCE_ID = 3 + +@export var water: TileMapLayer +@export var foam: TileMapLayer +@export var floors: Array[TileMapLayer] + +# TODO: array of pairs +@export var bridge_shadows: TileMapLayer +@export var bridges: Array[TileMapLayer] + +# TODO: array of pairs +@export var elevation_shadows: TileMapLayer +@export var elevation: TileMapLayer + +@export_tool_button("Update") var update: Callable = _update + + +func _non_water_layers() -> Array[TileMapLayer]: + var xs := floors.duplicate() + xs.append(elevation) + return xs + + +func _update() -> void: + _toggle(water, _non_water_layers(), [], FillMode.WHEN_EXPOSED, WATER_SOURCE_ID, WATER_TILE) + _cliff_o_matic() + + _toggle( + foam, _non_water_layers(), [], FillMode.WHEN_NEIGHBOURS_EXPOSED, FOAM_SOURCE_ID, FOAM_TILE + ) + + _toggle( + elevation_shadows, + [elevation], + [Vector2i(0, 7), Vector2i(1, 7), Vector2i(2, 7), Vector2i(3, 7)], + FillMode.WHEN_NEIGHBOURS_EXPOSED, + SHADOWS_SOURCE_ID, + SHADOWS_TILE + ) + + _bridge_o_matic() + + if get_tree().edited_scene_root == owner: + Engine.get_singleton("EditorInterface").mark_scene_as_unsaved() + + +func _get_layer_offset(layer: TileMapLayer) -> Vector2i: + var default := 1 if layer == elevation else 0 + return Vector2i(0, 1) * (layer.get_meta(&"height", default) as int) + + +# Toggle tiles in [param lower] based on the presence or absence of tiles in +# [param upper_layers], taking into account the offset for each of those +# according to _get_layer_offset(). +func _toggle( + lower: TileMapLayer, + upper_layers: Array[TileMapLayer], + ignore_upper_tiles: Array[Vector2i], + fill_mode: FillMode, + source_id: int, + atlas_coords: Vector2i, + alternative_tile: int = 0 +) -> void: + var box := lower.get_used_rect() + var upper_cells: Dictionary[Vector2i, bool] + for layer: TileMapLayer in upper_layers: + var offset := _get_layer_offset(layer) + for used_cell: Vector2i in layer.get_used_cells(): + if not layer.get_cell_atlas_coords(used_cell) in ignore_upper_tiles: + upper_cells[used_cell + offset] = true + + box = box.merge(layer.get_used_rect().grow(2)) + + for x: int in range(box.position.x, box.end.x): + for y: int in range(box.position.y, box.end.y): + var coords := Vector2i(x, y) + var covered := upper_cells.has(coords) + var neighbours_covered := ( + upper_cells.has(coords + Vector2i.UP) + and upper_cells.has(coords + Vector2i.DOWN) + and upper_cells.has(coords + Vector2i.LEFT) + and upper_cells.has(coords + Vector2i.RIGHT) + ) + if ( + (fill_mode == FillMode.WHEN_EXPOSED and not covered) + or ( + fill_mode == FillMode.WHEN_NEIGHBOURS_EXPOSED + and covered + and not neighbours_covered + ) + ): + lower.set_cell(coords, source_id, atlas_coords, alternative_tile) + else: + lower.erase_cell(coords) + + +func _cliff_o_matic() -> void: + for coords: Vector2i in elevation.get_used_cells(): + # Make water behind clifftops walkable + if water.get_cell_source_id(coords) != -1: + water.set_cell(coords, WATER_SOURCE_ID, WATER_TILE, WaterAlternatives.WALKABLE) + + # Make cliffs above stairs walkable + if elevation.get_cell_atlas_coords(coords).y == 7: + var up := coords + Vector2i.UP + elevation.set_cell( + up, elevation.get_cell_source_id(up), elevation.get_cell_atlas_coords(up), 1 + ) + + +# Paint shadows below bridges. +func _bridge_o_matic() -> void: + bridge_shadows.clear() + + for b: TileMapLayer in bridges: + var offset := _get_layer_offset(b) + for coords: Vector2i in b.get_used_cells(): + var bridge_atlas_coords := b.get_cell_atlas_coords(coords) + var water_alt := WaterAlternatives.UNSET + var elevation_alt := 0 + match bridge_atlas_coords: + Vector2i(0, 0): # Horizontal left anchor + elevation_alt = 1 + Vector2i(1, 0): # Horizontal bridge middle segment + bridge_shadows.set_cell(coords + offset, BRIDGES_SOURCE_ID, Vector2i(2, 3)) + water_alt = WaterAlternatives.WALKABLE + elevation_alt = 1 + Vector2i(2, 0): # Horizontal right anchor + elevation_alt = 1 + Vector2i(0, 1): # Vertical bridge top + elevation_alt = 1 + Vector2i(0, 2): # Vertical bridge middle segment + water_alt = WaterAlternatives.WALKABLE + elevation_alt = 1 + Vector2i(0, 3): # Bottom of vertical bridge + water_alt = WaterAlternatives.TOP_WALKABLE + # (TODO: and how about pontoons in other directions?!) + elevation_alt = 1 + + if water.get_cell_source_id(coords) != -1 and water_alt != WaterAlternatives.UNSET: + water.set_cell(coords, WATER_SOURCE_ID, WATER_TILE, water_alt) + + if elevation.get_cell_alternative_tile(coords) == 0 and elevation_alt != 0: + var source_id := elevation.get_cell_source_id(coords) + var atlas_coords := elevation.get_cell_atlas_coords(coords) + elevation.set_cell(coords, source_id, atlas_coords, elevation_alt) diff --git a/scenes/tileomatic.gd.uid b/scenes/tileomatic.gd.uid new file mode 100644 index 0000000000..387ce9a3bd --- /dev/null +++ b/scenes/tileomatic.gd.uid @@ -0,0 +1 @@ +uid://dd58aty1bmx1g diff --git a/tiles/elevation_2.tres b/tiles/elevation_2.tres index 38588d2818..37f4e1570c 100644 --- a/tiles/elevation_2.tres +++ b/tiles/elevation_2.tres @@ -44,6 +44,7 @@ polygon = PackedVector2Array(-32, -0.385544, -26.6025, -16.9639, -19.1244, -25.2 [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_yc5yt"] texture = ExtResource("1_hkim0") texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 2 0:0/0 = 0 0:0/0/y_sort_origin = 10 0:0/0/terrain_set = 0 @@ -53,6 +54,17 @@ texture_region_size = Vector2i(64, 64) 0:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) 0:0/0/terrains_peering_bit/right_side = 0 0:0/0/terrains_peering_bit/bottom_side = 0 +0:0/1 = 1 +0:0/1/modulate = Color(1, 0, 0, 1) +0:0/1/y_sort_origin = 10 +0:0/1/terrain_set = 0 +0:0/1/terrain = 0 +0:0/1/probability = 0.0 +0:0/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_yc5yt") +0:0/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +0:0/1/terrains_peering_bit/right_side = 0 +0:0/1/terrains_peering_bit/bottom_side = 0 +1:0/next_alternative_id = 2 1:0/0 = 0 1:0/0/y_sort_origin = 10 1:0/0/terrain_set = 0 @@ -63,6 +75,18 @@ texture_region_size = Vector2i(64, 64) 1:0/0/terrains_peering_bit/right_side = 0 1:0/0/terrains_peering_bit/bottom_side = 0 1:0/0/terrains_peering_bit/left_side = 0 +1:0/1 = 1 +1:0/1/modulate = Color(1, 0, 0, 1) +1:0/1/y_sort_origin = 10 +1:0/1/terrain_set = 0 +1:0/1/terrain = 0 +1:0/1/probability = 0.0 +1:0/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_l50s2") +1:0/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +1:0/1/terrains_peering_bit/right_side = 0 +1:0/1/terrains_peering_bit/bottom_side = 0 +1:0/1/terrains_peering_bit/left_side = 0 +2:0/next_alternative_id = 2 2:0/0 = 0 2:0/0/y_sort_origin = 10 2:0/0/terrain_set = 0 @@ -72,6 +96,17 @@ texture_region_size = Vector2i(64, 64) 2:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) 2:0/0/terrains_peering_bit/bottom_side = 0 2:0/0/terrains_peering_bit/left_side = 0 +2:0/1 = 1 +2:0/1/modulate = Color(1, 0, 0, 1) +2:0/1/y_sort_origin = 10 +2:0/1/terrain_set = 0 +2:0/1/terrain = 0 +2:0/1/probability = 0.0 +2:0/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_hqjx3") +2:0/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +2:0/1/terrains_peering_bit/bottom_side = 0 +2:0/1/terrains_peering_bit/left_side = 0 +3:0/next_alternative_id = 2 3:0/0 = 0 3:0/0/y_sort_origin = 10 3:0/0/terrain_set = 0 @@ -80,6 +115,16 @@ texture_region_size = Vector2i(64, 64) 3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, 0, -32, 32, -16, 32, 32, 24, 32, 24, -8, 0, -24, -24, -8, -24, 32, -32, 32) 3:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) 3:0/0/terrains_peering_bit/bottom_side = 0 +3:0/1 = 1 +3:0/1/modulate = Color(1, 0, 0, 1) +3:0/1/y_sort_origin = 10 +3:0/1/terrain_set = 0 +3:0/1/terrain = 0 +3:0/1/probability = 0.0 +3:0/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_rtvgy") +3:0/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +3:0/1/terrains_peering_bit/bottom_side = 0 +0:1/next_alternative_id = 2 0:1/0 = 0 0:1/0/y_sort_origin = 26 0:1/0/terrain_set = 0 @@ -90,6 +135,17 @@ texture_region_size = Vector2i(64, 64) 0:1/0/terrains_peering_bit/right_side = 0 0:1/0/terrains_peering_bit/bottom_side = 0 0:1/0/terrains_peering_bit/top_side = 0 +0:1/1 = 1 +0:1/1/modulate = Color(1, 0, 0, 1) +0:1/1/y_sort_origin = 26 +0:1/1/terrain_set = 0 +0:1/1/terrain = 0 +0:1/1/probability = 0.0 +0:1/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_jmclm") +0:1/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:1/1/terrains_peering_bit/right_side = 0 +0:1/1/terrains_peering_bit/bottom_side = 0 +0:1/1/terrains_peering_bit/top_side = 0 1:1/0 = 0 1:1/0/y_sort_origin = 26 1:1/0/terrain_set = 0 @@ -100,6 +156,7 @@ texture_region_size = Vector2i(64, 64) 1:1/0/terrains_peering_bit/bottom_side = 0 1:1/0/terrains_peering_bit/left_side = 0 1:1/0/terrains_peering_bit/top_side = 0 +2:1/next_alternative_id = 2 2:1/0 = 0 2:1/0/y_sort_origin = 26 2:1/0/terrain_set = 0 @@ -110,6 +167,17 @@ texture_region_size = Vector2i(64, 64) 2:1/0/terrains_peering_bit/bottom_side = 0 2:1/0/terrains_peering_bit/left_side = 0 2:1/0/terrains_peering_bit/top_side = 0 +2:1/1 = 1 +2:1/1/modulate = Color(1, 0, 0, 1) +2:1/1/y_sort_origin = 26 +2:1/1/terrain_set = 0 +2:1/1/terrain = 0 +2:1/1/probability = 0.0 +2:1/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_jmclm") +2:1/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:1/1/terrains_peering_bit/bottom_side = 0 +2:1/1/terrains_peering_bit/left_side = 0 +2:1/1/terrains_peering_bit/top_side = 0 3:1/next_alternative_id = 3 3:1/0 = 0 3:1/0/y_sort_origin = 26 @@ -122,7 +190,17 @@ texture_region_size = Vector2i(64, 64) 3:1/0/terrains_peering_bit/bottom_side = 0 3:1/0/terrains_peering_bit/top_side = 0 3:1/1 = 1 +3:1/1/modulate = Color(1, 0, 0, 1) +3:1/1/y_sort_origin = 26 +3:1/1/terrain_set = 0 +3:1/1/terrain = 0 +3:1/1/probability = 0.0 +3:1/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_jmclm") +3:1/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +3:1/1/terrains_peering_bit/bottom_side = 0 +3:1/1/terrains_peering_bit/top_side = 0 0:2/size_in_atlas = Vector2i(1, 2) +0:2/next_alternative_id = 2 0:2/0 = 0 0:2/0/texture_origin = Vector2i(0, -32) 0:2/0/terrain_set = 0 @@ -132,6 +210,16 @@ texture_region_size = Vector2i(64, 64) 0:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 96, -32, 96) 0:2/0/terrains_peering_bit/right_side = 0 0:2/0/terrains_peering_bit/top_side = 0 +0:2/1 = 1 +0:2/1/texture_origin = Vector2i(0, -32) +0:2/1/modulate = Color(1, 0, 0, 1) +0:2/1/terrain_set = 0 +0:2/1/terrain = 0 +0:2/1/probability = 0.0 +0:2/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_1srhd") +0:2/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 96, -32, 96) +0:2/1/terrains_peering_bit/right_side = 0 +0:2/1/terrains_peering_bit/top_side = 0 1:2/size_in_atlas = Vector2i(1, 2) 1:2/next_alternative_id = 2 1:2/0 = 0 @@ -146,7 +234,17 @@ texture_region_size = Vector2i(64, 64) 1:2/0/terrains_peering_bit/top_side = 0 1:2/1 = 1 1:2/1/texture_origin = Vector2i(0, -32) +1:2/1/modulate = Color(1, 0, 0, 1) +1:2/1/terrain_set = 0 +1:2/1/terrain = 0 +1:2/1/probability = 0.0 +1:2/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_6jiih") +1:2/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 96, -32, 96) +1:2/1/terrains_peering_bit/right_side = 0 +1:2/1/terrains_peering_bit/left_side = 0 +1:2/1/terrains_peering_bit/top_side = 0 2:2/size_in_atlas = Vector2i(1, 2) +2:2/next_alternative_id = 2 2:2/0 = 0 2:2/0/texture_origin = Vector2i(0, -32) 2:2/0/terrain_set = 0 @@ -156,7 +254,18 @@ texture_region_size = Vector2i(64, 64) 2:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 96, -32, 96) 2:2/0/terrains_peering_bit/left_side = 0 2:2/0/terrains_peering_bit/top_side = 0 +2:2/1 = 1 +2:2/1/texture_origin = Vector2i(0, -32) +2:2/1/modulate = Color(1, 0, 0, 1) +2:2/1/terrain_set = 0 +2:2/1/terrain = 0 +2:2/1/probability = 0.0 +2:2/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_qpeek") +2:2/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 96, -32, 96) +2:2/1/terrains_peering_bit/left_side = 0 +2:2/1/terrains_peering_bit/top_side = 0 3:2/size_in_atlas = Vector2i(1, 2) +3:2/next_alternative_id = 2 3:2/0 = 0 3:2/0/texture_origin = Vector2i(0, -32) 3:2/0/terrain_set = 0 @@ -165,7 +274,17 @@ texture_region_size = Vector2i(64, 64) 3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -24, -32, -24, 32, 24, 32, 24, -32, 32, -32, 32, 96, -32, 96) 3:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 96, -32, 96) 3:2/0/terrains_peering_bit/top_side = 0 +3:2/1 = 1 +3:2/1/texture_origin = Vector2i(0, -32) +3:2/1/modulate = Color(1, 0, 0, 1) +3:2/1/terrain_set = 0 +3:2/1/terrain = 0 +3:2/1/probability = 0.0 +3:2/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_qhdiu") +3:2/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 96, -32, 96) +3:2/1/terrains_peering_bit/top_side = 0 0:4/size_in_atlas = Vector2i(1, 2) +0:4/next_alternative_id = 2 0:4/0 = 0 0:4/0/texture_origin = Vector2i(0, -32) 0:4/0/y_sort_origin = 10 @@ -175,7 +294,18 @@ texture_region_size = Vector2i(64, 64) 0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-24, -24, 32, -32, 32, -24, -16, -16, -24, 32, 32, 32, 32, 96, -32, 96, -32, 32) 0:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 96, -32, 96) 0:4/0/terrains_peering_bit/right_side = 0 +0:4/1 = 1 +0:4/1/texture_origin = Vector2i(0, -32) +0:4/1/modulate = Color(1, 0, 0, 1) +0:4/1/y_sort_origin = 10 +0:4/1/terrain_set = 0 +0:4/1/terrain = 0 +0:4/1/probability = 0.0 +0:4/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_kbenk") +0:4/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 96, -32, 96) +0:4/1/terrains_peering_bit/right_side = 0 1:4/size_in_atlas = Vector2i(1, 2) +1:4/next_alternative_id = 2 1:4/0 = 0 1:4/0/texture_origin = Vector2i(0, -32) 1:4/0/y_sort_origin = 10 @@ -187,7 +317,19 @@ texture_region_size = Vector2i(64, 64) 1:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 96, -32, 96) 1:4/0/terrains_peering_bit/right_side = 0 1:4/0/terrains_peering_bit/left_side = 0 +1:4/1 = 1 +1:4/1/texture_origin = Vector2i(0, -32) +1:4/1/modulate = Color(1, 0, 0, 1) +1:4/1/y_sort_origin = 10 +1:4/1/terrain_set = 0 +1:4/1/terrain = 0 +1:4/1/probability = 0.0 +1:4/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_y1c8q") +1:4/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 96, -32, 96) +1:4/1/terrains_peering_bit/right_side = 0 +1:4/1/terrains_peering_bit/left_side = 0 2:4/size_in_atlas = Vector2i(1, 2) +2:4/next_alternative_id = 2 2:4/0 = 0 2:4/0/texture_origin = Vector2i(0, -32) 2:4/0/y_sort_origin = 10 @@ -197,7 +339,18 @@ texture_region_size = Vector2i(64, 64) 2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 24, -24, 32, 32, 32, 96, -32, 96, -32, 32, 24, 32, 16, -16, -32, -24) 2:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 96, -32, 96) 2:4/0/terrains_peering_bit/left_side = 0 +2:4/1 = 1 +2:4/1/texture_origin = Vector2i(0, -32) +2:4/1/modulate = Color(1, 0, 0, 1) +2:4/1/y_sort_origin = 10 +2:4/1/terrain_set = 0 +2:4/1/terrain = 0 +2:4/1/probability = 0.0 +2:4/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_em2qm") +2:4/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 96, -32, 96) +2:4/1/terrains_peering_bit/left_side = 0 3:4/size_in_atlas = Vector2i(1, 2) +3:4/next_alternative_id = 2 3:4/0 = 0 3:4/0/texture_origin = Vector2i(0, -32) 3:4/0/y_sort_origin = 10 @@ -206,6 +359,15 @@ texture_region_size = Vector2i(64, 64) 3:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_nwor3") 3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, 0, -32, 32, -16, 32, 96, -24, 32, 24, 32, 24, -8, 0, -24, -24, -8, -24, 32, 32, 96, -32, 96) 3:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 96, -32, 96) +3:4/1 = 1 +3:4/1/texture_origin = Vector2i(0, -32) +3:4/1/modulate = Color(1, 0, 0, 1) +3:4/1/y_sort_origin = 10 +3:4/1/terrain_set = 0 +3:4/1/terrain = 0 +3:4/1/probability = 0.0 +3:4/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_nwor3") +3:4/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 96, -32, 96) 0:7/0 = 0 1:7/0 = 0 2:7/0 = 0 diff --git a/tiles/water.tres b/tiles/water.tres index d1add2257a..38d6521dfe 100644 --- a/tiles/water.tres +++ b/tiles/water.tres @@ -9,8 +9,10 @@ texture_region_size = Vector2i(64, 64) 0:0/0 = 0 0:0/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) 0:0/2 = 2 +0:0/2/modulate = Color(1, 0.7745072, 0.9876825, 1) 0:0/2/physics_layer_2/polygon_0/points = PackedVector2Array(-32, 3.85675, 32, 4.40771, 32, 32, -32, 32) 0:0/1 = 1 +0:0/1/modulate = Color(1, 0.22745098, 1, 1) [resource] tile_size = Vector2i(64, 64) diff --git a/tools/elephant.gd b/tools/elephant.gd new file mode 100644 index 0000000000..2e6396f350 --- /dev/null +++ b/tools/elephant.gd @@ -0,0 +1,43 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 + +@tool +class_name Elephant +extends EditorScript + +const ELEVATION_TILESET_PATH = "res://tiles/elevation_2.tres" +const SOURCE_ID := 0 +const WALLS := 0 + + +func _run() -> void: + var tiles := load(ELEVATION_TILESET_PATH) as TileSet + var source := tiles.get_source(SOURCE_ID) as TileSetAtlasSource + for i: int in source.get_tiles_count(): + var coords := source.get_tile_id(i) + var tile_data := source.get_tile_data(coords, 0) + + # Don't create alts for stairs + if tile_data.get_collision_polygons_count(WALLS) == 0: + continue + + if not source.has_alternative_tile(coords, 1): + var alt_id := source.create_alternative_tile(coords, 1) + if alt_id != 1: + prints("oh no", coords, alt_id) + + var alt_tile_data := source.get_tile_data(coords, 1) + + # Duplicate all properties from the base tile as a baseline + for x in tile_data.get_property_list(): + alt_tile_data.set(x["name"], tile_data.get(x["name"])) + + # Remove wall collisions + alt_tile_data.set_collision_polygons_count(WALLS, 0) + + # Don't place it when drawing random tiles or terrains + alt_tile_data.probability = 0.0 + + alt_tile_data.modulate = Color.RED # TODO: remove this + + ResourceSaver.save(tiles) diff --git a/tools/elephant.gd.uid b/tools/elephant.gd.uid new file mode 100644 index 0000000000..ad2860883a --- /dev/null +++ b/tools/elephant.gd.uid @@ -0,0 +1 @@ +uid://byniul4wf1q4k