summaryrefslogtreecommitdiff
path: root/map
diff options
context:
space:
mode:
Diffstat (limited to 'map')
-rw-r--r--map/assets/door.wavbin0 -> 319744 bytes
-rw-r--r--map/assets/door.wav.import24
-rw-r--r--map/assets/tileset.krabin0 -> 50218 bytes
-rw-r--r--map/assets/tileset.kra~bin0 -> 50152 bytes
-rw-r--r--map/assets/tileset.pngbin0 -> 7290 bytes
-rw-r--r--map/assets/tileset.png.import34
-rw-r--r--map/assets/tileset.png~bin0 -> 7290 bytes
-rw-r--r--map/camera.gd22
-rw-r--r--map/camera.gd.uid1
-rw-r--r--map/camera.tscn7
-rw-r--r--map/map.gd27
-rw-r--r--map/map.gd.uid1
-rw-r--r--map/objects/door.gd15
-rw-r--r--map/objects/door.gd.uid1
-rw-r--r--map/objects/door.tscn25
-rw-r--r--map/objects/ledge.gd46
-rw-r--r--map/objects/ledge.gd.uid1
-rw-r--r--map/objects/ledge.tscn47
-rw-r--r--map/objects/out_door.tscn21
-rw-r--r--map/objects/stairs.gd11
-rw-r--r--map/objects/stairs.gd.uid1
-rw-r--r--map/objects/stairs.tscn23
-rw-r--r--map/route_01/route_01.gd1
-rw-r--r--map/route_01/route_01.gd.uid1
-rw-r--r--map/route_01/route_01.tscn58
-rw-r--r--map/tile_set.tres67
-rw-r--r--map/town_01/indoor_01.gd5
-rw-r--r--map/town_01/indoor_01.gd.uid1
-rw-r--r--map/town_01/indoor_01.tscn46
-rw-r--r--map/town_01/indoor_01_01.gd1
-rw-r--r--map/town_01/indoor_01_01.gd.uid1
-rw-r--r--map/town_01/indoor_01_01.tscn29
-rw-r--r--map/town_01/town_01.gd9
-rw-r--r--map/town_01/town_01.gd.uid1
-rw-r--r--map/town_01/town_01.tscn45
35 files changed, 572 insertions, 0 deletions
diff --git a/map/assets/door.wav b/map/assets/door.wav
new file mode 100644
index 0000000..7edbb89
--- /dev/null
+++ b/map/assets/door.wav
Binary files differ
diff --git a/map/assets/door.wav.import b/map/assets/door.wav.import
new file mode 100644
index 0000000..7082161
--- /dev/null
+++ b/map/assets/door.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://ubexb48lox15"
+path="res://.godot/imported/door.wav-95d290b294ea5557a0ada52d15331bf3.sample"
+
+[deps]
+
+source_file="res://map/assets/door.wav"
+dest_files=["res://.godot/imported/door.wav-95d290b294ea5557a0ada52d15331bf3.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=2
diff --git a/map/assets/tileset.kra b/map/assets/tileset.kra
new file mode 100644
index 0000000..7c922a6
--- /dev/null
+++ b/map/assets/tileset.kra
Binary files differ
diff --git a/map/assets/tileset.kra~ b/map/assets/tileset.kra~
new file mode 100644
index 0000000..8301194
--- /dev/null
+++ b/map/assets/tileset.kra~
Binary files differ
diff --git a/map/assets/tileset.png b/map/assets/tileset.png
new file mode 100644
index 0000000..73a5b02
--- /dev/null
+++ b/map/assets/tileset.png
Binary files differ
diff --git a/map/assets/tileset.png.import b/map/assets/tileset.png.import
new file mode 100644
index 0000000..2f4bf1b
--- /dev/null
+++ b/map/assets/tileset.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dv8lud5b0tu3h"
+path="res://.godot/imported/tileset.png-7764e824f196d5768d81debc8848e28d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://map/assets/tileset.png"
+dest_files=["res://.godot/imported/tileset.png-7764e824f196d5768d81debc8848e28d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/map/assets/tileset.png~ b/map/assets/tileset.png~
new file mode 100644
index 0000000..73a5b02
--- /dev/null
+++ b/map/assets/tileset.png~
Binary files differ
diff --git a/map/camera.gd b/map/camera.gd
new file mode 100644
index 0000000..f433157
--- /dev/null
+++ b/map/camera.gd
@@ -0,0 +1,22 @@
+extends Camera2D
+
+
+@export var limit_tile_map: TileMapLayer
+
+
+func _ready() -> void:
+ if limit_tile_map:
+ var tile_size := limit_tile_map.tile_set.tile_size
+
+ limit_top = limit_tile_map.get_used_rect().position.y * tile_size.y
+ limit_bottom = limit_tile_map.get_used_rect().end.y * tile_size.y
+ limit_left = limit_tile_map.get_used_rect().position.x * tile_size.x
+ limit_right = limit_tile_map.get_used_rect().end.x * tile_size.x
+
+ var difference := Vector2i(get_viewport_rect().size) - limit_tile_map.get_used_rect().size * tile_size
+ if difference.x > 0:
+ limit_left -= int(difference.x * 0.5)
+ limit_right += int(difference.x * 0.5)
+ if difference.y > 0:
+ limit_top -= int(difference.x * 0.5)
+ limit_bottom += int(difference.x * 0.5)
diff --git a/map/camera.gd.uid b/map/camera.gd.uid
new file mode 100644
index 0000000..f32bcb2
--- /dev/null
+++ b/map/camera.gd.uid
@@ -0,0 +1 @@
+uid://duiryxvj3oht4
diff --git a/map/camera.tscn b/map/camera.tscn
new file mode 100644
index 0000000..487743e
--- /dev/null
+++ b/map/camera.tscn
@@ -0,0 +1,7 @@
+[gd_scene load_steps=2 format=3 uid="uid://11jdoqtp78ly"]
+
+[ext_resource type="Script" uid="uid://duiryxvj3oht4" path="res://map/camera.gd" id="1_fm8ba"]
+
+[node name="Camera" type="Camera2D"]
+enabled = false
+script = ExtResource("1_fm8ba")
diff --git a/map/map.gd b/map/map.gd
new file mode 100644
index 0000000..dfc2e51
--- /dev/null
+++ b/map/map.gd
@@ -0,0 +1,27 @@
+class_name Map
+extends Node2D
+
+
+@export var is_indoor := false
+
+@onready var player: Player = Game.world.player
+
+
+func _ready() -> void:
+ if is_indoor:
+ Game.set_indoor()
+ else:
+ Game.set_outdoor()
+
+ #if not has_node("Player"):
+ #add_child(load("res://player/player.tscn").instantiate())
+
+ var current_map_entry = get_node_or_null(NodePath(Game.current_map_entry))
+ if current_map_entry:
+ player.global_position = current_map_entry.global_position
+
+ if Game.current_direction:
+ player.current_direction = Game.current_direction
+
+ # re-set state to trigger enter again after setting position and direction
+ player.current_state = player.current_state
diff --git a/map/map.gd.uid b/map/map.gd.uid
new file mode 100644
index 0000000..112bd98
--- /dev/null
+++ b/map/map.gd.uid
@@ -0,0 +1 @@
+uid://brlsov7gjjcca
diff --git a/map/objects/door.gd b/map/objects/door.gd
new file mode 100644
index 0000000..20b0c65
--- /dev/null
+++ b/map/objects/door.gd
@@ -0,0 +1,15 @@
+class_name Door
+extends Node2D
+
+
+@export_file("*.tscn") var scene: String
+@export var map_entry: String
+
+
+func _on_body_entered(body: Node2D) -> void:
+ if body is Player:
+ Game.current_map_entry = map_entry
+ Sound.door.play()
+ await Game.fade_out()
+ Game.world.set_map(scene)
+ Game.fade_in()
diff --git a/map/objects/door.gd.uid b/map/objects/door.gd.uid
new file mode 100644
index 0000000..2ed2826
--- /dev/null
+++ b/map/objects/door.gd.uid
@@ -0,0 +1 @@
+uid://0xkcx8qk47gx
diff --git a/map/objects/door.tscn b/map/objects/door.tscn
new file mode 100644
index 0000000..dba01a0
--- /dev/null
+++ b/map/objects/door.tscn
@@ -0,0 +1,25 @@
+[gd_scene load_steps=5 format=3 uid="uid://bw2qihhy14bxr"]
+
+[ext_resource type="Script" uid="uid://0xkcx8qk47gx" path="res://map/objects/door.gd" id="1_84465"]
+[ext_resource type="Texture2D" uid="uid://dv8lud5b0tu3h" path="res://map/assets/tileset.png" id="1_i1plv"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_84465"]
+atlas = ExtResource("1_i1plv")
+region = Rect2(16, 64, 16, 16)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_84465"]
+size = Vector2(10, 8)
+
+[node name="Door" type="Area2D"]
+script = ExtResource("1_84465")
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+texture = SubResource("AtlasTexture_84465")
+centered = false
+offset = Vector2(-8, -8)
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(0, -1)
+shape = SubResource("RectangleShape2D_84465")
+
+[connection signal="body_entered" from="." to="." method="_on_body_entered"]
diff --git a/map/objects/ledge.gd b/map/objects/ledge.gd
new file mode 100644
index 0000000..755cd85
--- /dev/null
+++ b/map/objects/ledge.gd
@@ -0,0 +1,46 @@
+extends Area2D
+
+
+var is_jumping := false
+
+
+func _on_body_entered(body: Node2D) -> void:
+ if body is Player and not is_jumping:
+ print("??", is_jumping)
+ is_jumping = true
+
+ var grid_position := World.local_to_map(global_position)
+ var target_position := World.map_to_local(grid_position + Vector2i(0, 1))
+
+ var shadow = body.get_node("Shadow")
+ var shadow_offset = Vector2(-4,5)#shadow.position
+
+ var tween1 := create_tween().set_ease(Tween.EASE_IN_OUT).set_parallel()
+ tween1.tween_property(body, "position", body.position + Vector2(0, -3), 0.25)
+ tween1.tween_property(shadow, "position", shadow.position + Vector2(0, 3), 0.25)
+ await tween1.finished
+
+ var tween = create_tween().set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_QUAD).set_parallel()
+
+ tween.tween_property(
+ body,
+ "global_position",
+ target_position,
+ 1.0
+ )
+ tween.tween_property(
+ get_viewport().get_camera_2d(),
+ "global_position",
+ target_position,
+ 1.0
+ )
+
+ tween.tween_property(
+ shadow,
+ "global_position",
+ target_position + shadow_offset,
+ 1.0
+ )
+
+ await tween.finished
+ is_jumping = false
diff --git a/map/objects/ledge.gd.uid b/map/objects/ledge.gd.uid
new file mode 100644
index 0000000..9effc6b
--- /dev/null
+++ b/map/objects/ledge.gd.uid
@@ -0,0 +1 @@
+uid://xnlyw4tf65bk
diff --git a/map/objects/ledge.tscn b/map/objects/ledge.tscn
new file mode 100644
index 0000000..8183fde
--- /dev/null
+++ b/map/objects/ledge.tscn
@@ -0,0 +1,47 @@
+[gd_scene load_steps=7 format=3 uid="uid://bk7ff5g2pk0cp"]
+
+[ext_resource type="Script" uid="uid://xnlyw4tf65bk" path="res://map/objects/ledge.gd" id="1_nwiaq"]
+[ext_resource type="Texture2D" uid="uid://dv8lud5b0tu3h" path="res://map/assets/tileset.png" id="1_wrxto"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_nwiaq"]
+atlas = ExtResource("1_wrxto")
+region = Rect2(0, 16, 16, 16)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_jlg2s"]
+size = Vector2(16, 1.75)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_nc3l7"]
+size = Vector2(16, 0.5)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_nwiaq"]
+size = Vector2(1.125, 8)
+
+[node name="Ledge" type="Area2D"]
+collision_layer = 0
+script = ExtResource("1_nwiaq")
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+position = Vector2(0, -2)
+texture = SubResource("AtlasTexture_nwiaq")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(0, 0.875)
+shape = SubResource("RectangleShape2D_jlg2s")
+
+[node name="StaticBody2D" type="StaticBody2D" parent="."]
+collision_layer = 2
+collision_mask = 0
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"]
+position = Vector2(0, 7.75)
+shape = SubResource("RectangleShape2D_nc3l7")
+
+[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"]
+position = Vector2(-8, 4)
+shape = SubResource("RectangleShape2D_nwiaq")
+
+[node name="CollisionShape2D3" type="CollisionShape2D" parent="StaticBody2D"]
+position = Vector2(8, 4)
+shape = SubResource("RectangleShape2D_nwiaq")
+
+[connection signal="body_entered" from="." to="." method="_on_body_entered"]
diff --git a/map/objects/out_door.tscn b/map/objects/out_door.tscn
new file mode 100644
index 0000000..e74a75b
--- /dev/null
+++ b/map/objects/out_door.tscn
@@ -0,0 +1,21 @@
+[gd_scene load_steps=5 format=3 uid="uid://dw86phlo8int2"]
+
+[ext_resource type="PackedScene" uid="uid://bw2qihhy14bxr" path="res://map/objects/door.tscn" id="1_ssknr"]
+[ext_resource type="Texture2D" uid="uid://dv8lud5b0tu3h" path="res://map/assets/tileset.png" id="2_1ia0c"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_yms24"]
+atlas = ExtResource("2_1ia0c")
+region = Rect2(16, 64, 16, 16)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_ssknr"]
+size = Vector2(4, 4)
+
+[node name="DoorOut" instance=ExtResource("1_ssknr")]
+
+[node name="Sprite2D" parent="." index="0"]
+visible = false
+texture = SubResource("AtlasTexture_yms24")
+
+[node name="CollisionShape2D" parent="." index="1"]
+position = Vector2(0, 0)
+shape = SubResource("RectangleShape2D_ssknr")
diff --git a/map/objects/stairs.gd b/map/objects/stairs.gd
new file mode 100644
index 0000000..3ebaf80
--- /dev/null
+++ b/map/objects/stairs.gd
@@ -0,0 +1,11 @@
+extends Door
+
+
+@export var invert_direction := true
+
+
+func _on_body_entered(body: Node2D) -> void:
+ if body is Player:
+ await super._on_body_entered(body)
+ if invert_direction:
+ Game.current_direction *= -1
diff --git a/map/objects/stairs.gd.uid b/map/objects/stairs.gd.uid
new file mode 100644
index 0000000..273ebc0
--- /dev/null
+++ b/map/objects/stairs.gd.uid
@@ -0,0 +1 @@
+uid://cthaxa2q26ia2
diff --git a/map/objects/stairs.tscn b/map/objects/stairs.tscn
new file mode 100644
index 0000000..ba1530e
--- /dev/null
+++ b/map/objects/stairs.tscn
@@ -0,0 +1,23 @@
+[gd_scene load_steps=6 format=3 uid="uid://c3cuwuulkgpld"]
+
+[ext_resource type="PackedScene" uid="uid://bw2qihhy14bxr" path="res://map/objects/door.tscn" id="1_eo2eb"]
+[ext_resource type="Script" uid="uid://cthaxa2q26ia2" path="res://map/objects/stairs.gd" id="2_a67cu"]
+[ext_resource type="Texture2D" uid="uid://dv8lud5b0tu3h" path="res://map/assets/tileset.png" id="2_nnfkg"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_a67cu"]
+atlas = ExtResource("2_nnfkg")
+region = Rect2(144, 32, 16, 16)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_eo2eb"]
+size = Vector2(10, 14)
+
+[node name="Stairs" instance=ExtResource("1_eo2eb")]
+script = ExtResource("2_a67cu")
+invert_direction = true
+
+[node name="Sprite2D" parent="." index="0"]
+texture = SubResource("AtlasTexture_a67cu")
+
+[node name="CollisionShape2D" parent="." index="1"]
+position = Vector2(-2, 0)
+shape = SubResource("RectangleShape2D_eo2eb")
diff --git a/map/route_01/route_01.gd b/map/route_01/route_01.gd
new file mode 100644
index 0000000..69a05b9
--- /dev/null
+++ b/map/route_01/route_01.gd
@@ -0,0 +1 @@
+extends Map
diff --git a/map/route_01/route_01.gd.uid b/map/route_01/route_01.gd.uid
new file mode 100644
index 0000000..ea4883f
--- /dev/null
+++ b/map/route_01/route_01.gd.uid
@@ -0,0 +1 @@
+uid://jdqrghe6ypq5
diff --git a/map/route_01/route_01.tscn b/map/route_01/route_01.tscn
new file mode 100644
index 0000000..28b7a89
--- /dev/null
+++ b/map/route_01/route_01.tscn
@@ -0,0 +1,58 @@
+[gd_scene load_steps=4 format=4 uid="uid://b104n1uf55toi"]
+
+[ext_resource type="Script" uid="uid://jdqrghe6ypq5" path="res://map/route_01/route_01.gd" id="1_gug0w"]
+[ext_resource type="TileSet" uid="uid://bpu5rwxh7vin8" path="res://map/tile_set.tres" id="2_7wpvs"]
+[ext_resource type="PackedScene" uid="uid://bk7ff5g2pk0cp" path="res://map/objects/ledge.tscn" id="3_vokxd"]
+
+[node name="Route1" type="Node2D"]
+script = ExtResource("1_gug0w")
+
+[node name="TileMapLayer" type="TileMapLayer" parent="."]
+tile_map_data = PackedByteArray("AAAQABUAAAAAAAAAAAAQABQAAAAAAAAAAAAQABMAAAAAAAAAAAATABUAAAAAAAAAAAATABQAAAAAAAAAAAATABMAAAAAAAAAAAARABMAAAABAAAAAAARABQAAAABAAAAAAASABQAAAABAAAAAAASABUAAAABAAAAAAARABUAAAABAAAAAAASABMAAAABAAAAAAAPABMAAAAAAAAAAAAOABMAAAAAAAAAAAANABMAAAAAAAAAAAAMABMAAAAAAAAAAAALABMAAAAAAAAAAAAKABMAAAAAAAAAAAAJABMAAAAAAAAAAAAIABMAAAAAAAAAAAAUABMAAAAAAAAAAAAVABMAAAAAAAAAAAAWABMAAAAAAAAAAAAXABMAAAAAAAAAAAAYABMAAAAAAAAAAAAZABMAAAAAAAAAAAAZABIAAAAAAAAAAAAZABEAAAAAAAAAAAAZABAAAAAAAAAAAAAIABIAAAAAAAAAAAAIABEAAAAAAAAAAAAIABAAAAAAAAAAAAAIAA8AAAAAAAAAAAAZAA8AAAAAAAAAAAAJAA8AAAABAAAAAAAKAA8AAAABAAAAAAALAA8AAAABAAAAAAAMAA8AAAABAAAAAAANABAAAAABAAAAAAAOABAAAAABAAAAAAAPABAAAAABAAAAAAAQABAAAAABAAAAAAARABAAAAABAAAAAAASABAAAAABAAAAAAATABAAAAABAAAAAAATAA8AAAABAAAAAAAUAA8AAAABAAAAAAAVAA8AAAABAAAAAAAWAA8AAAABAAAAAAAXAA8AAAABAAAAAAAYAA8AAAABAAAAAAAYABAAAAABAAAAAAAYABEAAAABAAAAAAAYABIAAAABAAAAAAAXABIAAAABAAAAAAAWABIAAAABAAAAAAAVABIAAAABAAAAAAAUABIAAAABAAAAAAATABIAAAABAAAAAAASABIAAAABAAAAAAARABIAAAABAAAAAAAQABIAAAABAAAAAAAPABIAAAABAAAAAAAOABIAAAABAAAAAAANABIAAAABAAAAAAAMABIAAAABAAAAAAALABIAAAABAAAAAAAKABIAAAABAAAAAAAJABIAAAABAAAAAAAJABEAAAABAAAAAAAJABAAAAABAAAAAAAKABAAAAABAAAAAAALABAAAAABAAAAAAAMABAAAAABAAAAAAAQABEAAAABAAAAAAARABEAAAABAAAAAAASABEAAAABAAAAAAATABEAAAABAAAAAAAUABEAAAABAAAAAAAVABEAAAABAAAAAAAWABEAAAABAAAAAAAXABEAAAABAAAAAAAXABAAAAABAAAAAAAWABAAAAABAAAAAAAVABAAAAABAAAAAAAUABAAAAABAAAAAAASAA8AAAABAAAAAAARAA8AAAABAAAAAAAQAA8AAAABAAAAAAAPAA8AAAABAAAAAAAOAA8AAAABAAAAAAANAA8AAAABAAAAAAALABEAAAABAAAAAAAKABEAAAABAAAAAAAMABEAAAABAAAAAAANABEAAAABAAAAAAAOABEAAAABAAAAAAAPABEAAAABAAAAAAAIABQAAAABAAAAAAAIABUAAAABAAAAAAAJABQAAAABAAAAAAAJABUAAAABAAAAAAAKABQAAAABAAAAAAAKABUAAAABAAAAAAALABQAAAABAAAAAAALABUAAAABAAAAAAAMABQAAAABAAAAAAAMABUAAAABAAAAAAANABQAAAABAAAAAAANABUAAAABAAAAAAAOABQAAAABAAAAAAAOABUAAAABAAAAAAAPABQAAAABAAAAAAAPABUAAAABAAAAAAAUABQAAAABAAAAAAAUABUAAAABAAAAAAAVABQAAAABAAAAAAAVABUAAAABAAAAAAAWABQAAAABAAAAAAAWABUAAAABAAAAAAAXABQAAAABAAAAAAAXABUAAAABAAAAAAAYABQAAAABAAAAAAAYABUAAAABAAAAAAAZABQAAAABAAAAAAAZABUAAAABAAAAAAA=")
+tile_set = ExtResource("2_7wpvs")
+
+[node name="TileMapLayer2" type="TileMapLayer" parent="."]
+tile_map_data = PackedByteArray("AAARABMAAAADAAAAAAASABMAAAADAAAAAAASABQAAAADAAAAAAASABUAAAADAAAAAAARABUAAAADAAAAAAARABQAAAADAAAAAAARABIAAAADAAAAAAASABIAAAADAAAAAAARABEAAAADAAAAAAASABEAAAADAAAAAAAPABEAAAADAAAAAAAPABIAAAADAAAAAAAOABIAAAADAAAAAAANABIAAAADAAAAAAAMABIAAAADAAAAAAALABIAAAADAAAAAAAKABIAAAADAAAAAAAJABIAAAADAAAAAAAJABEAAAADAAAAAAAJABAAAAADAAAAAAAKABAAAAADAAAAAAALABAAAAADAAAAAAAMABAAAAADAAAAAAANABAAAAADAAAAAAAOABAAAAADAAAAAAAPABAAAAADAAAAAAAOABEAAAADAAAAAAANABEAAAADAAAAAAAMABEAAAADAAAAAAALABEAAAADAAAAAAAKABEAAAADAAAAAAATABAAAAADAAAAAAATABEAAAADAAAAAAATABIAAAADAAAAAAAUABIAAAADAAAAAAAVABIAAAADAAAAAAAWABIAAAADAAAAAAAXABIAAAADAAAAAAAYABIAAAADAAAAAAAYABEAAAADAAAAAAAYABAAAAADAAAAAAAXABAAAAADAAAAAAAWABAAAAADAAAAAAAVABAAAAADAAAAAAAUABAAAAADAAAAAAAUABEAAAADAAAAAAAVABEAAAADAAAAAAAWABEAAAADAAAAAAAXABEAAAADAAAAAAAJAA8AAAADAAAAAAAKAA8AAAADAAAAAAALAA8AAAADAAAAAAAMAA8AAAADAAAAAAANAA8AAAADAAAAAAAYAA8AAAADAAAAAAAXAA8AAAADAAAAAAAWAA8AAAADAAAAAAAVAA8AAAADAAAAAAAUAA8AAAADAAAAAAATAA8AAAADAAAAAAA=")
+tile_set = ExtResource("2_7wpvs")
+
+[node name="TownStart" type="Marker2D" parent="."]
+position = Vector2(288, 352)
+
+[node name="Ledge" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(152, 232)
+
+[node name="Ledge2" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(168, 232)
+
+[node name="Ledge3" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(184, 232)
+
+[node name="Ledge4" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(200, 232)
+
+[node name="Ledge5" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(312, 232)
+
+[node name="Ledge6" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(328, 232)
+
+[node name="Ledge7" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(344, 232)
+
+[node name="Ledge8" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(360, 232)
+
+[node name="Ledge9" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(376, 232)
+
+[node name="Ledge10" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(392, 232)
+
+[node name="Ledge11" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(264, 232)
+
+[node name="Ledge12" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(280, 232)
+
+[node name="Ledge13" parent="." instance=ExtResource("3_vokxd")]
+position = Vector2(296, 232)
diff --git a/map/tile_set.tres b/map/tile_set.tres
new file mode 100644
index 0000000..be9e10e
--- /dev/null
+++ b/map/tile_set.tres
@@ -0,0 +1,67 @@
+[gd_resource type="TileSet" load_steps=3 format=3 uid="uid://bpu5rwxh7vin8"]
+
+[ext_resource type="Texture2D" uid="uid://dv8lud5b0tu3h" path="res://map/assets/tileset.png" id="1_n48g1"]
+
+[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_fxxus"]
+texture = ExtResource("1_n48g1")
+0:0/0 = 0
+0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
+1:0/0 = 0
+2:0/0 = 0
+3:0/0 = 0
+0:2/0 = 0
+0:2/0/y_sort_origin = 1
+0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, -8, 8, 8, 8)
+1:2/0 = 0
+1:2/0/y_sort_origin = 1
+1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+0:4/0 = 0
+0:4/0/y_sort_origin = -1
+0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
+1:4/0 = 0
+1:4/0/y_sort_origin = -1
+2:4/0 = 0
+2:4/0/y_sort_origin = -1
+2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
+1:3/0 = 0
+1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
+0:3/0 = 0
+0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
+0:5/0 = 0
+0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, 0, -5, 8, 8, 8, 8, 0)
+1:5/0 = 0
+1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 0, 8, 0, 8, 8, -8, 8)
+0:6/animation_mode = 1
+0:6/animation_frame_0/duration = 2.0
+0:6/animation_frame_1/duration = 2.0
+0:6/animation_frame_2/duration = 2.0
+0:6/animation_frame_3/duration = 2.0
+0:6/0 = 0
+7:2/0 = 0
+7:3/0 = 0
+7:4/0 = 0
+8:4/0 = 0
+6:2/0 = 0
+6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
+6:3/0 = 0
+6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
+8:2/0 = 0
+9:2/0 = 0
+9:3/0 = 0
+10:3/0 = 0
+10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
+10:4/0 = 0
+10:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
+11:4/0 = 0
+11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
+11:3/0 = 0
+4:0/0 = 0
+5:0/0 = 0
+6:0/0 = 0
+6:1/0 = 0
+5:1/0 = 0
+
+[resource]
+physics_layer_0/collision_layer = 2
+physics_layer_0/collision_mask = 0
+sources/0 = SubResource("TileSetAtlasSource_fxxus")
diff --git a/map/town_01/indoor_01.gd b/map/town_01/indoor_01.gd
new file mode 100644
index 0000000..07f1a7b
--- /dev/null
+++ b/map/town_01/indoor_01.gd
@@ -0,0 +1,5 @@
+extends Map
+
+
+func _ready() -> void:
+ super._ready()
diff --git a/map/town_01/indoor_01.gd.uid b/map/town_01/indoor_01.gd.uid
new file mode 100644
index 0000000..e8450b7
--- /dev/null
+++ b/map/town_01/indoor_01.gd.uid
@@ -0,0 +1 @@
+uid://cla5rhxptj661
diff --git a/map/town_01/indoor_01.tscn b/map/town_01/indoor_01.tscn
new file mode 100644
index 0000000..a108305
--- /dev/null
+++ b/map/town_01/indoor_01.tscn
@@ -0,0 +1,46 @@
+[gd_scene load_steps=6 format=4 uid="uid://swr031bixsgd"]
+
+[ext_resource type="Script" uid="uid://cla5rhxptj661" path="res://map/town_01/indoor_01.gd" id="1_itrbu"]
+[ext_resource type="TileSet" uid="uid://bpu5rwxh7vin8" path="res://map/tile_set.tres" id="1_xferb"]
+[ext_resource type="PackedScene" uid="uid://11jdoqtp78ly" path="res://map/camera.tscn" id="3_itrbu"]
+[ext_resource type="PackedScene" uid="uid://c3cuwuulkgpld" path="res://map/objects/stairs.tscn" id="4_ydfc8"]
+[ext_resource type="PackedScene" uid="uid://dw86phlo8int2" path="res://map/objects/out_door.tscn" id="5_ujw44"]
+
+[node name="Indoor01" type="Node2D"]
+script = ExtResource("1_itrbu")
+is_indoor = true
+
+[node name="TileMapLayer" type="TileMapLayer" parent="."]
+tile_map_data = PackedByteArray("AAAAAAAAAAAIAAIAAAAAAAEAAAAIAAIAAAAAAAIAAAAIAAIAAAAAAAMAAAAIAAIAAAAAAAQAAAAIAAIAAAAAAAUAAAAIAAIAAAAAAAYAAAAIAAIAAAAAAAcAAAAIAAIAAAAAAAgAAAAIAAIAAAAAAAkAAAAIAAIAAAABAAAAAAAIAAIAAAABAAEAAAAIAAIAAAABAAIAAAAIAAIAAAABAAMAAAAIAAIAAAABAAQAAAAIAAIAAAABAAUAAAAIAAIAAAABAAYAAAAIAAIAAAABAAcAAAAIAAIAAAABAAgAAAAIAAIAAAABAAkAAAAIAAIAAAACAAAAAAAIAAIAAAACAAEAAAAIAAIAAAACAAIAAAAIAAIAAAACAAMAAAAIAAIAAAACAAQAAAAIAAIAAAACAAUAAAAIAAIAAAACAAYAAAAIAAIAAAACAAcAAAAIAAIAAAACAAgAAAAIAAIAAAACAAkAAAAIAAIAAAADAAAAAAAIAAIAAAADAAEAAAAIAAIAAAADAAIAAAAIAAIAAAADAAMAAAAIAAIAAAADAAQAAAAIAAIAAAADAAUAAAAIAAIAAAADAAYAAAAIAAIAAAADAAcAAAAIAAIAAAADAAgAAAAIAAIAAAADAAkAAAAIAAIAAAAEAAAAAAAIAAIAAAAEAAEAAAAIAAIAAAAEAAIAAAAIAAIAAAAEAAMAAAAIAAIAAAAEAAQAAAAIAAIAAAAEAAUAAAAIAAIAAAAEAAYAAAAIAAIAAAAEAAcAAAAIAAIAAAAEAAgAAAAIAAIAAAAEAAkAAAAIAAIAAAAFAAAAAAAIAAIAAAAFAAEAAAAIAAIAAAAFAAIAAAAIAAIAAAAFAAMAAAAIAAIAAAAFAAQAAAAIAAIAAAAFAAUAAAAIAAIAAAAFAAYAAAAIAAIAAAAFAAcAAAAIAAIAAAAFAAgAAAAIAAIAAAAFAAkAAAAIAAIAAAAGAAAAAAAIAAIAAAAGAAEAAAAIAAIAAAAGAAIAAAAIAAIAAAAGAAMAAAAIAAIAAAAGAAQAAAAIAAIAAAAGAAUAAAAIAAIAAAAGAAYAAAAIAAIAAAAGAAcAAAAIAAIAAAAGAAgAAAAIAAIAAAAGAAkAAAAIAAIAAAAHAAAAAAAIAAIAAAAHAAEAAAAIAAIAAAAHAAIAAAAIAAIAAAAHAAMAAAAIAAIAAAAHAAQAAAAIAAIAAAAHAAUAAAAIAAIAAAAHAAYAAAAIAAIAAAAHAAcAAAAIAAIAAAAHAAgAAAAIAAIAAAAHAAkAAAAIAAIAAAAIAAAAAAAIAAIAAAAIAAEAAAAIAAIAAAAIAAIAAAAIAAIAAAAIAAMAAAAIAAIAAAAIAAQAAAAIAAIAAAAIAAUAAAAIAAIAAAAIAAYAAAAIAAIAAAAIAAcAAAAIAAIAAAAIAAgAAAAIAAIAAAAIAAkAAAAIAAIAAAAJAAAAAAAIAAIAAAAJAAEAAAAIAAIAAAAJAAIAAAAIAAIAAAAJAAMAAAAIAAIAAAAJAAQAAAAIAAIAAAAJAAUAAAAIAAIAAAAJAAYAAAAIAAIAAAAJAAcAAAAIAAIAAAAJAAgAAAAIAAIAAAAJAAkAAAAIAAIAAAAKAAAAAAAIAAIAAAAKAAEAAAAIAAIAAAAKAAIAAAAIAAIAAAAKAAMAAAAIAAIAAAAKAAQAAAAIAAIAAAAKAAUAAAAIAAIAAAAKAAYAAAAIAAIAAAAKAAcAAAAIAAIAAAAKAAgAAAAIAAIAAAAKAAkAAAAIAAIAAAALAAAAAAAIAAIAAAALAAEAAAAIAAIAAAALAAIAAAAIAAIAAAALAAMAAAAIAAIAAAALAAQAAAAIAAIAAAALAAUAAAAIAAIAAAALAAYAAAAIAAIAAAALAAcAAAAIAAIAAAALAAgAAAAIAAIAAAALAAkAAAAIAAIAAAAMAAAAAAAIAAIAAAAMAAEAAAAIAAIAAAAMAAIAAAAIAAIAAAAMAAMAAAAIAAIAAAAMAAQAAAAIAAIAAAAMAAUAAAAIAAIAAAAMAAYAAAAIAAIAAAAMAAcAAAAIAAIAAAAMAAgAAAAIAAIAAAAMAAkAAAAIAAIAAAANAAAAAAAIAAIAAAANAAEAAAAIAAIAAAANAAIAAAAIAAIAAAANAAMAAAAIAAIAAAANAAQAAAAIAAIAAAANAAUAAAAIAAIAAAANAAYAAAAIAAIAAAANAAcAAAAIAAIAAAANAAgAAAAIAAIAAAANAAkAAAAIAAIAAAAOAAkAAAAIAAIAAAAOAAgAAAAIAAIAAAAOAAcAAAAIAAIAAAAOAAYAAAAIAAIAAAAOAAUAAAAIAAIAAAAOAAQAAAAIAAIAAAAOAAMAAAAIAAIAAAAOAAIAAAAIAAIAAAAOAAEAAAAIAAIAAAAOAAAAAAAIAAIAAAAHAAoAAAAIAAIAAAAIAAoAAAAGAAIAAAAGAAoAAAAGAAIAAFAFAAoAAAAGAAMAAFAEAAoAAAAGAAMAAFADAAoAAAAGAAMAAFACAAoAAAAGAAMAAFABAAoAAAAGAAMAAFAAAAoAAAAGAAMAAFAJAAoAAAAGAAMAAFAKAAoAAAAGAAMAAFALAAoAAAAGAAMAAFAMAAoAAAAGAAMAAFANAAoAAAAGAAMAAFAOAAoAAAAGAAMAAFAPAAkAAAAGAAMAAAAPAAgAAAAGAAMAAAAPAAcAAAAGAAMAAAAPAAYAAAAGAAMAAAAPAAUAAAAGAAMAAAAPAAQAAAAGAAMAAAAPAAMAAAAGAAMAAAAPAAIAAAAGAAMAAAAPAAEAAAAGAAMAAAAPAAAAAAAGAAMAAAAOAP//AAAGAAMAAGANAP//AAAGAAMAAGAMAP//AAAGAAMAAGALAP//AAAGAAMAAGAKAP//AAAGAAMAAGAJAP//AAAGAAMAAGAIAP//AAAGAAMAAGAHAP//AAAGAAMAAGAGAP//AAAGAAMAAGAFAP//AAAGAAMAAGAEAP//AAAGAAMAAGADAP//AAAGAAMAAGACAP//AAAGAAMAAGABAP//AAAGAAMAAGAAAP//AAAGAAMAAGD//wAAAAAGAAMAADD//wEAAAAGAAMAADD//wIAAAAGAAMAADD//wMAAAAGAAMAADD//wQAAAAGAAMAADD//wUAAAAGAAMAADD//wYAAAAGAAMAADD//wcAAAAGAAMAADD//wgAAAAGAAMAADD//wkAAAAGAAMAADAHAAsAAAAGAAMAAFA=")
+tile_set = ExtResource("1_xferb")
+
+[node name="TileMapLayer2" type="TileMapLayer" parent="."]
+tile_map_data = PackedByteArray("AAAFAAMAAAAHAAMAAAAFAAQAAAAHAAQAAAAFAAUAAAAHAAQAAAAFAAYAAAAHAAMAAGAGAAMAAAAHAAQAAEAGAAQAAAAIAAQAAAAGAAUAAAAIAAQAAAAGAAYAAAAHAAQAAHAIAAMAAAAHAAQAAEAIAAQAAAAIAAQAAAAIAAUAAAAIAAQAAAAIAAYAAAAHAAQAAHAJAAMAAAAHAAMAABAJAAQAAAAHAAQAABAJAAUAAAAHAAQAADAJAAYAAAAHAAMAADAHAAMAAAAHAAQAAFAHAAYAAAAHAAQAAGAHAAQAAAAIAAQAAAAHAAUAAAAIAAQAAAA=")
+tile_set = ExtResource("1_xferb")
+
+[node name="TileMapLayer3" type="TileMapLayer" parent="."]
+tile_map_data = PackedByteArray("AAAFAAUAAAAJAAMAAAAFAAQAAAAJAAMAAAAJAAQAAAAJAAMAABAJAAUAAAAJAAMAABAGAAQAAAAKAAMAAAAHAAQAAAAKAAQAAFAIAAQAAAAKAAMAAFAIAAUAAAAKAAMAADAGAAUAAAAKAAMAAGAHAAUAAAAKAAQAAGA=")
+tile_set = ExtResource("1_xferb")
+
+[node name="TileMapLayer4" type="TileMapLayer" parent="."]
+tile_map_data = PackedByteArray("AAAGAAUAAAALAAMAADAIAAUAAAALAAMAADA=")
+tile_set = ExtResource("1_xferb")
+
+[node name="Camera" parent="." node_paths=PackedStringArray("limit_tile_map") instance=ExtResource("3_itrbu")]
+limit_tile_map = NodePath("../TileMapLayer")
+
+[node name="Stairs" parent="." instance=ExtResource("4_ydfc8")]
+position = Vector2(232, 8)
+scene = "uid://dvskm1rs5y0cj"
+map_entry = "Indoor01"
+
+[node name="DoorOut" parent="." instance=ExtResource("5_ujw44")]
+position = Vector2(120, 168)
+scene = "uid://dajqeggsfk6eh"
+map_entry = "Indoor1"
+
+[node name="Town1" type="Marker2D" parent="."]
+position = Vector2(120, 152)
+
+[node name="Indoor0101" type="Marker2D" parent="."]
+position = Vector2(216, 8)
diff --git a/map/town_01/indoor_01_01.gd b/map/town_01/indoor_01_01.gd
new file mode 100644
index 0000000..69a05b9
--- /dev/null
+++ b/map/town_01/indoor_01_01.gd
@@ -0,0 +1 @@
+extends Map
diff --git a/map/town_01/indoor_01_01.gd.uid b/map/town_01/indoor_01_01.gd.uid
new file mode 100644
index 0000000..f5c14ed
--- /dev/null
+++ b/map/town_01/indoor_01_01.gd.uid
@@ -0,0 +1 @@
+uid://b44wjp6os711m
diff --git a/map/town_01/indoor_01_01.tscn b/map/town_01/indoor_01_01.tscn
new file mode 100644
index 0000000..6a3b20a
--- /dev/null
+++ b/map/town_01/indoor_01_01.tscn
@@ -0,0 +1,29 @@
+[gd_scene load_steps=5 format=4 uid="uid://dvskm1rs5y0cj"]
+
+[ext_resource type="PackedScene" uid="uid://11jdoqtp78ly" path="res://map/camera.tscn" id="1_3yfhc"]
+[ext_resource type="Script" uid="uid://b44wjp6os711m" path="res://map/town_01/indoor_01_01.gd" id="1_53c0k"]
+[ext_resource type="TileSet" uid="uid://bpu5rwxh7vin8" path="res://map/tile_set.tres" id="2_fbl7a"]
+[ext_resource type="PackedScene" uid="uid://c3cuwuulkgpld" path="res://map/objects/stairs.tscn" id="3_fbl7a"]
+
+[node name="Indoor_01_01" type="Node2D"]
+script = ExtResource("1_53c0k")
+is_indoor = true
+
+[node name="TileMapLayer" type="TileMapLayer" parent="."]
+tile_map_data = PackedByteArray("AAAAAAAAAAAIAAIAAAAAAAEAAAAIAAIAAAAAAAIAAAAIAAIAAAAAAAMAAAAIAAIAAAAAAAQAAAAIAAIAAAAAAAUAAAAIAAIAAAAAAAYAAAAIAAIAAAAAAAcAAAAIAAIAAAAAAAgAAAAIAAIAAAABAAAAAAAIAAIAAAABAAEAAAAIAAIAAAABAAIAAAAIAAIAAAABAAMAAAAIAAIAAAABAAQAAAAIAAIAAAABAAUAAAAIAAIAAAABAAYAAAAIAAIAAAABAAcAAAAIAAIAAAABAAgAAAAIAAIAAAACAAAAAAAIAAIAAAACAAEAAAAIAAIAAAACAAIAAAAIAAIAAAACAAMAAAAIAAIAAAACAAQAAAAIAAIAAAACAAUAAAAIAAIAAAACAAYAAAAIAAIAAAACAAcAAAAIAAIAAAACAAgAAAAIAAIAAAADAAAAAAAIAAIAAAADAAEAAAAIAAIAAAADAAIAAAAIAAIAAAADAAMAAAAIAAIAAAADAAQAAAAIAAIAAAADAAUAAAAIAAIAAAADAAYAAAAIAAIAAAADAAcAAAAIAAIAAAADAAgAAAAIAAIAAAAEAAAAAAAIAAIAAAAEAAEAAAAIAAIAAAAEAAIAAAAIAAIAAAAEAAMAAAAIAAIAAAAEAAQAAAAIAAIAAAAEAAUAAAAIAAIAAAAEAAYAAAAIAAIAAAAEAAcAAAAIAAIAAAAEAAgAAAAIAAIAAAAFAAAAAAAIAAIAAAAFAAEAAAAIAAIAAAAFAAIAAAAIAAIAAAAFAAMAAAAIAAIAAAAFAAQAAAAIAAIAAAAFAAUAAAAIAAIAAAAFAAYAAAAIAAIAAAAFAAcAAAAIAAIAAAAFAAgAAAAIAAIAAAAGAAAAAAAIAAIAAAAGAAEAAAAIAAIAAAAGAAIAAAAIAAIAAAAGAAMAAAAIAAIAAAAGAAQAAAAIAAIAAAAGAAUAAAAIAAIAAAAGAAYAAAAIAAIAAAAGAAcAAAAIAAIAAAAGAAgAAAAIAAIAAAAHAAAAAAAIAAIAAAAHAAEAAAAIAAIAAAAHAAIAAAAIAAIAAAAHAAMAAAAIAAIAAAAHAAQAAAAIAAIAAAAHAAUAAAAIAAIAAAAHAAYAAAAIAAIAAAAHAAcAAAAIAAIAAAAHAAgAAAAIAAIAAAAIAAAAAAAIAAIAAAAIAAEAAAAIAAIAAAAIAAIAAAAIAAIAAAAIAAMAAAAIAAIAAAAIAAQAAAAIAAIAAAAIAAUAAAAIAAIAAAAIAAYAAAAIAAIAAAAIAAcAAAAIAAIAAAAIAAgAAAAIAAIAAAAJAAAAAAAIAAIAAAAJAAEAAAAIAAIAAAAJAAIAAAAIAAIAAAAJAAMAAAAIAAIAAAAJAAQAAAAIAAIAAAAJAAUAAAAIAAIAAAAJAAYAAAAIAAIAAAAJAAcAAAAIAAIAAAAJAAgAAAAIAAIAAAAKAAAAAAAIAAIAAAAKAAEAAAAIAAIAAAAKAAIAAAAIAAIAAAAKAAMAAAAIAAIAAAAKAAQAAAAIAAIAAAAKAAUAAAAIAAIAAAAKAAYAAAAIAAIAAAAKAAcAAAAIAAIAAAAKAAgAAAAIAAIAAAALAAAAAAAGAAMAAAALAAEAAAAGAAMAAAALAAIAAAAGAAMAAAALAAMAAAAGAAMAAAALAAQAAAAGAAMAAAALAAUAAAAGAAMAAAALAAYAAAAGAAMAAAALAAcAAAAGAAMAAAALAAgAAAAGAAMAAAAKAAkAAAAGAAMAAFAJAAkAAAAGAAMAAFAIAAkAAAAGAAMAAFAHAAkAAAAGAAMAAFAGAAkAAAAGAAMAAFAFAAkAAAAGAAMAAFAEAAkAAAAGAAMAAFADAAkAAAAGAAMAAFACAAkAAAAGAAMAAFABAAkAAAAGAAMAAFAAAAkAAAAGAAMAAFD//wgAAAAGAAMAADD//wcAAAAGAAMAADD//wYAAAAGAAMAADD//wUAAAAGAAMAADD//wQAAAAGAAMAADD//wMAAAAGAAMAADD//wIAAAAGAAMAADD//wEAAAAGAAMAADD//wAAAAAGAAMAADAAAP//AAAGAAMAAGABAP//AAAGAAMAAGACAP//AAAGAAMAAGADAP//AAAGAAMAAGAEAP//AAAGAAMAAGAFAP//AAAGAAMAAGAGAP//AAAGAAMAAGAHAP//AAAGAAMAAGAIAP//AAAGAAMAAGAJAP//AAAGAAMAAGAKAP//AAAGAAMAAGA=")
+tile_set = ExtResource("2_fbl7a")
+
+[node name="Camera" parent="." node_paths=PackedStringArray("limit_tile_map") instance=ExtResource("1_3yfhc")]
+limit_tile_map = NodePath("../TileMapLayer")
+
+[node name="Stairs" parent="." instance=ExtResource("3_fbl7a")]
+position = Vector2(168, 8)
+rotation = 3.14159
+scene = "uid://swr031bixsgd"
+map_entry = "Indoor0101"
+
+[node name="Indoor01" type="Marker2D" parent="."]
+position = Vector2(152, 8)
+
+[node name="InitialPlayerPosition" type="Marker2D" parent="."]
+position = Vector2(88, 88)
diff --git a/map/town_01/town_01.gd b/map/town_01/town_01.gd
new file mode 100644
index 0000000..54b0911
--- /dev/null
+++ b/map/town_01/town_01.gd
@@ -0,0 +1,9 @@
+extends Map
+
+
+func _ready() -> void:
+ super._ready()
+
+
+func _on_visible_on_screen_notifier_2d_screen_entered() -> void:
+ Game.world.add_map("res://map/route_01/route_01.tscn")
diff --git a/map/town_01/town_01.gd.uid b/map/town_01/town_01.gd.uid
new file mode 100644
index 0000000..d1275fe
--- /dev/null
+++ b/map/town_01/town_01.gd.uid
@@ -0,0 +1 @@
+uid://da7fl55vrian4
diff --git a/map/town_01/town_01.tscn b/map/town_01/town_01.tscn
new file mode 100644
index 0000000..67df855
--- /dev/null
+++ b/map/town_01/town_01.tscn
@@ -0,0 +1,45 @@
+[gd_scene load_steps=4 format=4 uid="uid://dajqeggsfk6eh"]
+
+[ext_resource type="TileSet" uid="uid://bpu5rwxh7vin8" path="res://map/tile_set.tres" id="1_1ujm0"]
+[ext_resource type="Script" uid="uid://da7fl55vrian4" path="res://map/town_01/town_01.gd" id="1_qa7jm"]
+[ext_resource type="PackedScene" uid="uid://bw2qihhy14bxr" path="res://map/objects/door.tscn" id="4_tcysf"]
+
+[node name="TownStart" type="Node2D"]
+script = ExtResource("1_qa7jm")
+
+[node name="TileMapLayer" type="TileMapLayer" parent="."]
+tile_map_data = PackedByteArray("AAAAAAAAAAABAAAAAAAAAAEAAAABAAAAAAAAAAIAAAABAAAAAAAAAAMAAAABAAAAAAAAAAQAAAABAAAAAAAAAAUAAAABAAAAAAAAAAYAAAABAAAAAAAAAAcAAAABAAAAAAAAAAgAAAABAAAAAAAAAAkAAAABAAAAAAAAAAoAAAABAAAAAAAAAAsAAAABAAAAAAAAAAwAAAABAAAAAAAAAA0AAAABAAAAAAAAAA4AAAABAAAAAAAAAA8AAAABAAAAAAABAAAAAAABAAAAAAABAAEAAAABAAAAAAABAAIAAAABAAAAAAABAAMAAAABAAAAAAABAAQAAAABAAAAAAABAAUAAAABAAAAAAABAAYAAAABAAAAAAABAAcAAAABAAAAAAABAAgAAAABAAAAAAABAAkAAAABAAAAAAABAAoAAAABAAAAAAABAAsAAAABAAAAAAABAAwAAAABAAAAAAABAA0AAAABAAAAAAABAA4AAAABAAAAAAABAA8AAAABAAAAAAACAAAAAAABAAAAAAACAAEAAAABAAAAAAACAAIAAAABAAAAAAACAAMAAAABAAAAAAACAAQAAAABAAAAAAACAAUAAAABAAAAAAACAAYAAAABAAAAAAACAAcAAAABAAAAAAACAAgAAAABAAAAAAACAAkAAAABAAAAAAACAAoAAAABAAAAAAACAAsAAAABAAAAAAACAAwAAAABAAAAAAACAA0AAAABAAAAAAACAA4AAAABAAAAAAACAA8AAAABAAAAAAADAAAAAAABAAAAAAADAAEAAAABAAAAAAADAAIAAAABAAAAAAADAAMAAAABAAAAAAADAAQAAAABAAAAAAADAAUAAAABAAAAAAADAAYAAAABAAAAAAADAAcAAAABAAAAAAADAAgAAAABAAAAAAADAAkAAAABAAAAAAADAAoAAAABAAAAAAADAAsAAAABAAAAAAADAAwAAAABAAAAAAADAA0AAAABAAAAAAADAA4AAAABAAAAAAADAA8AAAABAAAAAAAEAAAAAAABAAAAAAAEAAEAAAABAAAAAAAEAAIAAAABAAAAAAAEAAMAAAABAAAAAAAEAAQAAAABAAAAAAAEAAUAAAABAAAAAAAEAAYAAAABAAAAAAAEAAcAAAABAAAAAAAEAAgAAAABAAAAAAAEAAkAAAABAAAAAAAEAAoAAAABAAAAAAAEAAsAAAABAAAAAAAEAAwAAAABAAAAAAAEAA0AAAABAAAAAAAEAA4AAAABAAAAAAAEAA8AAAABAAAAAAAFAAAAAAABAAAAAAAFAAEAAAABAAAAAAAFAAIAAAABAAAAAAAFAAMAAAABAAAAAAAFAAQAAAABAAAAAAAFAAUAAAABAAAAAAAFAAYAAAABAAAAAAAFAAcAAAABAAAAAAAFAAgAAAABAAAAAAAFAAkAAAABAAAAAAAFAAoAAAABAAAAAAAFAAsAAAABAAAAAAAFAAwAAAABAAAAAAAFAA0AAAABAAAAAAAFAA4AAAABAAAAAAAFAA8AAAABAAAAAAAGAAAAAAABAAAAAAAGAAEAAAABAAAAAAAGAAIAAAABAAAAAAAGAAMAAAABAAAAAAAGAAQAAAABAAAAAAAGAAUAAAABAAAAAAAGAAYAAAABAAAAAAAGAAcAAAABAAAAAAAGAAgAAAABAAAAAAAGAAkAAAABAAAAAAAGAAoAAAABAAAAAAAGAAsAAAABAAAAAAAGAAwAAAABAAAAAAAGAA0AAAABAAAAAAAGAA4AAAABAAAAAAAGAA8AAAABAAAAAAAHAAAAAAABAAAAAAAHAAEAAAABAAAAAAAHAAIAAAABAAAAAAAHAAMAAAABAAAAAAAHAAQAAAABAAAAAAAHAAUAAAABAAAAAAAHAAYAAAABAAAAAAAHAAcAAAABAAAAAAAHAAgAAAABAAAAAAAHAAkAAAABAAAAAAAHAAoAAAABAAAAAAAHAAsAAAABAAAAAAAHAAwAAAABAAAAAAAHAA0AAAABAAAAAAAHAA4AAAABAAAAAAAHAA8AAAABAAAAAAAIAAAAAAABAAAAAAAIAAEAAAABAAAAAAAIAAIAAAABAAAAAAAIAAMAAAABAAAAAAAIAAQAAAABAAAAAAAIAAUAAAABAAAAAAAIAAYAAAABAAAAAAAIAAcAAAABAAAAAAAIAAgAAAABAAAAAAAIAAkAAAABAAAAAAAIAAoAAAABAAAAAAAIAAsAAAABAAAAAAAIAAwAAAABAAAAAAAIAA0AAAABAAAAAAAIAA4AAAABAAAAAAAIAA8AAAABAAAAAAAJAAAAAAABAAAAAAAJAAEAAAABAAAAAAAJAAIAAAABAAAAAAAJAAMAAAABAAAAAAAJAAQAAAABAAAAAAAJAAUAAAABAAAAAAAJAAYAAAABAAAAAAAJAAcAAAABAAAAAAAJAAgAAAABAAAAAAAJAAkAAAABAAAAAAAJAAoAAAABAAAAAAAJAAsAAAABAAAAAAAJAAwAAAABAAAAAAAJAA0AAAABAAAAAAAJAA4AAAABAAAAAAAJAA8AAAABAAAAAAAKAAAAAAABAAAAAAAKAAEAAAABAAAAAAAKAAIAAAABAAAAAAAKAAMAAAABAAAAAAAKAAQAAAABAAAAAAAKAAUAAAABAAAAAAAKAAYAAAABAAAAAAAKAAcAAAABAAAAAAAKAAgAAAABAAAAAAAKAAkAAAABAAAAAAAKAAoAAAABAAAAAAAKAAsAAAABAAAAAAAKAAwAAAABAAAAAAAKAA0AAAABAAAAAAAKAA4AAAABAAAAAAAKAA8AAAABAAAAAAALAAAAAAABAAAAAAALAAEAAAABAAAAAAALAAIAAAABAAAAAAALAAMAAAABAAAAAAALAAQAAAABAAAAAAALAAUAAAABAAAAAAALAAYAAAABAAAAAAALAAcAAAABAAAAAAALAAgAAAABAAAAAAALAAkAAAABAAAAAAALAAoAAAABAAAAAAALAAsAAAABAAAAAAALAAwAAAABAAAAAAALAA0AAAABAAAAAAALAA4AAAABAAAAAAALAA8AAAABAAAAAAAMAAAAAAABAAAAAAAMAAEAAAABAAAAAAAMAAIAAAABAAAAAAAMAAMAAAABAAAAAAAMAAQAAAABAAAAAAAMAAUAAAABAAAAAAAMAAYAAAABAAAAAAAMAAcAAAABAAAAAAAMAAgAAAABAAAAAAAMAAkAAAABAAAAAAAMAAoAAAABAAAAAAAMAAsAAAABAAAAAAAMAAwAAAABAAAAAAAMAA0AAAABAAAAAAAMAA4AAAABAAAAAAAMAA8AAAABAAAAAAANAAAAAAABAAAAAAANAAEAAAABAAAAAAANAAIAAAABAAAAAAANAAMAAAABAAAAAAANAAQAAAABAAAAAAANAAUAAAABAAAAAAANAAYAAAABAAAAAAANAAcAAAABAAAAAAANAAgAAAABAAAAAAANAAkAAAABAAAAAAANAAoAAAABAAAAAAANAAsAAAABAAAAAAANAAwAAAABAAAAAAANAA0AAAABAAAAAAANAA4AAAABAAAAAAANAA8AAAABAAAAAAAOAAAAAAABAAAAAAAOAAEAAAABAAAAAAAOAAIAAAABAAAAAAAOAAMAAAABAAAAAAAOAAQAAAABAAAAAAAOAAUAAAABAAAAAAAOAAYAAAABAAAAAAAOAAcAAAABAAAAAAAOAAgAAAABAAAAAAAOAAkAAAABAAAAAAAOAAoAAAABAAAAAAAOAAsAAAABAAAAAAAOAAwAAAABAAAAAAAOAA0AAAABAAAAAAAOAA4AAAABAAAAAAAOAA8AAAABAAAAAAAPAAAAAAABAAAAAAAPAAEAAAABAAAAAAAPAAIAAAABAAAAAAAPAAMAAAABAAAAAAAPAAQAAAABAAAAAAAPAAUAAAABAAAAAAAPAAYAAAABAAAAAAAPAAcAAAABAAAAAAAPAAgAAAABAAAAAAAPAAkAAAABAAAAAAAPAAoAAAABAAAAAAAPAAsAAAABAAAAAAAPAAwAAAABAAAAAAAPAA0AAAABAAAAAAAPAA4AAAABAAAAAAAPAA8AAAABAAAAAAAQAAAAAAABAAAAAAAQAAEAAAABAAAAAAAQAAIAAAABAAAAAAAQAAMAAAABAAAAAAAQAAQAAAABAAAAAAAQAAUAAAABAAAAAAAQAAYAAAABAAAAAAAQAAcAAAABAAAAAAAQAAgAAAABAAAAAAAQAAkAAAABAAAAAAAQAAoAAAABAAAAAAAQAAsAAAABAAAAAAAQAAwAAAABAAAAAAAQAA0AAAABAAAAAAAQAA4AAAABAAAAAAAQAA8AAAABAAAAAAARAAAAAAABAAAAAAARAAEAAAABAAAAAAARAAIAAAABAAAAAAARAAMAAAABAAAAAAARAAQAAAABAAAAAAARAAUAAAABAAAAAAARAAYAAAABAAAAAAARAAcAAAABAAAAAAARAAgAAAABAAAAAAARAAkAAAABAAAAAAARAAoAAAABAAAAAAARAAsAAAABAAAAAAARAAwAAAABAAAAAAARAA0AAAABAAAAAAARAA4AAAABAAAAAAARAA8AAAABAAAAAAASAAAAAAABAAAAAAASAAEAAAABAAAAAAASAAIAAAABAAAAAAASAAMAAAABAAAAAAASAAQAAAABAAAAAAASAAUAAAABAAAAAAASAAYAAAABAAAAAAASAAcAAAABAAAAAAASAAgAAAABAAAAAAASAAkAAAABAAAAAAASAAoAAAABAAAAAAASAAsAAAABAAAAAAASAAwAAAABAAAAAAASAA0AAAABAAAAAAASAA4AAAABAAAAAAASAA8AAAABAAAAAAATAAAAAAABAAAAAAATAAEAAAABAAAAAAATAAIAAAABAAAAAAATAAMAAAABAAAAAAATAAQAAAABAAAAAAATAAUAAAABAAAAAAATAAYAAAABAAAAAAATAAcAAAABAAAAAAATAAgAAAABAAAAAAATAAkAAAABAAAAAAATAAoAAAABAAAAAAATAAsAAAABAAAAAAATAAwAAAABAAAAAAATAA0AAAABAAAAAAATAA4AAAABAAAAAAATAA8AAAABAAAAAAAAAP//AAAAAAAAAAD/////AAAAAAAAAAD//wAAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAAD//wUAAAAAAAAAAAD//wYAAAAAAAAAAAD//wcAAAAAAAAAAAD//wgAAAAAAAAAAAD//wkAAAAAAAAAAAD//woAAAAAAAAAAAD//wsAAAAAAAAAAAD//wwAAAAAAAAAAAD//w0AAAAAAAAAAAD//w4AAAAAAAAAAAD//w8AAAAAAAAAAAD//xAAAAAAAAAAAAAAABAAAAAAAAAAAAABABAAAAAAAAAAAAAGABAAAAAAAAAAAAAHABAAAAAAAAAAAAAIABAAAAAAAAAAAAAJABAAAAAAAAAAAAAKABAAAAAAAAAAAAALABAAAAAAAAAAAAAMABAAAAAAAAAAAAANABAAAAAAAAAAAAAOABAAAAAAAAAAAAAPABAAAAAAAAAAAAAQABAAAAAAAAAAAAARABAAAAAAAAAAAAASABAAAAAAAAAAAAATABAAAAAAAAAAAAAUABAAAAAAAAAAAAAUAA8AAAAAAAAAAAAUAA4AAAAAAAAAAAAUAA0AAAAAAAAAAAAUAAwAAAAAAAAAAAAUAAsAAAAAAAAAAAAUAAoAAAAAAAAAAAAUAAkAAAAAAAAAAAAUAAgAAAAAAAAAAAAUAAcAAAAAAAAAAAAUAAYAAAAAAAAAAAAUAAUAAAAAAAAAAAAUAAQAAAAAAAAAAAAUAAMAAAAAAAAAAAAUAAIAAAAAAAAAAAAUAAEAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAP//AAAAAAAAAAATAP//AAAAAAAAAAASAP//AAAAAAAAAAARAP//AAAAAAAAAAAQAP//AAAAAAAAAAAPAP//AAAAAAAAAAAOAP//AAAAAAAAAAABAP//AAAAAAAAAAACAP//AAAAAAAAAAADAP//AAAAAAAAAAAEAP//AAAAAAAAAAAFAP//AAAAAAAAAAAGAP//AAAAAAAAAAANAP//AAAAAAAAAAAIAP//AAAAAAAAAAAHAP//AAAAAAAAAAAMAP//AAAAAAAAAAALAP//AAAAAAAAAAAIAP7/AAAAAAAAAAAIAP3/AAAAAAAAAAALAP7/AAAAAAAAAAALAP3/AAAAAAAAAAAJAP//AAABAAAAAAAJAP7/AAABAAAAAAAJAP3/AAABAAAAAAAKAP3/AAABAAAAAAAKAP7/AAABAAAAAAAKAP//AAABAAAAAAD9////AAABAAAAAAD9/wAAAAABAAAAAAD9/wEAAAABAAAAAAD9/wIAAAABAAAAAAD9/wMAAAABAAAAAAD9/wQAAAABAAAAAAD9/wUAAAABAAAAAAD9/wYAAAABAAAAAAD9/wcAAAABAAAAAAD9/wgAAAABAAAAAAD9/wkAAAABAAAAAAD9/woAAAABAAAAAAD9/wsAAAABAAAAAAD9/wwAAAABAAAAAAD9/w0AAAABAAAAAAD9/w4AAAABAAAAAAD9/w8AAAABAAAAAAD9/xAAAAABAAAAAAD+////AAABAAAAAAD+/wAAAAABAAAAAAD+/wEAAAABAAAAAAD+/wIAAAABAAAAAAD+/wMAAAABAAAAAAD+/wQAAAABAAAAAAD+/wUAAAABAAAAAAD+/wYAAAABAAAAAAD+/wcAAAABAAAAAAD+/wgAAAABAAAAAAD+/wkAAAABAAAAAAD+/woAAAABAAAAAAD+/wsAAAABAAAAAAD+/wwAAAABAAAAAAD+/w0AAAABAAAAAAD+/w4AAAABAAAAAAD+/w8AAAABAAAAAAD+/xAAAAABAAAAAAAVAP//AAABAAAAAAAVAAAAAAABAAAAAAAVAAEAAAABAAAAAAAVAAIAAAABAAAAAAAVAAMAAAABAAAAAAAVAAQAAAABAAAAAAAVAAUAAAABAAAAAAAVAAYAAAABAAAAAAAVAAcAAAABAAAAAAAVAAgAAAABAAAAAAAVAAkAAAABAAAAAAAVAAoAAAABAAAAAAAVAAsAAAABAAAAAAAVAAwAAAABAAAAAAAVAA0AAAABAAAAAAAVAA4AAAABAAAAAAAVAA8AAAABAAAAAAAVABAAAAABAAAAAAAWAP//AAABAAAAAAAWAAAAAAABAAAAAAAWAAEAAAABAAAAAAAWAAIAAAABAAAAAAAWAAMAAAABAAAAAAAWAAQAAAABAAAAAAAWAAUAAAABAAAAAAAWAAYAAAABAAAAAAAWAAcAAAABAAAAAAAWAAgAAAABAAAAAAAWAAkAAAABAAAAAAAWAAoAAAABAAAAAAAWAAsAAAABAAAAAAAWAAwAAAABAAAAAAAWAA0AAAABAAAAAAAWAA4AAAABAAAAAAAWAA8AAAABAAAAAAAWABAAAAABAAAAAAAGABEAAAABAAAAAAAGABIAAAABAAAAAAAHABEAAAABAAAAAAAHABIAAAABAAAAAAAIABEAAAABAAAAAAAIABIAAAABAAAAAAAJABEAAAABAAAAAAAJABIAAAABAAAAAAAKABEAAAABAAAAAAAKABIAAAABAAAAAAALABEAAAABAAAAAAALABIAAAABAAAAAAAMABEAAAABAAAAAAAMABIAAAABAAAAAAANABEAAAABAAAAAAANABIAAAABAAAAAAAOABEAAAABAAAAAAAOABIAAAABAAAAAAAPABEAAAABAAAAAAAPABIAAAABAAAAAAAQABEAAAABAAAAAAAQABIAAAABAAAAAAARABEAAAABAAAAAAARABIAAAABAAAAAAASABEAAAABAAAAAAASABIAAAABAAAAAAATABEAAAABAAAAAAATABIAAAABAAAAAAAUABEAAAABAAAAAAAUABIAAAABAAAAAAAVABEAAAABAAAAAAAVABIAAAABAAAAAAAWABEAAAABAAAAAAAWABIAAAABAAAAAAD9/xEAAAABAAAAAAD9/xIAAAABAAAAAAD+/xEAAAABAAAAAAD+/xIAAAABAAAAAAD//xEAAAABAAAAAAD//xIAAAABAAAAAAAAABEAAAABAAAAAAAAABIAAAABAAAAAAABABEAAAABAAAAAAABABIAAAABAAAAAAD9//3/AAABAAAAAAD9//7/AAABAAAAAAD+//3/AAABAAAAAAD+//7/AAABAAAAAAD///3/AAABAAAAAAD///7/AAABAAAAAAAAAP3/AAABAAAAAAAAAP7/AAABAAAAAAABAP3/AAABAAAAAAABAP7/AAABAAAAAAACAP3/AAABAAAAAAACAP7/AAABAAAAAAADAP3/AAABAAAAAAADAP7/AAABAAAAAAAEAP3/AAABAAAAAAAEAP7/AAABAAAAAAAFAP3/AAABAAAAAAAFAP7/AAABAAAAAAAGAP3/AAABAAAAAAAGAP7/AAABAAAAAAAHAP3/AAABAAAAAAAHAP7/AAABAAAAAAAMAP3/AAABAAAAAAAMAP7/AAABAAAAAAANAP3/AAABAAAAAAANAP7/AAABAAAAAAAOAP3/AAABAAAAAAAOAP7/AAABAAAAAAAPAP3/AAABAAAAAAAPAP7/AAABAAAAAAAQAP3/AAABAAAAAAAQAP7/AAABAAAAAAARAP3/AAABAAAAAAARAP7/AAABAAAAAAASAP3/AAABAAAAAAASAP7/AAABAAAAAAATAP3/AAABAAAAAAATAP7/AAABAAAAAAAUAP3/AAABAAAAAAAUAP7/AAABAAAAAAAVAP3/AAABAAAAAAAVAP7/AAABAAAAAAAWAP3/AAABAAAAAAAWAP7/AAABAAAAAAA=")
+tile_set = ExtResource("1_1ujm0")
+
+[node name="TileMapLayer2" type="TileMapLayer" parent="."]
+tile_map_data = PackedByteArray("AAAJAP3/AAADAAAAAAAJAP7/AAADAAAAAAAJAP//AAADAAAAAAAKAP3/AAADAAAAAAAKAP7/AAADAAAAAAAKAP//AAADAAAAAAADAAUAAAAAAAQAAAAEAAUAAAACAAQAAAAGAAUAAAACAAQAAAAHAAUAAAAAAAQAABADAAQAAAAAAAIAAAAEAAQAAAABAAIAAAAFAAQAAAABAAIAAAAGAAQAAAABAAIAAAAHAAQAAAAAAAIAABAQAAQAAAAAAAIAABAPAAQAAAABAAIAAAAOAAQAAAABAAIAAAANAAQAAAABAAIAAAAMAAQAAAAAAAIAAAANAAUAAAACAAQAAAAPAAUAAAACAAQAAAAMAAUAAAAAAAQAAAAQAAUAAAAAAAQAABACAAoAAAAAAAUAAAADAAoAAAABAAUAAAAEAAoAAAABAAUAAAAFAAoAAAABAAUAAAAGAAoAAAAAAAUAABAMAAkAAAAAAAIAAAANAAkAAAABAAIAAAAOAAkAAAABAAIAAAAPAAkAAAABAAIAAAAQAAkAAAAAAAIAABAMAAoAAAAAAAMAAAAQAAoAAAAAAAMAABAMAAsAAAAAAAQAAAAQAAsAAAAAAAQAABANAAsAAAACAAQAAAAPAAsAAAACAAQAAAANAAoAAAABAAMAAAAOAAoAAAABAAMAAAAPAAoAAAABAAMAAAAMAA0AAAABAAUAAAANAA0AAAABAAUAAAAOAA0AAAABAAUAAAAPAA0AAAABAAUAAAAQAA0AAAABAAUAAAALAA0AAAAAAAUAAAARAA0AAAAAAAUAABADAAkAAAAAAAYAAAAEAAwAAAAAAAYAADANAA4AAAAAAAYAAAAQAAwAAAAAAAYAAAAIAAcAAAAAAAYAAAAJAAIAAAAAAAYAAAARAAIAAAAAAAYAAAARAAYAAAAAAAYAAAAKAAcAAAAAAAYAACABAAMAAAAAAAYAAAABAA4AAAAAAAYAAAAIAAkAAAAAAAYAACASAA4AAAAAAAYAAAAJAAwAAAAAAAYAAAADAAsAAAAAAAYAAAAEAAsAAAAAAAYAAAAFAAsAAAAAAAYAADASAAsAAAAAAAYAACAIAA4AAAAAAAYAACABAAcAAAAAAAYAADAJAAQAAAAAAAYAABAMAAIAAAAAAAYAABADAA4AAAAAAAYAABAFAAEAAAAAAAYAABAPAAEAAAAAAAYAABD9////AAAFAAEAAAD9/wAAAAAFAAEAAAD+////AAAGAAEAAAD+/wAAAAAGAAEAAAD9/wEAAAAFAAEAAAD9/wIAAAAFAAEAAAD+/wEAAAAGAAEAAAD+/wIAAAAGAAEAAAD9/wMAAAAFAAEAAAD+/wMAAAAGAAEAAAD9/wQAAAAFAAEAAAD+/wQAAAAGAAEAAAD9/wUAAAAFAAEAAAD+/wUAAAAGAAEAAAD9/wYAAAAFAAEAAAD+/wYAAAAGAAEAAAD9/wcAAAAFAAEAAAD+/wcAAAAGAAEAAAD9/wgAAAAFAAEAAAD+/wgAAAAGAAEAAAD9/wkAAAAFAAEAAAD+/wkAAAAGAAEAAAD9/woAAAAFAAEAAAD+/woAAAAGAAEAAAD9/wsAAAAFAAEAAAD+/wsAAAAGAAEAAAD9/wwAAAAFAAEAAAD+/wwAAAAGAAEAAAD9/w0AAAAFAAEAAAD+/w0AAAAGAAEAAAD9/w4AAAAFAAEAAAD+/w4AAAAGAAEAAAD9/w8AAAAFAAEAAAD+/w8AAAAGAAEAAAD9/xAAAAAFAAEAAAD+/xAAAAAGAAEAAAAVAA8AAAAFAAEAAAAVABAAAAAFAAEAAAAWAA8AAAAGAAEAAAAWABAAAAAGAAEAAAAVAA4AAAAFAAEAAAAWAA4AAAAGAAEAAAAVAA0AAAAFAAEAAAAWAA0AAAAGAAEAAAAVAAwAAAAFAAEAAAAWAAwAAAAGAAEAAAAVAAsAAAAFAAEAAAAWAAsAAAAGAAEAAAAVAAkAAAAFAAEAAAAVAAoAAAAFAAEAAAAWAAkAAAAGAAEAAAAWAAoAAAAGAAEAAAAVAAcAAAAFAAEAAAAVAAgAAAAFAAEAAAAWAAcAAAAGAAEAAAAWAAgAAAAGAAEAAAAVAAYAAAAFAAEAAAAWAAYAAAAGAAEAAAAVAAUAAAAFAAEAAAAWAAUAAAAGAAEAAAAVAAQAAAAFAAEAAAAWAAQAAAAGAAEAAAAVAAMAAAAFAAEAAAAWAAMAAAAGAAEAAAAVAAIAAAAFAAEAAAAWAAIAAAAGAAEAAAAVAAEAAAAFAAEAAAAWAAEAAAAGAAEAAAAVAAAAAAAFAAEAAAAWAAAAAAAGAAEAAAAVAP//AAAFAAEAAAAWAP//AAAGAAEAAAAVABEAAAAFAAEAAAAWABEAAAAGAAEAAAAVABIAAAAFAAEAAAAWABIAAAAGAAEAAAD9/xEAAAAFAAEAAAD+/xEAAAAGAAEAAAD9/xIAAAAFAAEAAAD+/xIAAAAGAAEAAAD//xIAAAAFAAEAAAAAABIAAAAGAAEAAAATABIAAAAFAAEAAAAUABIAAAAGAAEAAAARABIAAAAFAAEAAAASABIAAAAGAAEAAAAPABIAAAAFAAEAAAAQABIAAAAGAAEAAAANABIAAAAFAAEAAAAOABIAAAAGAAEAAAALABIAAAAFAAEAAAAMABIAAAAGAAEAAAAJABIAAAAFAAEAAAAKABIAAAAGAAEAAAAHABIAAAAFAAEAAAAIABIAAAAGAAEAAAD9//7/AAAFAAEAAAD+//7/AAAGAAEAAAD///7/AAAFAAEAAAAAAP7/AAAGAAEAAAABAP7/AAAFAAEAAAACAP7/AAAGAAEAAAADAP7/AAAFAAEAAAAEAP7/AAAGAAEAAAAFAP7/AAAFAAEAAAAGAP7/AAAGAAEAAAAVAP7/AAAFAAEAAAAWAP7/AAAGAAEAAAATAP7/AAAFAAEAAAAUAP7/AAAGAAEAAAARAP7/AAAFAAEAAAASAP7/AAAGAAEAAAAPAP7/AAAFAAEAAAAQAP7/AAAGAAEAAAANAP7/AAAFAAEAAAAOAP7/AAAGAAEAAAA=")
+tile_set = ExtResource("1_1ujm0")
+
+[node name="TileMapLayer3" type="TileMapLayer" parent="."]
+tile_map_data = PackedByteArray("AAD9////AAAFAAAAAAD+////AAAGAAAAAAD9/wAAAAAFAAAAAAD+/wAAAAAGAAAAAAD9/wEAAAAFAAAAAAD+/wEAAAAGAAAAAAD9/wIAAAAFAAAAAAD+/wIAAAAGAAAAAAD9/wMAAAAFAAAAAAD+/wMAAAAGAAAAAAD9/wQAAAAFAAAAAAD+/wQAAAAGAAAAAAD9/wUAAAAFAAAAAAD+/wUAAAAGAAAAAAD9/wYAAAAFAAAAAAD+/wYAAAAGAAAAAAD9/wcAAAAFAAAAAAD+/wcAAAAGAAAAAAD9/wgAAAAFAAAAAAD+/wgAAAAGAAAAAAD9/wkAAAAFAAAAAAD+/wkAAAAGAAAAAAD9/woAAAAFAAAAAAD+/woAAAAGAAAAAAD9/wsAAAAFAAAAAAD+/wsAAAAGAAAAAAD9/wwAAAAFAAAAAAD+/wwAAAAGAAAAAAD9/w0AAAAFAAAAAAD+/w0AAAAGAAAAAAD9/w4AAAAFAAAAAAD+/w4AAAAGAAAAAAD9/w8AAAAFAAAAAAD+/w8AAAAGAAAAAAAVAA8AAAAFAAAAAAAWAA8AAAAGAAAAAAAVAA4AAAAFAAAAAAAWAA4AAAAGAAAAAAAVAA0AAAAFAAAAAAAWAA0AAAAGAAAAAAAVAAwAAAAFAAAAAAAWAAwAAAAGAAAAAAAVAAsAAAAFAAAAAAAWAAsAAAAGAAAAAAAVAAoAAAAFAAAAAAAWAAoAAAAGAAAAAAAVAAkAAAAFAAAAAAAWAAkAAAAGAAAAAAAVAAgAAAAFAAAAAAAWAAgAAAAGAAAAAAAVAAcAAAAFAAAAAAAWAAcAAAAGAAAAAAAVAAYAAAAFAAAAAAAWAAYAAAAGAAAAAAAVAAUAAAAFAAAAAAAWAAUAAAAGAAAAAAAVAAQAAAAFAAAAAAAWAAQAAAAGAAAAAAAVAAMAAAAFAAAAAAAWAAMAAAAGAAAAAAAVAAIAAAAFAAAAAAAWAAIAAAAGAAAAAAAVAAEAAAAFAAAAAAAWAAEAAAAGAAAAAAAVAAAAAAAFAAAAAAAWAAAAAAAGAAAAAAAVAP//AAAFAAAAAAAWAP//AAAGAAAAAAD9/xAAAAAFAAAAAAD+/xAAAAAGAAAAAAD9/xEAAAAFAAAAAAD+/xEAAAAGAAAAAAAVABAAAAAFAAAAAAAWABAAAAAGAAAAAAAVABEAAAAFAAAAAAAWABEAAAAGAAAAAAD//xEAAAAFAAAAAAAAABEAAAAGAAAAAAAHABEAAAAFAAAAAAAIABEAAAAGAAAAAAAJABEAAAAFAAAAAAAKABEAAAAGAAAAAAALABEAAAAFAAAAAAAMABEAAAAGAAAAAAANABEAAAAFAAAAAAAOABEAAAAGAAAAAAAPABEAAAAFAAAAAAAQABEAAAAGAAAAAAARABEAAAAFAAAAAAASABEAAAAGAAAAAAATABEAAAAFAAAAAAAUABEAAAAGAAAAAAAGAP3/AAAGAAAAAAAEAP3/AAAGAAAAAAAFAP3/AAAFAAAAAAACAP3/AAAGAAAAAAADAP3/AAAFAAAAAAAAAP3/AAAGAAAAAAABAP3/AAAFAAAAAAD9//3/AAAFAAAAAAD+//3/AAAGAAAAAAD///3/AAAFAAAAAAD9//7/AAAFAAAAAAD+//7/AAAGAAAAAAAVAP3/AAAFAAAAAAAWAP3/AAAGAAAAAAATAP3/AAAFAAAAAAAUAP3/AAAGAAAAAAARAP3/AAAFAAAAAAASAP3/AAAGAAAAAAAPAP3/AAAFAAAAAAAQAP3/AAAGAAAAAAANAP3/AAAFAAAAAAAOAP3/AAAGAAAAAAAVAP7/AAAFAAAAAAAWAP7/AAAGAAAAAAA=")
+tile_set = ExtResource("1_1ujm0")
+
+[node name="Door_Indoor1" parent="." instance=ExtResource("4_tcysf")]
+position = Vector2(88, 88)
+scene = "uid://swr031bixsgd"
+map_entry = "Town1"
+
+[node name="Door_Indoor2" parent="." instance=ExtResource("4_tcysf")]
+position = Vector2(232, 88)
+scene = "uid://swr031bixsgd"
+map_entry = "Town1"
+
+[node name="Door_Lab" parent="." instance=ExtResource("4_tcysf")]
+position = Vector2(232, 184)
+scene = "uid://swr031bixsgd"
+map_entry = "Town1"
+
+[node name="Indoor1" type="Marker2D" parent="."]
+position = Vector2(88, 104)
+
+[node name="Route1" type="Marker2D" parent="."]
+position = Vector2(160, -48)
+
+[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="Route1"]
+
+[connection signal="screen_entered" from="Route1/VisibleOnScreenNotifier2D" to="." method="_on_visible_on_screen_notifier_2d_screen_entered" flags=6]